SlideShare a Scribd company logo
1 of 66
Hands-on Cloud-native
Java with
MicroProfile,
Kubernetes and
OpenShift
Jamie L Coleman
Software Engineer/Developer Advocate
Twitter: @Jamie_Lee_C
Email: JLColeman@uk.ibm.com
Contents
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 2
Workshop 03
The modules 04
The Environment 06
Why move to the Cloud? 08
What the Cloud offers 12
Microservices 13
Eclipse MicroProfile 14
Contributors 16
Community 17
Vendors/Implementations 20
MicroProfile Technologies 21
MicroProfile Stack 22
MicroProfile Core Technologies 34
A Full Open Stack 35
Open Liberty Overview 37
Open J9 Overview 41
Containers & Testing 43
Docker 47
Testing with Containers 49
Kubernetes & OpenShift
Kubernetes 53
MicroProfile and Kubernetes 59
OpenShift Overview
Workshop &
Environment
3
Workshop Modules
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 4
8 Modules each between 15 – 25 mins
long.
1. Creating RESTful Web Services
2. Injecting dependencies into a Java
microservices
3. Configuring Java microservices
4. Building fault-tolerant
microservices with the @fallback
annotation
5. Containerizing Microservices
6. Introduction to MicroShed Testing
7. Deploying MicroServices to
Kubernetes
8. Building and deploying a RESTful
web service on OpenShift 4.x
Additional Workshop Modules
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 5
3 Modules each between 15 – 25 mins
long on reactive Java Programming.
1. Creating reactive microservices
using MicroProfile Reactive
Messaging
2. Testing reactive Java microservices
3. Building and deploying Reactive
Java microservices on OpenShift 4.x
Skills Network Labs
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 6
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 7
Skills Network Labs
Why move to the
Cloud and what is
Cloud-Native?
8
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 9
What the Cloud offers
Demand
time
One big server running all the time?
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 10
What the Cloud offers
Demand
time
One big server running all the time?
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 11
What the Cloud offers
Demand
time
One big server running all the time?
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 12
Agile, Microservices,
DevOps & Cloud
+ +C
B
A
+
Microservices
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 13
A microservice is an architectural style that
structures an application as a collection of
loosely coupled services
The benefit of having an application made
up of microservices is that it improves
modularity and make it easier to develop,
test and more resilient to changes
Allows teams to work on individual
services
Enables continuous delivery and
deployment per microservice
Eclipse
MicroProfile
14
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 15
What is MicroProfile?
● Eclipse MicroProfile is an open-source
community specification for Enterprise Java
microservices
● A community of individuals, organizations, and
vendors collaborating within an open source
(Eclipse) project to bring microservices to the
Enterprise Java community
microprofile.io
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 16
MicroProfile
Contributors
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 17
MicroProfile Community
● Over a dozen vendors and Java user groups
● 140 individual contributors
● Over half a dozen independent
implementations
Locations of some
MicroProfile
Contributors
18
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Seattle – USA
Ontario – Canada
Canberra – Australia
Stuttgart – Germany
Rochester – USA
Prague – Czech Rep
Newcastle – UK
Munich – Germany
Paris – France
Hursley – UK
Centurion – South Africa
Boston – USA
Sao Paulo – Brazil
Rio de Janeiro – Brazil
Coimbra – Portugal
Amsterdam – Netherlands
Source: MicroProfile.io
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 19
MicroProfile Community
Video HangoutsBi-Weekly & Quarterly
General community
Meetings
MicroProfile ProjectsGoogle Groups
YouTube Channel
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 20
MicroProfile
Vendors/Implementations
MicroProfile
Technologies
21
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 22
MicroProfile 3.3 Stack
JSON-B 1.0JSON-P 1.1CDI 2.0
Config 1.4
Fault
Tolerance 2.1
JWT
Propagation
1.1
Health
Check 2.2
Metrics 2.3
Open Tracing
1.3
Open API 1.1
JAX-RS 2.1
Rest Client
1.4
MicroProfile Core
Technologies
23 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
B
@Path("/brews")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class BrewsResource {
@POST
public Response startCoffeeBrew(CoffeeBrew brew) {...)
}
JAX-RS
MicroProfile Core
Technologies
24 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
REST Client
BA
@RegisterRestClient
@Path("/resources/brews")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public interface BaristaClient {
@POST
public Response startCoffeeBrew(CoffeeBrew brew);
}
MicroProfile Core
Technologies
25 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
CDI
BA
@Path("/orders")
public class OrdersResource {
@Inject
CoffeeShop coffeeShop;
...
}
MicroProfile Core
Technologies
26 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
JSON-B & JSON-P
A B
...
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response startCoffeeBrew(CoffeeBrew brew) {
CoffeeType coffeeType = brew.getType();
...
}
public class CoffeeBrew {
private CoffeeType type;
public CoffeeType getType() {
return type;
}
public void setType(CoffeeType type) {
this.type = type;
}
}
MicroProfile Core
Technologies
27 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Open API
A B
openapi: 3.0.0
info:
title: Deployed APIs
version: 1.0.0
servers:
- url: http://grahams-mbp-2.lan:9081/barista
paths:
/resources/brews:
post:
operationId: startCoffeeBrew
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CoffeeBrew'
responses:
default:
description: default response
components:
schemas:
CoffeeBrew:
type: object
properties:
type:
type: string
enum:
- ESPRESSO
- LATTE
- POUR_OVER
MicroProfile Core
Technologies
28 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
JWT
@POST
@RolesAllowed({ "admin", "coffee-shop" })
public Response startCoffeeBrew(CoffeeBrew brew) {...}
BA
MicroProfile Core
Technologies
29 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Fault
Tolerance
A B
@Retry(retryOn = TimeoutException.class,
maxRetries = 4,
maxDuration = 10,
durationUnit = ChronoUnit.SECONDS)
public void startCoffeeBrew(CoffeeBrew brew) {
Response response = baristaClient.startCoffeeBrew(brew);
...
}
MicroProfile Core
Technologies
30 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Config
A B
@ApplicationScoped
public class Barista {
@Inject
@ConfigProperty(name="default_barista_base_url")
String baristaBaseURL;
...
}
MicroProfile Core
Technologies
31 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Health
A B
{
"checks": [
{
"data": {
"barista service": "available"
},
"name": "CoffeeShopHealth",
"state": "UP"
}
],
"outcome": "UP"
}
@Health
@ApplicationScoped
public class HealthResource implements HealthCheck {
...
public boolean isHealthy() {...}
@Override
public HealthCheckResponse call() {
if (!isHealthy()) {
return HealthCheckResponse.named(...).down().build();
}
return HealthCheckResponse.named(...).up().build();
}
}
MicroProfile Core
Technologies
32 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Metrics
A B
@POST
@Counted(name="order", displayName="Order count",
description="Number of times orders requested.", monotonic=true)
public Response orderCoffee(@Valid @NotNull CoffeeOrder order) {
...
}
MicroProfile Core
Technologies
33 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Open Tracing
A B
@Traced
public void startBrew(CoffeeType coffeeType) {
...
}
JAX-RS methods
are automatically
traced by default
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 34
MicroProfile 3.3 Stack
Reactive
Streams
Operators 1.1
Reactive
Messaging
1.0
GraphQL 1.0
Context
Propagation
1.0
Standalone Projects
JSON-B 1.0JSON-P 1.1CDI 2.0
Config 1.4
Fault
Tolerance 2.1
JWT
Propagation
1.1
Health
Check 2.2
Metrics 2.3
Open Tracing
1.3
Open API 1.1
JAX-RS 2.1
Rest Client
1.4
A Full Open
Stack
35
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 36
A Full Open Stack
MicroProfile
Open Liberty
OpenJ9
OpenShift
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 37
Open Liberty Overview
Focus on code
Easy to make fast and iterative changes
Easy to write tests
True-to-production testing (as much as possible)
Ready for containers
Not-in-your-way tools and flexibility
Open Liberty Overview
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Developer
Experience: dev
mode
Boosts developer productivity
Immediate feedback for code and config changes
No re-build necessary
mvn liberty:dev
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Developer-oriented Docs
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 40
41
0
0.5
1
1.5
2
2.5
December '18 March '19 April '19 July '19 August '19 September '19 April '20
2018-2020 Progression of OpenLiberty+OpenJ9 startup time (seconds)
42
Open Liberty with OpenJ9: the road to one second startup time
OpenJ9 : Improved Cached feature metadata when no change to server.xml Changed bundle activation to start in parallel
Better AOT code RAS processing Optimized loading of CXF JSON/JSONB provider RAS annotation processing at build time
JMX MBeanServer init Cached annotation information for built-in JAX-RS Providers Cached plugin xml and OSGi metadata
OpenJ9 : GC hints in shared classes cache Reduced class loading during startup
Reduced logging overhead
OpenJ9 : More AOT code in shared classes cache
OpenJ9 : Optimize class verification overhead
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Open Liberty startup time comparison (using OpenJ9 JVM)
43
0
1
2
3
4
5
6
7
8
Open Liberty 20.0.0.4 TomEE 8.0.0-M3-
microprofile
Tomcat 9.0.22 +
OpenWebBeans
2.0.11(CDI) + CXF
3.3.2 (jaxrs)
Wildfly 17.0.1 javaee JBoss 7.2 Glassfish web 5 Payara web 5.192
PingPerf application startup time with OpenJ9 Shared Classes Cache (in seconds)
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 44
Open J9 Overview
Designed from the start to span all the
operating systems needed by IBM products
This JVM can go from small to large
Can handle constrained environments or
memory rich ones
Is used by the largest enterprises on the
planet
If any JVM can be said to be at the heart of
the enterprise – its this one.
45
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Time To Code
To get started visit the following URL in your browser:
ibm.biz/cloud-native-java
Or
https://ide.skillsnetwork.site/cloud-native-java-with-microprofile-kubernetes-and-openshift
Please run the cleanup.sh script from the terminal at the end of each
lab to clean up your environment.
Workshop Part 1:
Fast Iterative
Development
46
Containers &
Testing with Containers
47
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 48
MicroProfile &
Containers
Containers Kubernetes OpenShift
JSON-B 1.0JSON-P 1.1CDI 2.0
Config 1.4
Fault
Tolerance 2.1
JWT
Propagation
1.1
Health
Check 2.2
Metrics 2.3
Open Tracing
1.3
Open API 1.1
JAX-RS 2.1
Rest Client
1.4
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 49
Containers
build, ship and run any app,
anywhere
docker build -t ol-runtime --no-cache=true .
docker run -d --name rest-app -p 9080:9080 -p
9443:9443 -v <absolute path to
guide>/start/target/liberty/wlp/usr/servers:/servers
ol-runtime
my-app:latest
(app container)
mongo:4.0
(DB container)
Dev/Test env
Production env
integration
tests
end users
my-app:latest
(app container)
mongo:4.0
(DB container)
Testcontainers
• Integration tests that are
easy to setup, write, and run
• Test your apps the same
way they run in production
• Tests are portable to any
compatible implementation:
• Liberty
• Wildfly
• Payara
• TomEE
• etc…
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
MicroShed Testing
• Integration tests that are easy to setup, write,
and run
• Test your apps the same way they run in
production...in Containers
• Can run multiple containers on same network
(e.g. test DB integration)
• http://microshed.org/microshed-testing/
@MicroShedTest
public class MyTest {
// Search for Dockerfile.
// Start app in Container.
// Wait for Container before running tests.
@Container
public static MicroProfileApplication app
= new MicroProfileApplication()
.withAppContextRoot("/myservice")
;
// Inject JAX-RS REST Client
@Inject
public static MyService mySvc;
// A test method like any other
@Test
public void testMyService() {
...
}
}
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Workshop Part 2:
Containers &
Testing with Containers
52
Deploying to the Cloud
with Kubernetes &
OpenShift
53
Containers are not enough!
Regain control with Kubernetes
Organize and govern the container chaos
Kubernetes
Intelligent
Scheduling
Self-HealingHorizontal
Scaling
Automated
Rollouts &
Rollbacks
Secret &
Configuration
Management
Service Discovery &
Load Balancing
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 56
Kubernetes
MicroProfile with Kubernetes
57 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Config
A B
env:
- name: GREETING
valueFrom:
configMapKeyRef:
name: greeting-
config
key: message
kubectl create configmap greeting-config --from-literal
message=Greetings...
@Inject
@ConfigProperty(name =
"GREETING")
private String greeting;
MicroProfile with Kubernetes
58 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Health
A B
readinessProbe:
httpGet:
path: /health
port: 9080
initialDelaySeconds:
15
periodSeconds: 5
failureThreshold: 1
59
Why should developers care about
DevOps?
• Enables the delivery of innovation more often
• Improves quality
• Reduces toil to allow developers to focus on code
• Improves confidence
• Improves time to production
• Improves communication and collaboration
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
OpenShift is a Kubernetes-based platform
with added functions. It streamlines the
DevOps process by providing an intuitive
development pipeline. It also provides
integration with multiple tools to make the
deployment and management of cloud
applications easier.
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
IDE integration - With OpenShift's
integration with Eclipse, JBoss
Developer Studio, and Visual
Studio developers can stay entirely
within the IDE that they prefer when
working with OpenShift.
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
63
OpenShift and the
Hybrid Model
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Workshop Part 3:
Deploying To The Cloud
With Kubernetes &
OpenShift
64
65
Recap
MicroProfile
• No vendor lock in
• Full set of cloud ready APIs
• Config
• Health
• Metrics
• Fault Tolerance
• …
• Big community
Open Liberty
• Modular Application server
• Light weight
• Easy to configure
• Jakarta EE 8 certified
• Production ready
• Official Docker images available
• Optimized for development
All Open Source!
Open J9
• Low memory footprint
• Fast startup time
• High application throughput
• Smoother ramp-up in the cloud
• Easy to use Docker images
OpenShift
• Works on all clouds
• Uses Containers for easy portability
• Can run on Private and Public
Clouds
• Integration with IDE’s to make
developers lives easier.
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
Thank you
66
Jamie Lee Coleman
Software Engineer/Advocate Team Lead
Email: jlcoleman@uk.ibm.com
Twitter: @Jamie_Lee_C
GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation

