Soaring through the Clouds
Live Oracle Public Cloud PaaS demobyThe ACE Director Cloud Team
Challenge
• Do a live and integrated demo of as many Oracle Public PaaS cloud services as possible
ICSDoc CS
PCSJCS
OSN
Sites CS
DBaaS
SOA CS
ACC
MCS
IoT CS
The Team
• Distributed– Three countries, Five partners, Five Locations– The Cloud is omnipresent• except when there is a form of outage
Story Line to create a credible flow across the clouds
Oracle OpenWorld
2016
Evaluate Proposal
Analyze Twitter traffic & Voting Machines
Publish Approved Proposals on Web & App
audience
IoT CS
PCS
Doc CS
SOA CS
DBaaS
MCS
JET on AppContainer CS (or JCS)
ACC
OSN
Real “Things” (Pis, Arduino’s, …)
ICS
Sites CS
Now you tweet your Artist Proposal for OOW 2016
Use the hashtag #ofmaces to get noticed by IoT CS and add your favorite artist as the second hashtag
Note: use underscore for space
JET Web App : http://bit.ly/acesdemo
audience
IoT CS
PCS
Doc CS
SOA CS
DBaaS
MCS
JET on AppContainer CS (or JCS)
ACC
OSN
Real “Things” (Pis, Arduino’s, …)
Collect and analyze audience input; forward findings to
REST service on ICS
Run human workflow based on suggested artist;
approve/reject, add image (on Doc CS) and
description; discuss on OSN; forward outcome to service
on ICS
Expose Rich, Responsive, Mobile enabled User Interface that contains
the proposed artist with some enrichment, based on REST APIs
(exposed from MCS)
Publish REST/JSON APIs that expose data on proposed artists including
the selected image (based on SOAP services on SOA CS)
Expose SOAP API [for ICS to invoke] to register a proposed artist and a supporting image; record
artist details persistently [with some enrichment retrieved from external services]; publish Tweet
about new proposal
ICS
Sites CS
Torsten
Lonneke
Wilfred
Lonneke
Lucas
Expose SOAP and REST services to facilitate
inetgration (from IoT CS to PCS, from PCS to SOA CS and from SOA CS to
Twitter)
All the cloud services involved – and how they are connected
Storage
Compute
DBaaS Storage
Compute
DBaaS
JCS
SOA CS
Storage
Compute
ACCICS
MCS
Doc CSPCS
Storage
Compute
IoT CS
OSN Sites CS
ACC
US2
EMEA2
DBaaS
SOA CS
ACC
ICS
MCS
Doc CS
PCS
JCS
OSN
IoT CS
Sites CS
Geographic spread of our demo
Katwijk, Netherlan
ds
Step One: IoT == Internet of Tweets
ICS
PCS
IoT CS
US2
EMEA2
Doc CSPCS
OSN Sites CS
Content and Process
Responsive Microsite Page Built with the
authorised Image stored in DCS
Business Process receives IoT message and sends to reviewer for ennrichment
and authorisation
Doc Cloud used to store marketing images for display
in JET app and Sites Page
Social Network used to discuss the marketing image,
description and approval
Microsites: http://tinyurl.com/ACEDCLOUD-KW
Integration and Persistence
Storage
Compute
DBaaS
Storage
Compute
DBaaS
JCS
SOA CS
Storage
Compute
JCS
ACC
ICS
ICS
PCS
IoT CS
REST(hand off artist finding in proprietary IoT CS
JSON format); forwarded to PCS
ICS is at the center of this world
SOA CSICS
PCS
REST(publishes a Tweet, called
from SOA CS)
SOAP(returns Y or N depending on whether a
proposal exists using SOA CS)
SOAP(calls to SOA CS to create
enriched proposal in DB; this service is to be called by PCS)
ICS is at the center of this world
IoT CS
REST(hand off artist finding in proprietary IoT CS
JSON format); forwarded to PCS
SOA CSICS
PCS
IoT CS
REST(publishes a Tweet through
SaibotAirport )REST
(hand off artist finding in proprietary IoT CS JSON format); forwarded to SOA CS
SOAP(returns Y or N depending on whether a
proposal exists using SOA CS)
REST(submit a proposal for an artist in decent JSON format; links to PCS to ask for approval of the
proposal
SOAP(calls to SOA CS to create
enriched proposal in DB; this service is to be called by PCS)
REST API(calls to SOA CS to create enriched proposal in DB)
REST(hand off artist finding in proprietary IoT CS
JSON format); forwarded to PCS
ICS is at the center of this world
Defining Connections
Defining Integrations
Integration: expose public SOAP, integrate with internal SOA CS
Configure business identifiers
Action: Find a nice The Boss image
Submit proposal directly to ICS (pretending to be PCS)
Verified with direct Soap Calls to SOA CS
Verified with direct Soap Calls to SOA CS
Seconds later…
And published in the JET Web App
And published in the JET Web App
Traces in ICS
Traces in ICS
And in SOA CS
And in SOA CS
And in SOA CS
And in DBaaS
33
SOA CS
Identity Domain
DBaaS
Storage CS Compute CS
JCS
SOA CS
SOA
Service Bus PDB1
HR
PDB2
APP
DBaaSJCS
SOA CS
SOA CS
SOA CS
SOA
Service Bus
PDB1
HR
PDB2
APP
act_proposal_api
proposed_acts
act_albums
Architecture
MCS ActService
Mobile backend
Mobile back end
Act API
PlatformAPI
Act SOAP connector
/acts/acts/{id}
Proposed Acts Service
Oracle JET on ACC
MCS
Storage
Compute
ACC
JET Web App : http://bit.ly/acesdemo
JET Web App : http://bit.ly/acesdemo
Browser invokes twitter APIREST call to nodejs which calls MCS
/mobile/custom/artistapi/acts
JET Web App : http://bit.ly/acesdemo
Responsive layout -small screen /mobile/custom/artistapi/acts/678
JET Web App : http://bit.ly/acesdemo
REST API: /mobile/custom/artistapi/acts[
{ "id": 661, "name": "Bruce Springsteen",
"numberOfVotes": 48, "registrationDate": "2016-03-14T11:47:48.709198+00:00"
}, ... more acts ...]
JET Web App : http://bit.ly/acesdemo
REST API: /mobile/custom/artistapi/acts/661{
"id": 661, "name": "Bruce Springsteen", "numberOfVotes": 48, "description": "Down to earth rock...", "genres": "[\"roots rock\",\"singer-songwriter\"]", "biography": "Bruce Frederick .....", "imageURL": "http://i.telegraph.co.uk/...", "discography": [ {"title": "Born In The U.S.A.", "imageURL": "..."}, ... more albums ... ]}
JET Web App : http://bit.ly/acesdemo
BROWSER
NodeJS server on Application
Container Cloud Service
REST API on Mobile Cloud
Service
Adds http request headers:● oracle-mobile-backend-
id● authorization
Having the browser invoke a REST API on same server that hosts html and js prevents Cross-Origin issues
JET Web App : http://bit.ly/acesdemo
{ "runtime": { "majorVersion": "0.12" }, "command": "sh start.sh"}
manifest.json
#!/bin/shunset http_proxyunset https_proxynode ./index
{ "environment": { "MCS_BACKEND_ID": "55bc25a9-...", "MCS_URL": "...us2.oraclecloud.com:443", "MCS_USER": "MCSDEM0001...", "MCS_PWD": "dy6ou5..." }}
Configuring AppContainerCS nodejsdeployment.json
start.sh
JET Web App : http://bit.ly/acesdemo
index.js (nodejs code)
var express = require('express');var app = express();var request = require('request');
app.use(express.static('public'));app.use('/bower_components', express.static('bower_components'));app.use('/mobile/*', function (req, res) { var url = process.env.MCS_URL + req.originalUrl; req.pipe(request({ url: url, headers: { 'oracle-mobile-backend-id': process.env.MCS_BACKEND_ID }, auth: { user: process.env.MCS_USER, pass: process.env.MCS_PWD } })).pipe(res);});
var PORT = process.env.PORT || 3000;app.listen(PORT, function () { console.log('Example app listening on port ' + PORT + '!'); console.log('MCS backend id is ' + process.env.MCS_BACKEND_ID);});
JET Web App : http://bit.ly/acesdemo
Node.js backend
index.html
drill.html drill.js
acts.html
acts.js
main.js
index.js
/public
Node.js backend
index.html
drill.html drill.js
acts.html
acts.js
details.html details.js
chart.html
chart.js
main.js
index.js
/public
Node.js backend
index.html
drill.html drill.js
acts.html
acts.js
details.html details.js
chart.html
chart.js
main.js
index.js/public
/mobile/custom/artistapi/acts/<id>/mobile/custom/artistapi/acts
MCS
Deployment
var form = new FormData();form.append('name', name);form.append('runtime', 'node');form.append('subscription', 'Hourly');form.append('manifest', fs.createReadStream('manifest.json'));form.append('deployment', fs.createReadStream('deployment.json'));form.append('archive', fs.createReadStream('frontend.zip'));formData.submit({ method: method, protocol: 'https:', host: 'apaas.us2.oraclecloud.com', path: '/paas/service/apaas/api/v1.1/apps/myDomain', auth: 'admin:password', headers: { 'X-ID-TENANT-NAME': 'myDomain'}});
via REST
...or simply use cloud web interface
JET Web App : http://bit.ly/acesdemo