53
1 Java Microservices on Oracle Cloud Marek Kratky Copyright © 2019 Oracle and/or its affiliates. Cloud Solution Architect, Oracle

Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

  • Upload
    others

  • View
    68

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

1

Java Microservices on Oracle Cloud

Marek Kratky

Copyright © 2019 Oracle and/or its affiliates.

Cloud Solution Architect, Oracle

Page 2: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation.

Statements in this presentation relating to Oracle’s future plans, expectations, beliefs, intentions and prospects are “forward-looking statements” and are subject to material risks and uncertainties. A detailed discussion of these factors and other risks that affect our business is contained in Oracle’s Securities and Exchange Commission (SEC) filings, including our most recent reports on Form 10-K and Form 10-Q under the heading “Risk Factors.” These filings are available on the SEC’s website or on Oracle’s website at http://www.oracle.com/investor. All information in this presentation is current as of September 2019 and Oracle undertakes no duty to update any statement in light of new information or future events.

Safe Harbor

Copyright © 2019 Oracle and/or its affiliates.

Page 3: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2019 Oracle and/or its affiliates.

Agenda

Concepts: Monolithic vs. Microservices, Containers, Kubernetes

Trends: Automation, APIs, Cloud

Building Java apps on Oracle Developer Cloud

Running Java apps on OCI Container Clusters

Demo

Page 4: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Source: https://cloud.google.com/kubernetes-engine/kubernetes-comic/

Page 5: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Horizontally Tiered Enterprises == Horizontally Tiered Apps

5

Conway’s Law: Software reflects the structure of the organization that produced it

User Interface

Application

Datastore

Infrastructure

Resulting SoftwareTypical Enterprise Organization Structure

Head of IT

Head of Operations

Head of DBAsHead of

InfrastructureHead of App

DevHead of UI

Head of Development

Multitier (Monolith) Architecture

Page 6: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Source: https://cloud.google.com/kubernetes-engine/kubernetes-comic/

Page 7: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Re-structure Your Organization – Put Conway’s Law to Work

7

Build small product-focused teams – strict one team to one service mapping

Resulting SoftwareDevOps Organization Structure

(Micro)Services Architecture

API

Application

Datastore

Infrastructure

API

Application

Datastore

Infrastructure

API

Application

Datastore

Infrastructure

API

Application

Datastore

Infrastructure

Product Lead

Project Manager

Sys Admin DBAJavaScript Developer

Developer

Developer

Sys Admin

Storage Admin

Graphic ArtistNoSQL Admin

Product Lead

Project Manager

Sys Admin DBAJavaScript Developer

Developer

Developer

Sys Admin

Storage Admin

Graphic ArtistNoSQL Admin

Product Lead

Project Manager

Sys Admin DBAJavaScript Developer

Developer

Developer

Sys Admin

Storage Admin

Graphic ArtistNoSQL Admin

Product Lead

Project Manager

Sys Admin DBAJavaScript Developer

Developer

Developer

Sys Admin

Storage Admin

Graphic ArtistNoSQL Admin

Page 8: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Modern Development in ContextThe Last 15 Years has been about driving increased development velocity

Release

Infra

App

Yearly/Quarterly Monthly/Weekly Daily/Hourly

Few servers VM’S

Delivery

Simple deployment model.

Waterfal l DevOps Continuous

Containers

.NetJava

Single app Microservices

AB

C

Multi t ier

2xDB APP

2008+ 2016+2000

Page 9: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Java applications on Oracle Cloud

Container Native App Development

• Born-in-the-cloud apps• Broad technology choice• Light-weight, microservices

Migrate Existing Apps to Cloud

• “rehosting” of existing apps to cloud

• Container ready apps• Cloud benefits• Connect to other Cloud

services

Page 10: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

11

Major technological factors

Open Source & Polyglot Microservices

DevOps &Provisioning Tools

ContainerizedApplications

Cloud Elasticity &On Demand ScalingDeveloper Cloud

Page 11: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Microservices

Confidential – Oracle Internal/Restricted/Highly Restricted

12

Page 12: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Worker Node

Worker Node

Worker NodeControl Plane [Master Node(s)]

kube-apiserver

Kubernetes – In Motion

deployCheddar.YAML

----------------

kind: Deployment

apiVersion: extensions/v1beta1

metadata:

name: cheddar

labels:

app: cheese

cheese: cheddar

spec:

replicas: 3

selector:

matchLabels:

app: cheese

task: cheddar

template:

metadata:

labels:

app: cheese

task: cheddar

version: v0.0.1

spec:

containers:

- name: cheese

image: errm/cheese:cheddar

ports:

- containerPort: 80

pod

container

container

pod

container

container

pod

container

container

pod

container

container

deployCheddar.YAML

----------------

kind: Deployment

apiVersion: extensions/v1beta1

metadata:

name: cheddar

labels:

app: cheese

cheese: cheddar

spec:

replicas: 2

selector:

matchLabels:

