SlideShare ist ein Scribd-Unternehmen logo
1 von 61
OOW 2016: CON 1283
Maarten Smeets
Oracle Application Container Cloud Service
Back-End Integration Using Node.js
Introduction
• About AMIS
– Located in the Netherlands
• About me
– Oracle Integration Consultant
– Experience with Oracle SOA Suite since 2007
– Well certified (SOA, BPM, Java, SQL,
PL/SQL among others)
– Author of a lot of blog articles
(http://javaoraclesoa.blogspot.com)
@MaartenSmeetsNL
https://nl.linkedin.com/in/smeetsm
Agenda
Node.js introduction Backend integration Application Container Cloud What to use for your
integration?
Introducing Node.js
Node.js
Using threads is hard
• Concurrency control mechanisms (e.g. locking)
• Coordination over threads (IPC)
• Memory overhead
• Synchronization
• Programming thread safe code is not easy
What is Node.js
• Node.js uses a single thread!
• Node.js has been created
To write high-performance servers fast
• Node.js is:
– a set of bindings to V8 for non-browser work: sockets, files, etc.
– only exposes non-blocking, asynchronous interfaces
– only one thread, one call stack (like a browser)
– low level features: half-closed TCP connections, TCP throttling, UDP
– has killer HTTP support
Node.js architecture
node standard library
node bindings
(socket, http, etc)
V8
thread pool
(libeio)
event loop
(libev)
C/C++JavaScript
Node.js why should you care?
Node.js
What do they use it for?
“On the server side, our entire mobile software stack is completely built in Node”
“We are moving every product & every site within PayPal to Node”
“We’ve been busy building our next-generation Netflix.com web
application using Node”
“MuleSoft's Anypoint platform services are implemented in Node”
Node.js
Integration. Overview
POST /myservice
Receive request
Service
Implementation
Processing input
Creating output
Message processing
Backend
Front-end connectivity
Routing
Back-end connectivity
Flow control
Node.js
Integration. Overview
Front-end connectivity
• URL handling
• HTTP connection handling
Back-end connectivity
• Connect to other services
• Drivers to access technology
diverse systems
• Connection pooling
Drivers / modules such as
• Oracle Database
• Oracle NoSQL Database
• Mongo Database
• SOAP and JSON services
What
Frameworks such as
• Express
• Hapi
• Koa
• Sails
• xml2js
• node-soap
Message processing
Middleware
• Routing
• Mapping
Flow control • Async
• Promises
How
Node.js
Frameworks
• Abstraction
• Generic functionality
• Facilitate development
• Drawbacks
– Performance cost
– Need framework knowledge
– Only specific functionality
https://raygun.com/blog/2016/06/node-performance/
0
2000
4000
6000
8000
10000
12000
14000
raw node koa express restify hapi
Requestspersecond
Framework
Node.js
Frameworks: Express.js
• Express is a minimal and flexible Node.js web application framework that provides a robust set of features
for web and mobile applications.
• Express.js is used in many other popular frameworks like Sails, MEAN, LoopBack
• It is maintained by StrongLoop (IBM).
Started in 2009. 191 contributers. 6,823,598 downloads last month *
* Contributers from github.com. Downloads from npmjs.com. Determined 28 aug 2016
Node.js
Without framework
var http = require('http');
var server = http.createServer(function (req, res) {
if (req.method === 'GET') {
res.end("Hello World");
}
});
server.listen(3000);
Node.js
With express.js
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World');
});
app.listen(3000);
Quick and easy
Node.js
Frameworks: Other
• Hapi
A rich framework for building applications and services. Configuration is better
than code. Business logic must be isolated from the transport layer.
Started in 2011 146 contributers 234,103 downloads last month.
• Koa
Expressive, light-weight HTTP framework for Node.js to make web applications
and APIs more enjoyable to write.
Started in 2013 89 contributers 132,790 downloads last month.
• Sails
Sails is the most popular MVC framework for Node.js. It is designed for building
practical, production-ready Node.js apps. Build on top of express.
Started in 2012 210 contributers 59,518 downloads last month.
Node.js
Callback hell
Error handling in every callback handler
Nested callbacks
Node.js
Callback hell
Error handling in every callback handler
Nested callbacks
Node.js
Flow control. Executing in series
• Async
Async is a utility module which provides straight-forward, powerful
functions for working with asynchronous JavaScript.
• Promises
A Promise object represents a value that may not be available yet,
but will be resolved at some point in the future. It allows you to
write asynchronous code in a more synchronous fashion.
• Generators
The Generator object is returned by a generator function and it
conforms to both the iterable protocol and the iterator protocol.
Node.js modules
Convert XML <> JSON
• xml2js
Ever had the urge to parse XML? And wanted to access the data in some sane, easy way? Don't want to
compile a C parser, for whatever reason? Then xml2js is what you're looking for!
• xml2js uses SAX (Simple API for XML)
– Event driven asynchronous processing of XML
– Memory friendly
Does not require creating a Document Object Model (DOM) of the XML document in memory
</> {}
Node.js modules
How does JSONized SOAP look?
Mind the namespace prefixes!
Node.js modules
node-soap
node-soap is a module that offers SOAP support
Node.js modules
node-soap
Define the service logic
Load the WSDL
Create the server
Host the webservice
Node.js and back-end integration
Database integration with Node.js
Oracle NoSQL highlights
• Key value pair database
• Dynamic data model
• Transparent load balancing
• Highly scalable
• Options for transactional
mechanisms
• Options for eventual consistency
• Built on BerkelyDB
NoSQL highlights
http://www.oracle.com/technetwork/database/nosqldb/overview/nosql-transactions-497227.html
Transactional mechanisms
Consistency models
Node.js and NoSQL
Node.js
Node.js and NoSQL
Application
Node.js
Application
RMI
RMIJSON
Thrift
nosqldb-oraclejs
JVM
NoSQL Java proxy
kvclient
WL/GlassFish/Tomcat
REST Data Services
(ORDS)
kvclient
Node.js and MongoDB
BSON
Node.js
Application
mongoose
Node.js and the Oracle Database
node-oracledb
• Maintained by Oracle and actively being developed
• Requires Oracle database client software installed
Application Container Cloud already provides this
• Very rich in features and well documented!
https://github.com/oracle/node-oracledb
Node.js
Application
nosqldb-oraclejs
Node.js and the Oracle Database
node-oracledb: Features
• Promises, Callbacks and Streams
• SQL and PL/SQL execution
• REF CURSORs
• Large Objects: CLOBs and BLOBs
• Oracle Database 12.1 JSON datatype
• Query results as JavaScript objects or arrays
• Smart mapping between JavaScript and Oracle types
with manual override available
• Data binding using JavaScript objects or arrays
• Transaction Management
• Inbuilt Connection Pool with Queueing
• Database Resident Connection Pooling (DRCP)
• External Authentication
• Row Prefetching
• Statement Caching
• Client Result Caching
• End-to-end Tracing, Mid-tier Authentication, and
Auditing
• Oracle High Availability Features
– Fast Application Notification (FAN)
– Runtime Load Balancing (RLB)
– Transparent Application Failover (TAF)
Node.js and the Oracle Database
node-oracledb: Features
• Promises, Callbacks and Streams
• SQL and PL/SQL execution
• REF CURSORs
• Large Objects: CLOBs and BLOBs
• Oracle Database 12.1 JSON datatype
• Query results as JavaScript objects or arrays
• Smart mapping between JavaScript and Oracle types
with manual override available
• Data binding using JavaScript objects or arrays
• Transaction Management
• Inbuilt Connection Pool with Queueing
• Database Resident Connection Pooling (DRCP)
• External Authentication
• Row Prefetching
• Statement Caching
• Client Result Caching
• End-to-end Tracing, Mid-tier Authentication, and
Auditing
• Oracle High Availability Features
– Fast Application Notification (FAN)
– Runtime Load Balancing (RLB)
– Transparent Application Failover (TAF)
Node.js and the Oracle Database
node-oracledb: Calling PL/SQL
Define bind variables IN
Define bind variables OUT
Call a PL/SQL function
Node.js and the Oracle Database
node-oracledb: Connection pooling
Good sample: http://stackoverflow.com/questions/29846188/node-js-express-oracle-connection-pooling-ora-24418-cannot-open-further-sess
Create a connection pool
Grab a connection from the pool and use it
Close when done. Also in case of errors!
Inbuilt queueing
Node.js and the Oracle Database
Using DRCP with node-oracledb
• Database Resident Connection Pooling (DRCP)
http://www.oracle.com/technetwork/articles/oracledrcp11g-1-133381.pdf
Node.js and the Oracle Database
Using DRCP with node-oracledb
• On the client:
– Set oracledb.ConnectionClass = ‘poolname’
– Easy Connect syntax like myhost/sales:POOLED, or by using a tnsnames.ora alias for a connection that contains (SERVER=POOLED)
– Set externalAuth to true in getConnection or createPool
• On the database
– execute dbms_connection_pool.start_pool(“poolname”);
https://www.youtube.com/watch?v=3p6rutSLlkg
Simple to use
Node.js and the Oracle Database
Performance with node-oracledb
• Make sure you create a connection pool in the
right scope to promote re-use
• Consider increasing the LibUV thread pool size.
The default is 4. Can be set with environment
variable: UV_THREADPOOL_SIZE
• Explicitly release connections to the pool
• Use a resultSet when the number of rows fetched is large
• Consider using DRCP
Read: http://docs.oracle.com/database/121/ADFNS/adfns_perf_scale.htm#ADFNS228
Introducing Application Container Cloud
Node.js
What doesn’t it provide?
• High availability
– Clustering capabilities
– Load balancer
– On demand scaling
• Management and monitoring
• Support
• Provisioning
• Deployment
• Patching
• Back-end drivers
99.999%
Node.js
What doesn’t it provide?
• High availability
– Clustering capabilities
– Load balancer
– On demand scaling
• Management and monitoring
• Support
• Provisioning /Deployment
• Patching
• Back-end drivers
99.999%
Application Container Cloud
Enterprise Grade Features for Node.js
Application Container Cloud Service
Architecture
Tenant1
Tenant2
(App 1) (App 2) (App 3)
Load Balancer
Database Cloud
Java Cloud
Messaging Cloud
Storage Cloud
Developer Cloud
Customers
< / >
Developers
Application Container Cloud Service
Enterprise grade features for Node.js
• On demand scale out/in.
Adding/Removing instances
• On demand scale up/down.
Adding/Removing memory per instance
• Automatic load balancer configuration
• One click patching
Application Container Cloud Service
Enterprise grade features for Node.js
• Easy web interface for
deployments
• Also possible using the API
and Developer Cloud Service
Easy!
Application Container Cloud Service
Enterprise grade features for Node.js
• Easy web interface for managing configuration
• Including service bindings
such as database connections
Application Container Cloud Service
Enterprise grade features for Node.js
• Browse log files from the webinterface
Application Container Cloud Service
Enterprise grade features for Node.js
https://docs.oracle.com/cloud/latest/apaas_gs/APCSR/
Application Container Cloud Service
Integration with Developer Cloud Service
pom.xml
maven-assembly-plugin
assembly.xml
YourApplication.zip
Node.js application
manifest.json
Application Container Cloud Service
Integration with Developer Cloud Service
Application Container Cloud Service
Integration with Developer Cloud Service
Application Container Cloud Service
Integration with Developer Cloud Service
• Build and deploy with Developer Cloud Service
Application Container Cloud Service
Integration with Developer Cloud Service
Application Container Cloud Service
Integration with Developer Cloud Service
Application Container Cloud Service
Integration with Developer Cloud Service
Application Container Cloud Service
Integration with Developer Cloud Service
Integration: SOA Suite or Node.js?
Node.js versus SOA Suite
Node.js versus SOA Suite
SOA Suite
Node.js architecture
node standard library
node bindings
(socket, http, etc)
V8
thread pool
(libeio)
event loop
(libev)
C/C++JavaScript
Node.js
Integration with Node.js or SOA Suite
• Node.js assets
– thin stateless services like microservices
– tying simple things together with minimal effort
– technology focus: JavaScript + REST/JSON
– High performance
• Node.js challenges
– no adapters, workflow, …
– no wizard driven IDE
– requires (a lot of) custom code
– no high availability / management / monitoring options
Consider Application Container Cloud to provide those
Questions
@MaartenSmeetsNL
https://nl.linkedin.com/in/smeetsm
Download sample code at
https://github.com/MaartenSmeets/nodejssamples
Oracle application container cloud back end integration using node final