More Related Content

What's hot

Build12 factorappusingmp
Build12 factorappusingmpBuild12 factorappusingmp
Build12 factorappusingmpEmily Jiang
 
Kubernetes for the PHP developer
Kubernetes for the PHP developerKubernetes for the PHP developer
Kubernetes for the PHP developerPaul Czarkowski
 
Using Open Source and Open Standards in the Platform game
Using Open Source and Open Standards in the Platform gameUsing Open Source and Open Standards in the Platform game
Using Open Source and Open Standards in the Platform gamePatrick Chanezon
 
Containers, OCI, CNCF, Magnum, Kuryr, and You!
Containers, OCI, CNCF, Magnum, Kuryr, and You!Containers, OCI, CNCF, Magnum, Kuryr, and You!
Containers, OCI, CNCF, Magnum, Kuryr, and You!Daniel Krook
 
C219 - Docker and PureApplication Patterns: Better Together
C219 - Docker and PureApplication Patterns: Better TogetherC219 - Docker and PureApplication Patterns: Better Together
C219 - Docker and PureApplication Patterns: Better TogetherHendrik van Run
 
DevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for KubernetesDevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for KubernetesAmbassador Labs
 
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re GoingSpring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re GoingVMware Tanzu
 
Docker OpenStack Cloud Foundry
Docker OpenStack Cloud FoundryDocker OpenStack Cloud Foundry
Docker OpenStack Cloud FoundryAnimesh Singh
 
