AMIS25 - Soaring through the Clouds – Live Demo on How to Integrate Ten Different Oracle Public...

Preview:

Citation preview

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

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