app: cheese

task: cheddar

template:

metadata:

labels:

app: cheese

task: cheddar

version: v0.0.1

spec:

containers:

- name: cheese

image: errm/cheese:cheddar

ports:

- containerPort: 80

Kubernetes Cluster

Page 13: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2019, Oracle and/or its affiliates. All rights reserved.14

Cloud Native

Why Cloud Native?

Docker is the de-facto technology to create, manage and run containers

Kubernetes is the leading solution for container orchestration

Technologies “to build and run scalable apps in public, private and hybrid clouds”

✓ Enable agile deployment

✓ Use and scale resources more efficiently

✓ Modernize with portable apps, reduce lock-in

✓ Use preferred languages / frameworks

• Examples:

o Light-weight containers for microservices

o Automation with infrastructure as code (IaC)

o Streaming for real-time data processing

o Functions (Fn Project) for serverless apps

Fn Project is an Oracle-led serverless framework that can run anywhere

Terraform is an infrastructure-as-code tool to provision and update resources

* CNCF.org

Cloud Native Tools

Helidon.io is a – framework for Java Microservices

Page 14: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2019, Oracle and/or its affiliates. All rights reserved.15

Oracle Cloud Native ServicesORACLE CLOUD NATIVE SERVICES

Monitoring EventsStreaming

Observability + Messaging

API Gateway

Container Engine for

Kubernetes

Resource Manager

Cloud Infrastructure

Registry

Oracle Cloud Infrastructure

Functions

Notifications

Application Development + Operations

Logging

Page 15: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Container Application Life Cycle (OKE)An Open, Fully-Managed Kubernetes Platform & Private Registry

Any CI/CD – i.e. Jenkins, Oracle Developer, etc.

OCI Registry

AD 1 AD 3

Node Pool

K8S Cluster

Node Pool

BM

VM

VCN

PV

AD 2

Exposed Kubernetes Service

• Container Native: Standard Upstream Kubernetes; Fully Managed Lifecycle; Integrated Registry

• Developer Friendly: Simple, Streamlined User Interface; REST API; Helm, and DNS Built-in

• Enterprise Ready: Oracle Cloud Infrastructure Performance; Highly Available; Secure with OCI Access Controls

Build

Test

Test

Test

Push

OCI Container Engine for Kubernetes

Pods

LB

16

Page 16: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Off-BoxVirt

Off-BoxVirt

Off-BoxVirt

Off-BoxVirt

Engineered Systems

RestAPI/ Console/CLI

ContainersVirtual MachinesBare Metal

RegionAvailability Domain 1 Availability Domain 2 Availability Domain 3

POD#1 POD#2 POD#nPOD#3...POD#1 POD#2 POD#nPOD#3...POD#1 POD#2 POD#nPOD#3...

Off-BoxVirt

Any Middle-box IPS/IDS

?

PhysicalNetwork

• Non-oversubscription CPU and

network

• Single or multi-tenant with same

set of APIs

• NVMe flash drives and super-fast

SSD block volumes

• IOPS that scale linearly

• Easier governance with

Compartments capabilities

• First Enterprise SLAs (Availability,

Manageability, Performance)

Billing

/ Metering

/ Auditing

Identity

and Access Management

Dedicated resources and Performance-first approach

VirtualNetwork

Oracle Cloud Infrastructure

Government Compartment CompartmentCompartment

Page 17: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

WebLogic Docker/Kubernetes Support

• Docker images, Dockerfiles, examples

• Helm charts to install the Operator• Operator WebLogic best practices

are followed• Create overall WebLogic

environment through Kubernetes APIs

• Manage a WebLogic domain in Docker image or PV/PVC

• Monitoring (MBean) metrics in Prometheus and Grafana

• Logs managed in the Elasticsearch and interacting with them in Kibana

18

POD 1 POD 2

AS MS

POD 3

MS

POD 4 POD 5 POD 6

MS MSMS

WLS Cluster

Kubernetes Cluster

Manage Pods

KubernetesOperator

Orchestrate WebLogicMonitorWebLogic

https://blogs.oracle.com/weblogicserver/updated-weblogic-kubernetes-support-with-operator-20

Page 18: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Helidon.io

JAX-RS

Helidon SE

Helidon MP

CDI JSON-P

SecurityConfigWeb Server

Netty

Cloud

Integrations

Page 19: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Landscape

Copyright © 2018, 2019 Oracle. All rights reserved.

Page 20: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2018, 2019 Oracle. All rights reserved.

● Microframework

● Functional style

● Reactive

● Transparent

● MicroProfile

● Declarative style

● CDI, JAX-RS, JSON-P

Page 21: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Helidon SE

Copyright © 2018, 2019 Oracle. All rights reserved.

Routing routing = Routing.builder()

.get("/hello", (req, res) -> res.send("Hello World"))

.build();

WebServer.create(routing)

.start();

Page 22: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Helidon MP

Copyright © 2018, 2019 Oracle. All rights reserved.