Weitere ähnliche Inhalte

Was ist angesagt?

Fortress Open Source IAM on LDAPv3
Fortress Open Source IAM on LDAPv3Fortress Open Source IAM on LDAPv3
Fortress Open Source IAM on LDAPv3
LDAPCon
 
Changing Views on Integration (AUSOUG Webinar Series, May 2020)
Changing Views on Integration (AUSOUG Webinar Series, May 2020)Changing Views on Integration (AUSOUG Webinar Series, May 2020)
Changing Views on Integration (AUSOUG Webinar Series, May 2020)
Lucas Jellema
 

Was ist angesagt? (20)

Soaring through the Clouds - World Record Oracle PaaS Cloud - Friday Cloud Up...
Soaring through the Clouds - World Record Oracle PaaS Cloud - Friday Cloud Up...Soaring through the Clouds - World Record Oracle PaaS Cloud - Friday Cloud Up...
Soaring through the Clouds - World Record Oracle PaaS Cloud - Friday Cloud Up...
 
It's a wrap - closing keynote for nlOUG Tech Experience 2017 (16th June, The ...
It's a wrap - closing keynote for nlOUG Tech Experience 2017 (16th June, The ...It's a wrap - closing keynote for nlOUG Tech Experience 2017 (16th June, The ...
It's a wrap - closing keynote for nlOUG Tech Experience 2017 (16th June, The ...
 
Introducing NoSQL and MongoDB to complement Relational Databases (AMIS SIG 14...
Introducing NoSQL and MongoDB to complement Relational Databases (AMIS SIG 14...Introducing NoSQL and MongoDB to complement Relational Databases (AMIS SIG 14...
Introducing NoSQL and MongoDB to complement Relational Databases (AMIS SIG 14...
 
Data Streaming with Apache Kafka & MongoDB - EMEA
Data Streaming with Apache Kafka & MongoDB - EMEAData Streaming with Apache Kafka & MongoDB - EMEA
Data Streaming with Apache Kafka & MongoDB - EMEA
 
2019 - OOW - Database Migration Methods from On-Premise to Cloud
2019 - OOW - Database Migration Methods from On-Premise to Cloud2019 - OOW - Database Migration Methods from On-Premise to Cloud
2019 - OOW - Database Migration Methods from On-Premise to Cloud
 
Fortress Open Source IAM on LDAPv3
Fortress Open Source IAM on LDAPv3Fortress Open Source IAM on LDAPv3
Fortress Open Source IAM on LDAPv3
 
Cloudfoundry architecture
Cloudfoundry architectureCloudfoundry architecture
Cloudfoundry architecture
 
Changing Views on Integration (AUSOUG Webinar Series, May 2020)
Changing Views on Integration (AUSOUG Webinar Series, May 2020)Changing Views on Integration (AUSOUG Webinar Series, May 2020)
Changing Views on Integration (AUSOUG Webinar Series, May 2020)
 
The rise of microservices - containers and orchestration
The rise of microservices - containers and orchestrationThe rise of microservices - containers and orchestration
The rise of microservices - containers and orchestration
 
NextGen IBM Cloud Monitoring and Logging
NextGen IBM Cloud Monitoring and LoggingNextGen IBM Cloud Monitoring and Logging
NextGen IBM Cloud Monitoring and Logging
 
Business and IT agility through DevOps and microservice architecture powered ...
Business and IT agility through DevOps and microservice architecture powered ...Business and IT agility through DevOps and microservice architecture powered ...
Business and IT agility through DevOps and microservice architecture powered ...
 
No SQL, No Problem: Use Azure DocumentDB
No SQL, No Problem: Use Azure DocumentDBNo SQL, No Problem: Use Azure DocumentDB
No SQL, No Problem: Use Azure DocumentDB
 
Complete open source IAM solution
Complete open source IAM solutionComplete open source IAM solution
Complete open source IAM solution
 
50 Shades of Data - how, when and why Big, Fast, Relational, NoSQL, Elastic, ...
50 Shades of Data - how, when and why Big, Fast, Relational, NoSQL, Elastic, ...50 Shades of Data - how, when and why Big, Fast, Relational, NoSQL, Elastic, ...
50 Shades of Data - how, when and why Big, Fast, Relational, NoSQL, Elastic, ...
 
Oracle Cloud Native Application Development (Meetup, 20th January 2020)
Oracle Cloud Native Application Development (Meetup, 20th January 2020)Oracle Cloud Native Application Development (Meetup, 20th January 2020)
Oracle Cloud Native Application Development (Meetup, 20th January 2020)
 
A Cloud- and Container-Based Approach to Microservices-Powered Workflows (Cod...
A Cloud- and Container-Based Approach to Microservices-Powered Workflows (Cod...A Cloud- and Container-Based Approach to Microservices-Powered Workflows (Cod...
A Cloud- and Container-Based Approach to Microservices-Powered Workflows (Cod...
 
Spring Into the Cloud
Spring Into the CloudSpring Into the Cloud
Spring Into the Cloud
 
Machine learning services with SQL Server 2017
Machine learning services with SQL Server 2017Machine learning services with SQL Server 2017
Machine learning services with SQL Server 2017
 
Ten Real-World Customer Configurations on Oracle Database Appliance
Ten Real-World Customer Configurations on Oracle Database Appliance Ten Real-World Customer Configurations on Oracle Database Appliance
Ten Real-World Customer Configurations on Oracle Database Appliance
 
Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)
 

Ähnlich wie Oracle application container cloud back end integration using node final

web development with mern stack in power point
web development with mern stack in power pointweb development with mern stack in power point
web development with mern stack in power point
RAMKUMARRIT20
 
Final year presentation topicssssss in 1
Final year presentation topicssssss in 1Final year presentation topicssssss in 1
Final year presentation topicssssss in 1
RAMKUMARRIT20
 

Ähnlich wie Oracle application container cloud back end integration using node final (20)

What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 
Mean stack
Mean stackMean stack
Mean stack
 
NodeJS - Server Side JS
NodeJS - Server Side JS NodeJS - Server Side JS
NodeJS - Server Side JS
 
An introduction to Node.js
An introduction to Node.jsAn introduction to Node.js
An introduction to Node.js
 
WebLogic on ODA - Oracle Open World 2013
WebLogic on ODA - Oracle Open World 2013WebLogic on ODA - Oracle Open World 2013
WebLogic on ODA - Oracle Open World 2013
 
Introduction to ASP.NET 5
Introduction to ASP.NET 5Introduction to ASP.NET 5
Introduction to ASP.NET 5
 
Meanstack overview
Meanstack overviewMeanstack overview
Meanstack overview
 
Introduction to MERN Stack
Introduction to MERN StackIntroduction to MERN Stack
Introduction to MERN Stack
 
web development with mern stack in power point
web development with mern stack in power pointweb development with mern stack in power point
web development with mern stack in power point
 
Final year presentation topicssssss in 1
Final year presentation topicssssss in 1Final year presentation topicssssss in 1
Final year presentation topicssssss in 1
 
Meanstack Introduction by Kishore Chandra
Meanstack Introduction by Kishore ChandraMeanstack Introduction by Kishore Chandra
Meanstack Introduction by Kishore Chandra
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with Docker
 
recenttrendtechnology-2112N18132657.pptx
recenttrendtechnology-2112N18132657.pptxrecenttrendtechnology-2112N18132657.pptx
recenttrendtechnology-2112N18132657.pptx
 
Beginners Node.js
Beginners Node.jsBeginners Node.js
Beginners Node.js
 
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
Oracle OpenWorld 2014 Review Part Four - PaaS MiddlewareOracle OpenWorld 2014 Review Part Four - PaaS Middleware
Oracle OpenWorld 2014 Review Part Four - PaaS Middleware
 
Node js installation steps.pptx slide share ppts
Node js installation steps.pptx slide share pptsNode js installation steps.pptx slide share ppts
Node js installation steps.pptx slide share ppts
 
Intro to Sails.js
Intro to Sails.jsIntro to Sails.js
Intro to Sails.js
 
End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012End-to-end W3C APIs - tpac 2012
End-to-end W3C APIs - tpac 2012
 

Mehr von Getting value from IoT, Integration and Data Analytics

Mehr von Getting value from IoT, Integration and Data Analytics (20)

AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaSAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: DataAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
 
10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel
 
Iot in de zorg the next step - fit for purpose
Iot in de zorg   the next step - fit for purpose Iot in de zorg   the next step - fit for purpose
Iot in de zorg the next step - fit for purpose
 
Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct
 
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
 
Industry and IOT Overview of protocols and best practices Conclusion Connect
Industry and IOT Overview of protocols and best practices  Conclusion ConnectIndustry and IOT Overview of protocols and best practices  Conclusion Connect
Industry and IOT Overview of protocols and best practices Conclusion Connect
 
IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...
 
R introduction decision_trees
R introduction decision_treesR introduction decision_trees
R introduction decision_trees
 
Introduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas JellemaIntroduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas Jellema
 
IoT and the Future of work
IoT and the Future of work IoT and the Future of work
IoT and the Future of work
 
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
 
Ethereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter ReitsmaEthereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter Reitsma
 
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - ConclusionBlockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
 
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
 
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
 
Omc AMIS evenement 26012017 Dennis van Soest
Omc AMIS evenement 26012017 Dennis van SoestOmc AMIS evenement 26012017 Dennis van Soest
Omc AMIS evenement 26012017 Dennis van Soest
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Kürzlich hochgeladen (20)

AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

Oracle application container cloud back end integration using node final

  • 1. OOW 2016: CON 1283 Maarten Smeets Oracle Application Container Cloud Service Back-End Integration Using Node.js
  • 2. Introduction • About AMIS – Located in the Netherlands • About me – Oracle Integration Consultant – Experience with Oracle SOA Suite since 2007 – Well certified (SOA, BPM, Java, SQL, PL/SQL among others) – Author of a lot of blog articles (http://javaoraclesoa.blogspot.com) @MaartenSmeetsNL https://nl.linkedin.com/in/smeetsm
  • 3. Agenda Node.js introduction Backend integration Application Container Cloud What to use for your integration?
  • 5. Node.js Using threads is hard • Concurrency control mechanisms (e.g. locking) • Coordination over threads (IPC) • Memory overhead • Synchronization • Programming thread safe code is not easy
  • 6. What is Node.js • Node.js uses a single thread! • Node.js has been created To write high-performance servers fast • Node.js is: – a set of bindings to V8 for non-browser work: sockets, files, etc. – only exposes non-blocking, asynchronous interfaces – only one thread, one call stack (like a browser) – low level features: half-closed TCP connections, TCP throttling, UDP – has killer HTTP support Node.js architecture node standard library node bindings (socket, http, etc) V8 thread pool (libeio) event loop (libev) C/C++JavaScript
  • 7. Node.js why should you care?
  • 8. Node.js What do they use it for? “On the server side, our entire mobile software stack is completely built in Node” “We are moving every product & every site within PayPal to Node” “We’ve been busy building our next-generation Netflix.com web application using Node” “MuleSoft's Anypoint platform services are implemented in Node”
  • 9. Node.js Integration. Overview POST /myservice Receive request Service Implementation Processing input Creating output Message processing Backend Front-end connectivity Routing Back-end connectivity Flow control
  • 10. Node.js Integration. Overview Front-end connectivity • URL handling • HTTP connection handling Back-end connectivity • Connect to other services • Drivers to access technology diverse systems • Connection pooling Drivers / modules such as • Oracle Database • Oracle NoSQL Database • Mongo Database • SOAP and JSON services What Frameworks such as • Express • Hapi • Koa • Sails • xml2js • node-soap Message processing Middleware • Routing • Mapping Flow control • Async • Promises How
  • 11. Node.js Frameworks • Abstraction • Generic functionality • Facilitate development • Drawbacks – Performance cost – Need framework knowledge – Only specific functionality https://raygun.com/blog/2016/06/node-performance/ 0 2000 4000 6000 8000 10000 12000 14000 raw node koa express restify hapi Requestspersecond Framework
  • 12. Node.js Frameworks: Express.js • Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications. • Express.js is used in many other popular frameworks like Sails, MEAN, LoopBack • It is maintained by StrongLoop (IBM). Started in 2009. 191 contributers. 6,823,598 downloads last month * * Contributers from github.com. Downloads from npmjs.com. Determined 28 aug 2016
  • 13. Node.js Without framework var http = require('http'); var server = http.createServer(function (req, res) { if (req.method === 'GET') { res.end("Hello World"); } }); server.listen(3000);
  • 14. Node.js With express.js var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World'); }); app.listen(3000); Quick and easy
  • 15. Node.js Frameworks: Other • Hapi A rich framework for building applications and services. Configuration is better than code. Business logic must be isolated from the transport layer. Started in 2011 146 contributers 234,103 downloads last month. • Koa Expressive, light-weight HTTP framework for Node.js to make web applications and APIs more enjoyable to write. Started in 2013 89 contributers 132,790 downloads last month. • Sails Sails is the most popular MVC framework for Node.js. It is designed for building practical, production-ready Node.js apps. Build on top of express. Started in 2012 210 contributers 59,518 downloads last month.
  • 16. Node.js Callback hell Error handling in every callback handler Nested callbacks
  • 17. Node.js Callback hell Error handling in every callback handler Nested callbacks
  • 18. Node.js Flow control. Executing in series • Async Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript. • Promises A Promise object represents a value that may not be available yet, but will be resolved at some point in the future. It allows you to write asynchronous code in a more synchronous fashion. • Generators The Generator object is returned by a generator function and it conforms to both the iterable protocol and the iterator protocol.
  • 19. Node.js modules Convert XML <> JSON • xml2js Ever had the urge to parse XML? And wanted to access the data in some sane, easy way? Don't want to compile a C parser, for whatever reason? Then xml2js is what you're looking for! • xml2js uses SAX (Simple API for XML) – Event driven asynchronous processing of XML – Memory friendly Does not require creating a Document Object Model (DOM) of the XML document in memory </> {}
  • 20. Node.js modules How does JSONized SOAP look? Mind the namespace prefixes!
  • 21. Node.js modules node-soap node-soap is a module that offers SOAP support
  • 22. Node.js modules node-soap Define the service logic Load the WSDL Create the server Host the webservice
  • 23. Node.js and back-end integration
  • 25. Oracle NoSQL highlights • Key value pair database • Dynamic data model • Transparent load balancing • Highly scalable • Options for transactional mechanisms • Options for eventual consistency • Built on BerkelyDB
  • 28. Node.js Node.js and NoSQL Application Node.js Application RMI RMIJSON Thrift nosqldb-oraclejs JVM NoSQL Java proxy kvclient WL/GlassFish/Tomcat REST Data Services (ORDS) kvclient
  • 30. Node.js and the Oracle Database node-oracledb • Maintained by Oracle and actively being developed • Requires Oracle database client software installed Application Container Cloud already provides this • Very rich in features and well documented! https://github.com/oracle/node-oracledb Node.js Application nosqldb-oraclejs
  • 31. Node.js and the Oracle Database node-oracledb: Features • Promises, Callbacks and Streams • SQL and PL/SQL execution • REF CURSORs • Large Objects: CLOBs and BLOBs • Oracle Database 12.1 JSON datatype • Query results as JavaScript objects or arrays • Smart mapping between JavaScript and Oracle types with manual override available • Data binding using JavaScript objects or arrays • Transaction Management • Inbuilt Connection Pool with Queueing • Database Resident Connection Pooling (DRCP) • External Authentication • Row Prefetching • Statement Caching • Client Result Caching • End-to-end Tracing, Mid-tier Authentication, and Auditing • Oracle High Availability Features – Fast Application Notification (FAN) – Runtime Load Balancing (RLB) – Transparent Application Failover (TAF)
  • 32. Node.js and the Oracle Database node-oracledb: Features • Promises, Callbacks and Streams • SQL and PL/SQL execution • REF CURSORs • Large Objects: CLOBs and BLOBs • Oracle Database 12.1 JSON datatype • Query results as JavaScript objects or arrays • Smart mapping between JavaScript and Oracle types with manual override available • Data binding using JavaScript objects or arrays • Transaction Management • Inbuilt Connection Pool with Queueing • Database Resident Connection Pooling (DRCP) • External Authentication • Row Prefetching • Statement Caching • Client Result Caching • End-to-end Tracing, Mid-tier Authentication, and Auditing • Oracle High Availability Features – Fast Application Notification (FAN) – Runtime Load Balancing (RLB) – Transparent Application Failover (TAF)
  • 33. Node.js and the Oracle Database node-oracledb: Calling PL/SQL Define bind variables IN Define bind variables OUT Call a PL/SQL function
  • 34. Node.js and the Oracle Database node-oracledb: Connection pooling Good sample: http://stackoverflow.com/questions/29846188/node-js-express-oracle-connection-pooling-ora-24418-cannot-open-further-sess Create a connection pool Grab a connection from the pool and use it Close when done. Also in case of errors! Inbuilt queueing
  • 35. Node.js and the Oracle Database Using DRCP with node-oracledb • Database Resident Connection Pooling (DRCP) http://www.oracle.com/technetwork/articles/oracledrcp11g-1-133381.pdf
  • 36. Node.js and the Oracle Database Using DRCP with node-oracledb • On the client: – Set oracledb.ConnectionClass = ‘poolname’ – Easy Connect syntax like myhost/sales:POOLED, or by using a tnsnames.ora alias for a connection that contains (SERVER=POOLED) – Set externalAuth to true in getConnection or createPool • On the database – execute dbms_connection_pool.start_pool(“poolname”); https://www.youtube.com/watch?v=3p6rutSLlkg Simple to use
  • 37. Node.js and the Oracle Database Performance with node-oracledb • Make sure you create a connection pool in the right scope to promote re-use • Consider increasing the LibUV thread pool size. The default is 4. Can be set with environment variable: UV_THREADPOOL_SIZE • Explicitly release connections to the pool • Use a resultSet when the number of rows fetched is large • Consider using DRCP Read: http://docs.oracle.com/database/121/ADFNS/adfns_perf_scale.htm#ADFNS228
  • 39. Node.js What doesn’t it provide? • High availability – Clustering capabilities – Load balancer – On demand scaling • Management and monitoring • Support • Provisioning • Deployment • Patching • Back-end drivers 99.999%
  • 40. Node.js What doesn’t it provide? • High availability – Clustering capabilities – Load balancer – On demand scaling • Management and monitoring • Support • Provisioning /Deployment • Patching • Back-end drivers 99.999%
  • 41. Application Container Cloud Enterprise Grade Features for Node.js
  • 42. Application Container Cloud Service Architecture Tenant1 Tenant2 (App 1) (App 2) (App 3) Load Balancer Database Cloud Java Cloud Messaging Cloud Storage Cloud Developer Cloud Customers < / > Developers
  • 43. Application Container Cloud Service Enterprise grade features for Node.js • On demand scale out/in. Adding/Removing instances • On demand scale up/down. Adding/Removing memory per instance • Automatic load balancer configuration • One click patching
  • 44. Application Container Cloud Service Enterprise grade features for Node.js • Easy web interface for deployments • Also possible using the API and Developer Cloud Service Easy!
  • 45. Application Container Cloud Service Enterprise grade features for Node.js • Easy web interface for managing configuration • Including service bindings such as database connections
  • 46. Application Container Cloud Service Enterprise grade features for Node.js • Browse log files from the webinterface
  • 47. Application Container Cloud Service Enterprise grade features for Node.js https://docs.oracle.com/cloud/latest/apaas_gs/APCSR/
  • 48. Application Container Cloud Service Integration with Developer Cloud Service pom.xml maven-assembly-plugin assembly.xml YourApplication.zip Node.js application manifest.json
  • 49. Application Container Cloud Service Integration with Developer Cloud Service
  • 50. Application Container Cloud Service Integration with Developer Cloud Service
  • 51. Application Container Cloud Service Integration with Developer Cloud Service • Build and deploy with Developer Cloud Service
  • 52. Application Container Cloud Service Integration with Developer Cloud Service
  • 53. Application Container Cloud Service Integration with Developer Cloud Service
  • 54. Application Container Cloud Service Integration with Developer Cloud Service
  • 55. Application Container Cloud Service Integration with Developer Cloud Service
  • 56. Integration: SOA Suite or Node.js?
  • 58. Node.js versus SOA Suite SOA Suite Node.js architecture node standard library node bindings (socket, http, etc) V8 thread pool (libeio) event loop (libev) C/C++JavaScript Node.js
  • 59. Integration with Node.js or SOA Suite • Node.js assets – thin stateless services like microservices – tying simple things together with minimal effort – technology focus: JavaScript + REST/JSON – High performance • Node.js challenges – no adapters, workflow, … – no wizard driven IDE – requires (a lot of) custom code – no high availability / management / monitoring options Consider Application Container Cloud to provide those

Hinweis der Redaktion

  1. Recent awards: Oracle EMEA Middleware Partner of the Year, 3 times Oracle Netherlands Middleware partner of the year. One of the rare moments in the Netherlands when it isn’t raining.
  2. Using threads has a lot of overhead
  3. Node.js single thread. Do not block it! You get help for that
  4. JET, MCS, ACCS
  5. Netflix: http://techblog.netflix.com/2014/11/nodejs-in-flames.html https://www.quora.com/What-companies-are-using-Node-js-in-production Usage to host front and backend
  6. How does this look in practice. Lifecycle
  7. 1 voor 1 lagen door
  8. Express Middleware: https://github.com/senchalabs/connect?_ga=1.53053800.1929169438.1472377864#middleware
  9. Express middleware has been put in separate modules since 4.x. Some examples: body-parser Node.js body parsing middleware morgan HTTP request logger middleware for node.js. Morgan was built to do logging in the way that servers like Apache and Nginx log to the error_log or access_log.
  10. Hapy pronounced similar to happy
  11. Callback hell This is much worse on enterprise level. Node.js is not just pretty but there are challenges
  12. Wat wil ik hiermee zeggen. Om integratie in node te doen…
  13. Memory friendly + ACC
  14. Rode pijl, namespaces
  15. Mostly suitable as client. Less as server
  16. Run the proxy on the same host as the driver. Use one proxy per driver instance Specify hosts. Split Application and driver
  17. Clustering done with AS mongos
  18. Database Resident Connection Pooling (DRCP) provides a connection pool in the database server for typical Web application usage scenarios where the application acquires a database connection, works on it for a relatively short duration, and then releases it. DRCP pools "dedicated" servers. A pooled server is the equivalent of a server foreground process and a database session combined. Authenticate to the broker.
  19. Driver needs to talk to the connection broker
  20. There are separate open source solutions available for each of these, but… Do you want to do a product selection for each of them? Do you want to deal with potentially several suppliers? Do you want to invest in tying everything together? How are you going to deal with upgrades / patches?
  21. There are separate open source solutions available for each of these, but… Do you want to do a product selection for each of them? Do you want to deal with potentially several suppliers? Do you want to invest in tying everything together? How are you going to deal with upgrades / patches?
  22. SOA Suite runs on top of an application server. Node is a platform on which an application can be build.
  23. Iets doen met echte applicaties