Building 12-factor Cloud Native Microservices
Building 12-factor Cloud Native MicroservicesBuilding 12-factor Cloud Native Microservices
Building 12-factor Cloud Native MicroservicesJakarta_EE
 
Docker EE 2.0 Choice, Security & Agility
Docker EE 2.0Choice, Security & AgilityDocker EE 2.0Choice, Security & Agility
Docker EE 2.0 Choice, Security & AgilityAshnikbiz
 
Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016Stuart Charlton
 
Getting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and MicronautGetting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and MicronautZachary Klein
 
Spring - CDI Interop
Spring - CDI InteropSpring - CDI Interop
Spring - CDI InteropRay Ploski
 
Dockers and containers basics
Dockers and containers basicsDockers and containers basics
Dockers and containers basicsSourabh Saxena
 
Journey to the devops automation with docker kubernetes and openshift
Journey to the devops automation with docker kubernetes and openshiftJourney to the devops automation with docker kubernetes and openshift
Journey to the devops automation with docker kubernetes and openshiftYusuf Hadiwinata Sutandar
 
Jenkins advance topic
Jenkins advance topicJenkins advance topic
Jenkins advance topicKalkey
 
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entitySpring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entityToni Jara
 
Cloud foundry Docker Openstack - Leading Open Source Triumvirate
Cloud foundry Docker Openstack - Leading Open Source TriumvirateCloud foundry Docker Openstack - Leading Open Source Triumvirate
Cloud foundry Docker Openstack - Leading Open Source TriumvirateAnimesh Singh
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to KubernetesPaul Czarkowski
 

What's hot (20)

Build12 factorappusingmp
Build12 factorappusingmpBuild12 factorappusingmp
Build12 factorappusingmp
 
Kubernetes for the PHP developer
Kubernetes for the PHP developerKubernetes for the PHP developer
Kubernetes for the PHP developer
 
Using Open Source and Open Standards in the Platform game
Using Open Source and Open Standards in the Platform gameUsing Open Source and Open Standards in the Platform game
Using Open Source and Open Standards in the Platform game
 
Queens release updates
Queens release updatesQueens release updates
Queens release updates
 
Containers, OCI, CNCF, Magnum, Kuryr, and You!
Containers, OCI, CNCF, Magnum, Kuryr, and You!Containers, OCI, CNCF, Magnum, Kuryr, and You!
Containers, OCI, CNCF, Magnum, Kuryr, and You!
 
C219 - Docker and PureApplication Patterns: Better Together
C219 - Docker and PureApplication Patterns: Better TogetherC219 - Docker and PureApplication Patterns: Better Together
C219 - Docker and PureApplication Patterns: Better Together
 
DevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for KubernetesDevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for Kubernetes
 
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re GoingSpring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
 