@Path("hello")

@ApplicationScoped

public class HelloWorld {

@GET

public String hello() {

return "Hello World";

}

}

java -cp ... io.helidon.microprofile.server.Main

Page 23: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Confidential – Oracle Internal/Restricted/Highly Restricted

24

mvn archetype:generate

-DinteractiveMode=false \

-DarchetypeGroupId=io.helidon.archetypes \

-DarchetypeArtifactId=helidon-quickstart-mp \

-DarchetypeVersion=1.0.3 \

-DgroupId=io.helidon.examples \

-DartifactId=helidon-quickstart-mp \

-Dpackage=io.helidon.examples.quickstart.mp

Generate The Project

Page 24: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Confidential – Oracle Internal/Restricted/Highly Restricted

25

mvn package

Build the Application

Page 25: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Confidential – Oracle Internal/Restricted/Highly Restricted

26

java -jar target/helidon-quickstart-mp.jar

Run the Application

Page 26: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Confidential – Oracle Internal/Restricted/Highly Restricted

27

docker build -t helidon-quickstart-mp

docker run --rm -p 8080:8080 helidon-quickstart-mp:latest

Build and Run a Docker Image

FROM openjdk:8-jre-slimRUNmkdir /appCOPY libs /app/libsCOPY quickstart-mp.jar /appCMD ["java", "-jar", "/app/quickstart-mp.jar"]

Dockerfile:

Page 27: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

28

kubectl create -f app.yaml

Deploy the applicationto Kubernetes

kind: ServiceapiVersion: v1metadata:

name: quickstart-mplabels:app: quickstart-mp

spec:type: NodePortselector:app: quickstart-mp

ports:- port: 8080targetPort: 8080name: http

---kind: DeploymentapiVersion: extensions/v1beta1metadata:

name: quickstart-mpspec:

replicas: 1template: metadata:

labels:app: quickstart-mpversion: v1

spec:containers:- name: quickstart-mpimage: quickstart-mpimagePullPolicy: IfNotPresentports:- containerPort: 8080

app.yaml:

Page 28: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

29

Fn—An open source Functions Platform

www.fnproject.io

Functions are packaged as containers—so any container can be deployed as a function

Page 29: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Deploy to any orchestration tool on any IaaS

CI/CD with Oracle Wercker

Test PushBuild Deploy

Page 30: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

31

Page 31: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

32

Page 32: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

33

Page 33: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Plan

Code

Build

Test

Package

Deploy

Operate

Monitor

CI/CD with Oracle Developer Cloud ServiceTrack Issues

Agile Project Management

Wikis

Git Repositories

Code Review

Build Frameworks

Orchestration and Dependencies

Build Reports and Notifications

Junit, Selenium, FindBugs

QA Deployments

Create packages

Push to Docker Registry

Page 34: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Demo

35

Page 35: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Sample TODO application with Helidon

Frontend – Helidon SE

Backend – Helidon MP

Casandra

web

Zipkin

Page 36: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Plan

Code

Build

Test

Package

Deploy

Operate

Monitor

Developer Cloud Service

• Track Issues

• Agile Project Management

• Wikis

37

Page 37: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Issue Tracking

38

Page 38: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Agile and Sprint Planning

39

Page 39: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Agile Reports for Progress Tracking

40

Page 40: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Plan

Code

Build

Test

Package

Deploy

Operate

Monitor

Developer Cloud Service

• Git Repositories

• IDE Integration

• Code Review

41

Page 41: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted 42

Page 42: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted 43

Page 43: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Conduct Peer Code Review and Merge Requests

44

Page 44: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Plan

Code

Build

Test

Package

Deploy

Operate

Monitor

Developer Cloud Service

• Popular Build Frameworks

• Orchestration and Dependencies

• Build Reports and Notifications

45

Page 45: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted 46

Page 46: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted 47

Page 47: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted 48

Page 48: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted 49

Page 49: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted 50

Page 50: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Oracle Confidential – Restricted 51

Page 51: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |

Normal application behavior and expected component and transaction performance are automatically learned by Oracle Management Cloud, ensuring intelligent alerting.

52

Application topologies and cross-tier dependencies are automatically learned and kept up to date by Oracle Management Cloud, ensuring rapid troubleshooting.

APM - Troubleshooting Across The Stack

Page 52: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

Resources

• https://oracle.com/cloud-native

• https://cloud.oracle.com/tryit

• https://slides.mushop.ateam.cloud

• https://github.com/oci-quickstart/oci-cloudnative

• https://github.com/oracle/cloudtestdrive/blob/master/ATP/readme.md

Copyright © 2019 Oracle and/or its affiliates.

Page 53: Oracle Cloud Visualizations - HrOUG · Java applications on Oracle Cloud Container Native App Development •Born-in-the-cloud apps •Broad technology choice •Light-weight, microservices

54

Thank You!

Copyright © 2019 Oracle and/or its affiliates.