Docker OpenStack Cloud Foundry
Docker OpenStack Cloud FoundryDocker OpenStack Cloud Foundry
Docker OpenStack Cloud Foundry
 
Building 12-factor Cloud Native Microservices
Building 12-factor Cloud Native MicroservicesBuilding 12-factor Cloud Native Microservices
Building 12-factor Cloud Native Microservices
 
Docker EE 2.0 Choice, Security & Agility
Docker EE 2.0Choice, Security & AgilityDocker EE 2.0Choice, Security & Agility
Docker EE 2.0 Choice, Security & Agility
 
Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016Cloud Foundry Vancouver Meetup July 2016
Cloud Foundry Vancouver Meetup July 2016
 
Getting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and MicronautGetting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and Micronaut
 
Spring - CDI Interop
Spring - CDI InteropSpring - CDI Interop
Spring - CDI Interop
 
Dockers and containers basics
Dockers and containers basicsDockers and containers basics
Dockers and containers basics
 
Journey to the devops automation with docker kubernetes and openshift
Journey to the devops automation with docker kubernetes and openshiftJourney to the devops automation with docker kubernetes and openshift
Journey to the devops automation with docker kubernetes and openshift
 
Jenkins advance topic
Jenkins advance topicJenkins advance topic
Jenkins advance topic
 
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entitySpring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
 
Cloud foundry Docker Openstack - Leading Open Source Triumvirate
Cloud foundry Docker Openstack - Leading Open Source TriumvirateCloud foundry Docker Openstack - Leading Open Source Triumvirate
Cloud foundry Docker Openstack - Leading Open Source Triumvirate
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 

Similar to Hands-on Cloud-native Java with MicroProfile, Kubernetes and OpenShift

Seriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java MicroservicesSeriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java MicroservicesJamie Coleman
 
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at JavanturaHands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at JavanturaJamie Coleman
 
Accelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is TodayAccelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is TodayJohn Duimovich
 
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...andrejusb
 
(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?Steve Poole
 
DevOps for Mainframe: Open Source Fast Track
DevOps for Mainframe: Open Source Fast TrackDevOps for Mainframe: Open Source Fast Track
DevOps for Mainframe: Open Source Fast TrackDevOps.com
 
Microsoft, java and you!
Microsoft, java and you!Microsoft, java and you!
Microsoft, java and you!George Adams
 
GIDS_15FactorWorkshop.pdf
GIDS_15FactorWorkshop.pdfGIDS_15FactorWorkshop.pdf
GIDS_15FactorWorkshop.pdfRichHagarty
 
IBM JavaOne Community Keynote 2015: Cask Strength Java Aged 20 years
IBM JavaOne Community Keynote 2015: Cask Strength Java  Aged 20 yearsIBM JavaOne Community Keynote 2015: Cask Strength Java  Aged 20 years
IBM JavaOne Community Keynote 2015: Cask Strength Java Aged 20 yearsJohn Duimovich
 
Distributed tracing with service meshes and tracing spans across polyglot Mic...
Distributed tracing with service meshes and tracing spans across polyglot Mic...Distributed tracing with service meshes and tracing spans across polyglot Mic...
Distributed tracing with service meshes and tracing spans across polyglot Mic...Nebulaworks
 
How to deploy machine learning models into production
How to deploy machine learning models into productionHow to deploy machine learning models into production
How to deploy machine learning models into productionDataWorks Summit
 
IBM Bluemix saves the game
IBM Bluemix saves the gameIBM Bluemix saves the game
IBM Bluemix saves the gamegjuljo
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020Emily Jiang
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020Emily Jiang
 
IBM Think 2020 Openshift on IBM Z and LinuxONE
IBM Think 2020 Openshift on IBM Z and LinuxONEIBM Think 2020 Openshift on IBM Z and LinuxONE
IBM Think 2020 Openshift on IBM Z and LinuxONEFilipe Miranda
 
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...Sanjeev Sharma
 
Kubernetes for Developers - 7 lessons learned from 7 data centers in 7 months...
Kubernetes for Developers - 7 lessons learned from 7 data centers in 7 months...Kubernetes for Developers - 7 lessons learned from 7 data centers in 7 months...
Kubernetes for Developers - 7 lessons learned from 7 data centers in 7 months...Michael Tougeron
 
WSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
WSO2Con EU 2015: Keynote - The Containerization of the Developer WorkspaceWSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
WSO2Con EU 2015: Keynote - The Containerization of the Developer WorkspaceWSO2
 
Understanding Microservices
Understanding MicroservicesUnderstanding Microservices
Understanding Microservicesvguhesan
 

Similar to Hands-on Cloud-native Java with MicroProfile, Kubernetes and OpenShift (20)

Seriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java MicroservicesSeriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java Microservices
 
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at JavanturaHands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
Hands-on cloud-native Java with MicroProfile, Kubernetes and Istio at Javantura
 
Accelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is TodayAccelerating Innovation with Java: The Future is Today
Accelerating Innovation with Java: The Future is Today
 
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...
End-to-End Cloud: Oracle Java Cloud, Oracle Mobile Cloud Service, Oracle MAF,...
 
(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?
 
DevOps for Mainframe: Open Source Fast Track
DevOps for Mainframe: Open Source Fast TrackDevOps for Mainframe: Open Source Fast Track
DevOps for Mainframe: Open Source Fast Track
 
Microsoft, java and you!
Microsoft, java and you!Microsoft, java and you!
Microsoft, java and you!
 
GIDS_15FactorWorkshop.pdf
GIDS_15FactorWorkshop.pdfGIDS_15FactorWorkshop.pdf
GIDS_15FactorWorkshop.pdf
 
IBM JavaOne Community Keynote 2015: Cask Strength Java Aged 20 years
IBM JavaOne Community Keynote 2015: Cask Strength Java  Aged 20 yearsIBM JavaOne Community Keynote 2015: Cask Strength Java  Aged 20 years
IBM JavaOne Community Keynote 2015: Cask Strength Java Aged 20 years
 
Distributed tracing with service meshes and tracing spans across polyglot Mic...
Distributed tracing with service meshes and tracing spans across polyglot Mic...Distributed tracing with service meshes and tracing spans across polyglot Mic...
Distributed tracing with service meshes and tracing spans across polyglot Mic...
 
How to deploy machine learning models into production
How to deploy machine learning models into productionHow to deploy machine learning models into production
How to deploy machine learning models into production
 
IBM Bluemix saves the game
IBM Bluemix saves the gameIBM Bluemix saves the game
IBM Bluemix saves the game
 
JavaOne 2015 Keynote Presentation
JavaOne 2015 Keynote PresentationJavaOne 2015 Keynote Presentation
JavaOne 2015 Keynote Presentation
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020
 
Cloud nativemicroservices jax-london2020
Cloud nativemicroservices   jax-london2020Cloud nativemicroservices   jax-london2020
Cloud nativemicroservices jax-london2020
 
IBM Think 2020 Openshift on IBM Z and LinuxONE
IBM Think 2020 Openshift on IBM Z and LinuxONEIBM Think 2020 Openshift on IBM Z and LinuxONE
IBM Think 2020 Openshift on IBM Z and LinuxONE
 
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...Applying DevOps, PaaS and cloud for better citizen service  outcomes - IBM Fe...
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...
 
Kubernetes for Developers - 7 lessons learned from 7 data centers in 7 months...
Kubernetes for Developers - 7 lessons learned from 7 data centers in 7 months...Kubernetes for Developers - 7 lessons learned from 7 data centers in 7 months...
Kubernetes for Developers - 7 lessons learned from 7 data centers in 7 months...
 
WSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
WSO2Con EU 2015: Keynote - The Containerization of the Developer WorkspaceWSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
WSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
 
Understanding Microservices
Understanding MicroservicesUnderstanding Microservices
Understanding Microservices
 

More from Jamie Coleman

Open Source Licence to Kill in Software Development
Open Source Licence to Kill in Software DevelopmentOpen Source Licence to Kill in Software Development
Open Source Licence to Kill in Software DevelopmentJamie Coleman
 
The Secret Life of Maven Central - LJC 2022.pptx
The Secret Life of Maven Central - LJC 2022.pptxThe Secret Life of Maven Central - LJC 2022.pptx
The Secret Life of Maven Central - LJC 2022.pptxJamie Coleman
 
Code to Cloud Workshop, Shifting Security to the Left
Code to Cloud Workshop, Shifting Security to the LeftCode to Cloud Workshop, Shifting Security to the Left
Code to Cloud Workshop, Shifting Security to the LeftJamie Coleman
 
The Death Star & The Ultimate Vulnerability.pptx
The Death Star & The Ultimate Vulnerability.pptxThe Death Star & The Ultimate Vulnerability.pptx
The Death Star & The Ultimate Vulnerability.pptxJamie Coleman
 
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptx
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptxWhy Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptx
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptxJamie Coleman
 
Code to Cloud Workshop.pptx
Code to Cloud Workshop.pptxCode to Cloud Workshop.pptx
Code to Cloud Workshop.pptxJamie Coleman
 
Magic of Automation and Everyday Chores.pptx
Magic of Automation and Everyday Chores.pptxMagic of Automation and Everyday Chores.pptx
Magic of Automation and Everyday Chores.pptxJamie Coleman
 
Code to Cloud Workshop
Code to Cloud WorkshopCode to Cloud Workshop
Code to Cloud WorkshopJamie Coleman
 
Using Static Analysis Tools to Become a Superhero Programmer.pptx
Using Static Analysis Tools to Become a Superhero Programmer.pptxUsing Static Analysis Tools to Become a Superhero Programmer.pptx
Using Static Analysis Tools to Become a Superhero Programmer.pptxJamie Coleman
 
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptxDeploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptxJamie Coleman
 
Replicating production on your laptop using the magic of containers v2
Replicating production on your laptop using the magic of containers v2Replicating production on your laptop using the magic of containers v2
Replicating production on your laptop using the magic of containers v2Jamie Coleman
 
Simple tweaks to get the most out of your JVM
Simple tweaks to get the most out of your JVMSimple tweaks to get the most out of your JVM
Simple tweaks to get the most out of your JVMJamie Coleman
 
Open Source In The World Of Java
Open Source In The World Of JavaOpen Source In The World Of Java
Open Source In The World Of JavaJamie Coleman
 
Replicating production on your laptop using the magic of containers
Replicating production on your laptop using the magic of containersReplicating production on your laptop using the magic of containers
Replicating production on your laptop using the magic of containersJamie Coleman
 
Simple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmSimple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmJamie Coleman
 
Codecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshopCodecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshopJamie Coleman
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bagJamie Coleman
 
Are you ready for cloud-native java JavaCro2019
Are you ready for cloud-native java JavaCro2019Are you ready for cloud-native java JavaCro2019
Are you ready for cloud-native java JavaCro2019Jamie Coleman
 

More from Jamie Coleman (18)

Open Source Licence to Kill in Software Development
Open Source Licence to Kill in Software DevelopmentOpen Source Licence to Kill in Software Development
Open Source Licence to Kill in Software Development
 
The Secret Life of Maven Central - LJC 2022.pptx
The Secret Life of Maven Central - LJC 2022.pptxThe Secret Life of Maven Central - LJC 2022.pptx
The Secret Life of Maven Central - LJC 2022.pptx
 
Code to Cloud Workshop, Shifting Security to the Left
Code to Cloud Workshop, Shifting Security to the LeftCode to Cloud Workshop, Shifting Security to the Left
Code to Cloud Workshop, Shifting Security to the Left
 
The Death Star & The Ultimate Vulnerability.pptx
The Death Star & The Ultimate Vulnerability.pptxThe Death Star & The Ultimate Vulnerability.pptx
The Death Star & The Ultimate Vulnerability.pptx
 
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptx
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptxWhy Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptx
Why Building Your Ship (Application) with Raw Materials is a Bad Idea!.pptx
 
Code to Cloud Workshop.pptx
Code to Cloud Workshop.pptxCode to Cloud Workshop.pptx
Code to Cloud Workshop.pptx
 
Magic of Automation and Everyday Chores.pptx
Magic of Automation and Everyday Chores.pptxMagic of Automation and Everyday Chores.pptx
Magic of Automation and Everyday Chores.pptx
 
Code to Cloud Workshop
Code to Cloud WorkshopCode to Cloud Workshop
Code to Cloud Workshop
 
Using Static Analysis Tools to Become a Superhero Programmer.pptx
Using Static Analysis Tools to Become a Superhero Programmer.pptxUsing Static Analysis Tools to Become a Superhero Programmer.pptx
Using Static Analysis Tools to Become a Superhero Programmer.pptx
 
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptxDeploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
Deploy and Update Jakarta EE & MicroProfile applications with Paketo.pptx
 
Replicating production on your laptop using the magic of containers v2
Replicating production on your laptop using the magic of containers v2Replicating production on your laptop using the magic of containers v2
Replicating production on your laptop using the magic of containers v2
 
Simple tweaks to get the most out of your JVM
Simple tweaks to get the most out of your JVMSimple tweaks to get the most out of your JVM
Simple tweaks to get the most out of your JVM
 
Open Source In The World Of Java
Open Source In The World Of JavaOpen Source In The World Of Java
Open Source In The World Of Java
 
Replicating production on your laptop using the magic of containers
Replicating production on your laptop using the magic of containersReplicating production on your laptop using the magic of containers
Replicating production on your laptop using the magic of containers
 
Simple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvmSimple tweaks to get the most out of your jvm
Simple tweaks to get the most out of your jvm
 
Codecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshopCodecamp 2020 microservices made easy workshop
Codecamp 2020 microservices made easy workshop
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bag
 
Are you ready for cloud-native java JavaCro2019
Are you ready for cloud-native java JavaCro2019Are you ready for cloud-native java JavaCro2019
Are you ready for cloud-native java JavaCro2019
 

Recently uploaded

Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 

Recently uploaded (20)

Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 

Hands-on Cloud-native Java with MicroProfile, Kubernetes and OpenShift

  • 1. Hands-on Cloud-native Java with MicroProfile, Kubernetes and OpenShift Jamie L Coleman Software Engineer/Developer Advocate Twitter: @Jamie_Lee_C Email: JLColeman@uk.ibm.com
  • 2. Contents GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 2 Workshop 03 The modules 04 The Environment 06 Why move to the Cloud? 08 What the Cloud offers 12 Microservices 13 Eclipse MicroProfile 14 Contributors 16 Community 17 Vendors/Implementations 20 MicroProfile Technologies 21 MicroProfile Stack 22 MicroProfile Core Technologies 34 A Full Open Stack 35 Open Liberty Overview 37 Open J9 Overview 41 Containers & Testing 43 Docker 47 Testing with Containers 49 Kubernetes & OpenShift Kubernetes 53 MicroProfile and Kubernetes 59 OpenShift Overview
  • 4. Workshop Modules GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 4 8 Modules each between 15 – 25 mins long. 1. Creating RESTful Web Services 2. Injecting dependencies into a Java microservices 3. Configuring Java microservices 4. Building fault-tolerant microservices with the @fallback annotation 5. Containerizing Microservices 6. Introduction to MicroShed Testing 7. Deploying MicroServices to Kubernetes 8. Building and deploying a RESTful web service on OpenShift 4.x
  • 5. Additional Workshop Modules GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 5 3 Modules each between 15 – 25 mins long on reactive Java Programming. 1. Creating reactive microservices using MicroProfile Reactive Messaging 2. Testing reactive Java microservices 3. Building and deploying Reactive Java microservices on OpenShift 4.x
  • 6. Skills Network Labs GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 6
  • 7. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 7 Skills Network Labs
  • 8. Why move to the Cloud and what is Cloud-Native? 8
  • 9. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 9 What the Cloud offers Demand time One big server running all the time?
  • 10. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 10 What the Cloud offers Demand time One big server running all the time?
  • 11. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 11 What the Cloud offers Demand time One big server running all the time?
  • 12. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 12 Agile, Microservices, DevOps & Cloud + +C B A +
  • 13. Microservices GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 13 A microservice is an architectural style that structures an application as a collection of loosely coupled services The benefit of having an application made up of microservices is that it improves modularity and make it easier to develop, test and more resilient to changes Allows teams to work on individual services Enables continuous delivery and deployment per microservice
  • 15. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 15 What is MicroProfile? ● Eclipse MicroProfile is an open-source community specification for Enterprise Java microservices ● A community of individuals, organizations, and vendors collaborating within an open source (Eclipse) project to bring microservices to the Enterprise Java community microprofile.io
  • 16. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 16 MicroProfile Contributors
  • 17. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 17 MicroProfile Community ● Over a dozen vendors and Java user groups ● 140 individual contributors ● Over half a dozen independent implementations
  • 18. Locations of some MicroProfile Contributors 18 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation Seattle – USA Ontario – Canada Canberra – Australia Stuttgart – Germany Rochester – USA Prague – Czech Rep Newcastle – UK Munich – Germany Paris – France Hursley – UK Centurion – South Africa Boston – USA Sao Paulo – Brazil Rio de Janeiro – Brazil Coimbra – Portugal Amsterdam – Netherlands Source: MicroProfile.io
  • 19. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 19 MicroProfile Community Video HangoutsBi-Weekly & Quarterly General community Meetings MicroProfile ProjectsGoogle Groups YouTube Channel
  • 20. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 20 MicroProfile Vendors/Implementations
  • 22. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 22 MicroProfile 3.3 Stack JSON-B 1.0JSON-P 1.1CDI 2.0 Config 1.4 Fault Tolerance 2.1 JWT Propagation 1.1 Health Check 2.2 Metrics 2.3 Open Tracing 1.3 Open API 1.1 JAX-RS 2.1 Rest Client 1.4
  • 23. MicroProfile Core Technologies 23 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation B @Path("/brews") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class BrewsResource { @POST public Response startCoffeeBrew(CoffeeBrew brew) {...) } JAX-RS
  • 24. MicroProfile Core Technologies 24 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation REST Client BA @RegisterRestClient @Path("/resources/brews") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public interface BaristaClient { @POST public Response startCoffeeBrew(CoffeeBrew brew); }
  • 25. MicroProfile Core Technologies 25 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation CDI BA @Path("/orders") public class OrdersResource { @Inject CoffeeShop coffeeShop; ... }
  • 26. MicroProfile Core Technologies 26 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation JSON-B & JSON-P A B ... @POST @Consumes(MediaType.APPLICATION_JSON) public Response startCoffeeBrew(CoffeeBrew brew) { CoffeeType coffeeType = brew.getType(); ... } public class CoffeeBrew { private CoffeeType type; public CoffeeType getType() { return type; } public void setType(CoffeeType type) { this.type = type; } }
  • 27. MicroProfile Core Technologies 27 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation Open API A B openapi: 3.0.0 info: title: Deployed APIs version: 1.0.0 servers: - url: http://grahams-mbp-2.lan:9081/barista paths: /resources/brews: post: operationId: startCoffeeBrew requestBody: content: application/json: schema: $ref: '#/components/schemas/CoffeeBrew' responses: default: description: default response components: schemas: CoffeeBrew: type: object properties: type: type: string enum: - ESPRESSO - LATTE - POUR_OVER
  • 28. MicroProfile Core Technologies 28 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation JWT @POST @RolesAllowed({ "admin", "coffee-shop" }) public Response startCoffeeBrew(CoffeeBrew brew) {...} BA
  • 29. MicroProfile Core Technologies 29 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation Fault Tolerance A B @Retry(retryOn = TimeoutException.class, maxRetries = 4, maxDuration = 10, durationUnit = ChronoUnit.SECONDS) public void startCoffeeBrew(CoffeeBrew brew) { Response response = baristaClient.startCoffeeBrew(brew); ... }
  • 30. MicroProfile Core Technologies 30 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation Config A B @ApplicationScoped public class Barista { @Inject @ConfigProperty(name="default_barista_base_url") String baristaBaseURL; ... }
  • 31. MicroProfile Core Technologies 31 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation Health A B { "checks": [ { "data": { "barista service": "available" }, "name": "CoffeeShopHealth", "state": "UP" } ], "outcome": "UP" } @Health @ApplicationScoped public class HealthResource implements HealthCheck { ... public boolean isHealthy() {...} @Override public HealthCheckResponse call() { if (!isHealthy()) { return HealthCheckResponse.named(...).down().build(); } return HealthCheckResponse.named(...).up().build(); } }
  • 32. MicroProfile Core Technologies 32 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation Metrics A B @POST @Counted(name="order", displayName="Order count", description="Number of times orders requested.", monotonic=true) public Response orderCoffee(@Valid @NotNull CoffeeOrder order) { ... }
  • 33. MicroProfile Core Technologies 33 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation Open Tracing A B @Traced public void startBrew(CoffeeType coffeeType) { ... } JAX-RS methods are automatically traced by default
  • 34. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 34 MicroProfile 3.3 Stack Reactive Streams Operators 1.1 Reactive Messaging 1.0 GraphQL 1.0 Context Propagation 1.0 Standalone Projects JSON-B 1.0JSON-P 1.1CDI 2.0 Config 1.4 Fault Tolerance 2.1 JWT Propagation 1.1 Health Check 2.2 Metrics 2.3 Open Tracing 1.3 Open API 1.1 JAX-RS 2.1 Rest Client 1.4
  • 36. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 36 A Full Open Stack MicroProfile Open Liberty OpenJ9 OpenShift
  • 37. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 37 Open Liberty Overview
  • 38. Focus on code Easy to make fast and iterative changes Easy to write tests True-to-production testing (as much as possible) Ready for containers Not-in-your-way tools and flexibility Open Liberty Overview GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
  • 39. Developer Experience: dev mode Boosts developer productivity Immediate feedback for code and config changes No re-build necessary mvn liberty:dev GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
  • 40. Developer-oriented Docs GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 40
  • 41. 41
  • 42. 0 0.5 1 1.5 2 2.5 December '18 March '19 April '19 July '19 August '19 September '19 April '20 2018-2020 Progression of OpenLiberty+OpenJ9 startup time (seconds) 42 Open Liberty with OpenJ9: the road to one second startup time OpenJ9 : Improved Cached feature metadata when no change to server.xml Changed bundle activation to start in parallel Better AOT code RAS processing Optimized loading of CXF JSON/JSONB provider RAS annotation processing at build time JMX MBeanServer init Cached annotation information for built-in JAX-RS Providers Cached plugin xml and OSGi metadata OpenJ9 : GC hints in shared classes cache Reduced class loading during startup Reduced logging overhead OpenJ9 : More AOT code in shared classes cache OpenJ9 : Optimize class verification overhead GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
  • 43. Open Liberty startup time comparison (using OpenJ9 JVM) 43 0 1 2 3 4 5 6 7 8 Open Liberty 20.0.0.4 TomEE 8.0.0-M3- microprofile Tomcat 9.0.22 + OpenWebBeans 2.0.11(CDI) + CXF 3.3.2 (jaxrs) Wildfly 17.0.1 javaee JBoss 7.2 Glassfish web 5 Payara web 5.192 PingPerf application startup time with OpenJ9 Shared Classes Cache (in seconds) GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
  • 44. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 44 Open J9 Overview Designed from the start to span all the operating systems needed by IBM products This JVM can go from small to large Can handle constrained environments or memory rich ones Is used by the largest enterprises on the planet If any JVM can be said to be at the heart of the enterprise – its this one.
  • 45. 45 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation Time To Code To get started visit the following URL in your browser: ibm.biz/cloud-native-java Or https://ide.skillsnetwork.site/cloud-native-java-with-microprofile-kubernetes-and-openshift Please run the cleanup.sh script from the terminal at the end of each lab to clean up your environment.
  • 46. Workshop Part 1: Fast Iterative Development 46
  • 47. Containers & Testing with Containers 47
  • 48. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 48 MicroProfile & Containers Containers Kubernetes OpenShift JSON-B 1.0JSON-P 1.1CDI 2.0 Config 1.4 Fault Tolerance 2.1 JWT Propagation 1.1 Health Check 2.2 Metrics 2.3 Open Tracing 1.3 Open API 1.1 JAX-RS 2.1 Rest Client 1.4
  • 49. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 49 Containers build, ship and run any app, anywhere docker build -t ol-runtime --no-cache=true . docker run -d --name rest-app -p 9080:9080 -p 9443:9443 -v <absolute path to guide>/start/target/liberty/wlp/usr/servers:/servers ol-runtime
  • 50. my-app:latest (app container) mongo:4.0 (DB container) Dev/Test env Production env integration tests end users my-app:latest (app container) mongo:4.0 (DB container) Testcontainers • Integration tests that are easy to setup, write, and run • Test your apps the same way they run in production • Tests are portable to any compatible implementation: • Liberty • Wildfly • Payara • TomEE • etc… GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
  • 51. MicroShed Testing • Integration tests that are easy to setup, write, and run • Test your apps the same way they run in production...in Containers • Can run multiple containers on same network (e.g. test DB integration) • http://microshed.org/microshed-testing/ @MicroShedTest public class MyTest { // Search for Dockerfile. // Start app in Container. // Wait for Container before running tests. @Container public static MicroProfileApplication app = new MicroProfileApplication() .withAppContextRoot("/myservice") ; // Inject JAX-RS REST Client @Inject public static MyService mySvc; // A test method like any other @Test public void testMyService() { ... } } GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
  • 52. Workshop Part 2: Containers & Testing with Containers 52
  • 53. Deploying to the Cloud with Kubernetes & OpenShift 53
  • 55. Regain control with Kubernetes Organize and govern the container chaos Kubernetes Intelligent Scheduling Self-HealingHorizontal Scaling Automated Rollouts & Rollbacks Secret & Configuration Management Service Discovery & Load Balancing
  • 56. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation 56 Kubernetes
  • 57. MicroProfile with Kubernetes 57 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation Config A B env: - name: GREETING valueFrom: configMapKeyRef: name: greeting- config key: message kubectl create configmap greeting-config --from-literal message=Greetings... @Inject @ConfigProperty(name = "GREETING") private String greeting;
  • 58. MicroProfile with Kubernetes 58 GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation Health A B readinessProbe: httpGet: path: /health port: 9080 initialDelaySeconds: 15 periodSeconds: 5 failureThreshold: 1
  • 59. 59
  • 60. Why should developers care about DevOps? • Enables the delivery of innovation more often • Improves quality • Reduces toil to allow developers to focus on code • Improves confidence • Improves time to production • Improves communication and collaboration GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
  • 61. OpenShift is a Kubernetes-based platform with added functions. It streamlines the DevOps process by providing an intuitive development pipeline. It also provides integration with multiple tools to make the deployment and management of cloud applications easier. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
  • 62. IDE integration - With OpenShift's integration with Eclipse, JBoss Developer Studio, and Visual Studio developers can stay entirely within the IDE that they prefer when working with OpenShift. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
  • 63. 63 OpenShift and the Hybrid Model GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
  • 64. Workshop Part 3: Deploying To The Cloud With Kubernetes & OpenShift 64
  • 65. 65 Recap MicroProfile • No vendor lock in • Full set of cloud ready APIs • Config • Health • Metrics • Fault Tolerance • … • Big community Open Liberty • Modular Application server • Light weight • Easy to configure • Jakarta EE 8 certified • Production ready • Official Docker images available • Optimized for development All Open Source! Open J9 • Low memory footprint • Fast startup time • High application throughput • Smoother ramp-up in the cloud • Easy to use Docker images OpenShift • Works on all clouds • Uses Containers for easy portability • Can run on Private and Public Clouds • Integration with IDE’s to make developers lives easier. GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation
  • 66. Thank you 66 Jamie Lee Coleman Software Engineer/Advocate Team Lead Email: jlcoleman@uk.ibm.com Twitter: @Jamie_Lee_C GIDS Java / Sept 9th, 2020 / © 2020 IBM Corporation

Editor's Notes

  1. Master Draft 1
  2. Provide the APIs and runtime capabilities that help with creating large numbers of collaborating services Basically having something where you aren't required to do some steps before shutdown - that shooting a container won't leave you in a bad situation Meaning if you just kill it, you don’t leave stuff hanging around. The ‘weight’ of your cloud-native application should be proportional to what the application does/uses. You don’t want to be bringing along 0.5GB of runtime to serve up a simple servlet. https://12factor.net/dev-prod-parity Make the time gap small: a developer may write code and have it deployed hours or even just minutes later. Make the personnel gap small: developers who wrote code are closely involved in deploying it and watching its behavior in production. Make the tools gap small: keep development and production as similar as possible. https://12factor.net/config Resource handles to the database, Memcached, and other backing services Credentials to external services such as Amazon S3 or Twitter Per-deploy values such as the canonical hostname for the deploy Dev env where testing is done is the same as production. Using the same OS, Runtime, etc. Docker. Immutable build… to make sure code doesn’t have to change. Single build form the Dockerfile – don’t re-build. Explicitly listing version in Dockerfiles Availability of Docker images, single independent process, etc…
  3. Advice:- This slide should be the last slide created prior to socialization. It should be presented first as a summary of the rest of the WAD.
  4. While containers are great , managing a container infrastructure without a high degree of automation and orchestration can soon become a nightmare …
  5. Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery. Horizontal scaling Scale your application up and down with a simple command, with a UI, or automatically based on CPU usage. Self-healing Restarts containers that fail, replaces and reschedules containers when nodes die, kills containers that don’t respond to your user-defined health check, and doesn’t advertise them to clients until they are ready to serve. Automated rollouts and rollbacks Kubernetes progressively rolls out changes to your application or its configuration, while monitoring application health to ensure it doesn’t kill all your instances at the same time. If something goes wrong, Kubernetes will rollback the change for you. Take advantage of a growing ecosystem of deployment solutions. Service discovery and load balancing No need to modify your application to use an unfamiliar service discovery mechanism. Kubernetes gives Pods their own IP addresses and a single DNS name for a set of Pods, and can load-balance across them. Open source container orchestration platform Clear governance model with Linux Foundation Jointed effort by IBM, Google, Huawei, Intel, Red Hat and many others Operations rather than developer centric Basic primitives support a rich set of features Releases new versions every three months New features preview in alpha/beta Wide range of deployment options: bare metal, virtualized, private, public, hybrid, …