SlideShare a Scribd company logo
1 of 61
Microservices Made
Easy Workshop
With MicroProfile, OpenJ9, Open Liberty
and OpenShift
Jamie Lee Coleman
Software Engineer/Developer Advocate @IBM
@Jamie_Lee_C
1
Workshop &
Environment
2
Workshop Modules
3
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
Extra Reactive Modules
1. Creating reactive Java microservices
2. Testing reactive Java microservices
3. Building and deploying Reactive Java
microservices on OpenShift 4.x
Skills Network Labs
4
5
Skills Network Labs
Why move to the
Cloud and what is
Cloud-Native?
6
7
What the Cloud offers
Demand
One big server running all the time?
time
8
Demand
One big server running all the time?
What the Cloud offers
time
9
Demand
time
One big server running all the time?
What the Cloud offers
10
Agile,
Microservices,
DevOps & Cloud
+ +C
B
A
+
Microservices
11
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
13
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
14
MicroProfile
Contributors
15
MicroProfile
Community
● Over a dozen vendors and Java user
groups
● 140 individual contributors
● Over half a dozen independent
implementations
Locations of some
MicroProfile
Contributors
1
6
• 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
17
MicroProfile
Community
Video Hangouts
Bi-Weekly &
Quarterly
General
community
Meetings
MicroProfile
ProjectsGoogle
Groups
YouTube
Channel
18
MicroProfile
Vendors/Implementations
MicroProfile
Technologies
19
20
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
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
REST Client
BA
@RegisterRestClient
@Path("/resources/brews")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public interface BaristaClient {
@POST
public Response startCoffeeBrew(CoffeeBrew brew);
}
CDI
BA
@Path("/orders")
public class OrdersResource {
@Inject
CoffeeShop coffeeShop;
...
}
MicroProfile Core
Technologies
MicroProfile Core
Technologies
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
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
JWT
@POST
@RolesAllowed({ "admin", "coffee-shop" })
public Response startCoffeeBrew(CoffeeBrew brew) {...}
BA
MicroProfile Core
Technologies
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
Config
A B
@ApplicationScoped
public class Barista {
@Inject
@ConfigProperty(name="default_barista_base_url")
String baristaBaseURL;
...
}
MicroProfile Core
Technologies
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
30
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
31
Open Tracing
A B
@Traced
public void startBrew(CoffeeType coffeeType) {
...
}
JAX-RS methods
are automatically
traced by default
32
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
34
MicroProfile
Open Liberty
OpenJ9
OpenShift
35
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
Developer Experience: dev mode
• Boosts developer productivity
• Immediate feedback for code and
config changes
• No re-build necessary
mvn liberty:dev
Developer-oriented Docs
38
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)
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)
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
42
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.
Containers &
Testing with Containers
44
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
45
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
integrati
on 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…
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
Deploying to the Cloud
with Kubernetes &
OpenShift
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
51
Kubernetes
MicroProfile with Kubernetes
52
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
53
Health
A B
readinessProbe:
httpGet:
path: /health
port: 9080
initialDelaySeconds:
15
periodSeconds: 5
failureThreshold: 1
54
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
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.
IDE integration - With OpenShift's
integration with Eclipse, JBoss Developer
Studio, and Visual Studio developers can
stay entirely within the IDE that they
when working with OpenShift.
58
OpenShift and the
Hybrid Model
5
Time To Code
To get started visit the following URL in your browser:
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.
60
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.
Thank you
61
Jamie Lee Coleman
Software Engineer/AdvocateTeam Lead
Email: jlcoleman@uk.ibm.com
Twitter: @Jamie_Lee_C

More Related Content

What's hot

DevOps and Microservice
DevOps and MicroserviceDevOps and Microservice
DevOps and MicroserviceInho Kang
 
Modernizing Java Apps with Docker
Modernizing Java Apps with DockerModernizing Java Apps with Docker
Modernizing Java Apps with DockerDocker, Inc.
 
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...DevDay.org
 
Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Michele Orsi
 
Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s QAware GmbH
 
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...VMware Tanzu
 
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps  DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps Docker, Inc.
 
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...Docker, Inc.
 
Webinar: Code Faster on Kubernetes
Webinar: Code Faster on KubernetesWebinar: Code Faster on Kubernetes
Webinar: Code Faster on KubernetesAmbassador Labs
 
Shipping and Shifting ~100 Apps with Docker EE
Shipping and Shifting ~100 Apps with Docker EEShipping and Shifting ~100 Apps with Docker EE
Shipping and Shifting ~100 Apps with Docker EEDocker, Inc.
 
QCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentQCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentAmbassador Labs
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018Patrick Chanezon
 
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer DemandPaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer DemandCisco IT
 
Introduction to KubeSphere and its open source ecosystem
Introduction to KubeSphere and its open source ecosystemIntroduction to KubeSphere and its open source ecosystem
Introduction to KubeSphere and its open source ecosystemKubeSphere
 
Microsoft Techsummit Zurich Docker and Microsoft
Microsoft Techsummit Zurich Docker and MicrosoftMicrosoft Techsummit Zurich Docker and Microsoft
Microsoft Techsummit Zurich Docker and MicrosoftPatrick Chanezon
 
DevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipelineDevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipelineAarno Aukia
 
Openbar 7 - Leuven - OpenShift - The Enterprise Container Platform - Piros
Openbar 7 - Leuven - OpenShift - The Enterprise Container Platform - PirosOpenbar 7 - Leuven - OpenShift - The Enterprise Container Platform - Piros
Openbar 7 - Leuven - OpenShift - The Enterprise Container Platform - PirosOpenbar
 
Docker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott CoultonDocker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott CoultonDocker, Inc.
 
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2Amrita Prasad
 

What's hot (20)

DevOps and Microservice
DevOps and MicroserviceDevOps and Microservice
DevOps and Microservice
 
Modernizing Java Apps with Docker
Modernizing Java Apps with DockerModernizing Java Apps with Docker
Modernizing Java Apps with Docker
 
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...
[DevDay 2017] OpenShift Enterprise - Speaker: Linh Do - DevOps Engineer at Ax...
 
Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...
 
Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s Continuous (Non)-Functional Testing of Microservices on k8s
Continuous (Non)-Functional Testing of Microservices on k8s
 
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
Automated Virtualized Testing (AVT) with Docker, Kubernetes, WireMock and Gat...
 
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps  DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps
DCSF19 Adding a Modern API Layer to ‘Dockerized’ Legacy Apps
 
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...
A Story of Cultural Change: PayPal's 2 Year Journey to 150,000 Containers wit...
 
Webinar: Code Faster on Kubernetes
Webinar: Code Faster on KubernetesWebinar: Code Faster on Kubernetes
Webinar: Code Faster on Kubernetes
 
Shipping and Shifting ~100 Apps with Docker EE
Shipping and Shifting ~100 Apps with Docker EEShipping and Shifting ~100 Apps with Docker EE
Shipping and Shifting ~100 Apps with Docker EE
 
QCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentQCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented Development
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
 
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer DemandPaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
PaaS Lessons: Cisco IT Deploys OpenShift to Meet Developer Demand
 
Introduction to KubeSphere and its open source ecosystem
Introduction to KubeSphere and its open source ecosystemIntroduction to KubeSphere and its open source ecosystem
Introduction to KubeSphere and its open source ecosystem
 
Microsoft Techsummit Zurich Docker and Microsoft
Microsoft Techsummit Zurich Docker and MicrosoftMicrosoft Techsummit Zurich Docker and Microsoft
Microsoft Techsummit Zurich Docker and Microsoft
 
DevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipelineDevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipeline
 
Openbar 7 - Leuven - OpenShift - The Enterprise Container Platform - Piros
Openbar 7 - Leuven - OpenShift - The Enterprise Container Platform - PirosOpenbar 7 - Leuven - OpenShift - The Enterprise Container Platform - Piros
Openbar 7 - Leuven - OpenShift - The Enterprise Container Platform - Piros
 
Docker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott CoultonDocker in Production, Look No Hands! by Scott Coulton
Docker in Production, Look No Hands! by Scott Coulton
 
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2
 
CASCON 2017 - OpenAPI v3
CASCON 2017 - OpenAPI v3CASCON 2017 - OpenAPI v3
CASCON 2017 - OpenAPI v3
 

Similar to Codecamp 2020 microservices made easy workshop

[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1Rubens Dos Santos Filho
 
From CoreOS to Kubernetes and Concourse CI
From CoreOS to Kubernetes and Concourse CIFrom CoreOS to Kubernetes and Concourse CI
From CoreOS to Kubernetes and Concourse CIDenis Izmaylov
 
Introduction to Eclipse Microprofile
Introduction to Eclipse MicroprofileIntroduction to Eclipse Microprofile
Introduction to Eclipse MicroprofileRed Hat Developers
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxGrace Jansen
 
Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10MagaliDavidCruz
 
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusMicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusEmily Jiang
 
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
 
No Compromise - Better, Stronger, Faster Java in the Cloud
No Compromise - Better, Stronger, Faster Java in the CloudNo Compromise - Better, Stronger, Faster Java in the Cloud
No Compromise - Better, Stronger, Faster Java in the CloudAll Things Open
 
Operator Framework Overview
Operator Framework OverviewOperator Framework Overview
Operator Framework OverviewRob Szumski
 
IBM JavaOne Community Keynote 2017
IBM JavaOne Community Keynote 2017IBM JavaOne Community Keynote 2017
IBM JavaOne Community Keynote 2017John Duimovich
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Microsoft
 
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...Sauce Labs
 
Monoliths to microservices workshop
Monoliths to microservices workshopMonoliths to microservices workshop
Monoliths to microservices workshopJudy Breedlove
 
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionJohn Archer
 
MicroProfile as the Istio Programming Model | Virtual Eclipse Community Meetup
MicroProfile as the Istio Programming Model | Virtual Eclipse Community Meetup  MicroProfile as the Istio Programming Model | Virtual Eclipse Community Meetup
MicroProfile as the Istio Programming Model | Virtual Eclipse Community Meetup Stephanie Swart
 
給 RD 的 Kubernetes 初體驗
給 RD 的 Kubernetes 初體驗給 RD 的 Kubernetes 初體驗
給 RD 的 Kubernetes 初體驗William Yeh
 
Live Coding 12 Factor App
Live Coding 12 Factor AppLive Coding 12 Factor App
Live Coding 12 Factor AppEmily Jiang
 
A fun cup of joe with open liberty
A fun cup of joe with open libertyA fun cup of joe with open liberty
A fun cup of joe with open libertyAndy Mauer
 
Zero to 1000+ Applications - Large Scale CD Adoption at Cisco with Spinnaker ...
Zero to 1000+ Applications - Large Scale CD Adoption at Cisco with Spinnaker ...Zero to 1000+ Applications - Large Scale CD Adoption at Cisco with Spinnaker ...
Zero to 1000+ Applications - Large Scale CD Adoption at Cisco with Spinnaker ...DevOps.com
 

Similar to Codecamp 2020 microservices made easy workshop (20)

[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1[JOI] TOTVS Developers Joinville - Java #1
[JOI] TOTVS Developers Joinville - Java #1
 
From CoreOS to Kubernetes and Concourse CI
From CoreOS to Kubernetes and Concourse CIFrom CoreOS to Kubernetes and Concourse CI
From CoreOS to Kubernetes and Concourse CI
 
Introduction to Eclipse Microprofile
Introduction to Eclipse MicroprofileIntroduction to Eclipse Microprofile
Introduction to Eclipse Microprofile
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptx
 
Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10
 
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusMicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
 
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
 
No Compromise - Better, Stronger, Faster Java in the Cloud
No Compromise - Better, Stronger, Faster Java in the CloudNo Compromise - Better, Stronger, Faster Java in the Cloud
No Compromise - Better, Stronger, Faster Java in the Cloud
 
Operator Framework Overview
Operator Framework OverviewOperator Framework Overview
Operator Framework Overview
 
IBM JavaOne Community Keynote 2017
IBM JavaOne Community Keynote 2017IBM JavaOne Community Keynote 2017
IBM JavaOne Community Keynote 2017
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
 
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
Slow, Flaky and Legacy Tests: FTFY - Our New Testing Strategy at Net-A-Porter...
 
Monoliths to microservices workshop
Monoliths to microservices workshopMonoliths to microservices workshop
Monoliths to microservices workshop
 
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus Introduction
 
MicroProfile as the Istio Programming Model | Virtual Eclipse Community Meetup
MicroProfile as the Istio Programming Model | Virtual Eclipse Community Meetup  MicroProfile as the Istio Programming Model | Virtual Eclipse Community Meetup
MicroProfile as the Istio Programming Model | Virtual Eclipse Community Meetup
 
給 RD 的 Kubernetes 初體驗
給 RD 的 Kubernetes 初體驗給 RD 的 Kubernetes 初體驗
給 RD 的 Kubernetes 初體驗
 
Live Coding 12 Factor App
Live Coding 12 Factor AppLive Coding 12 Factor App
Live Coding 12 Factor App
 
A fun cup of joe with open liberty
A fun cup of joe with open libertyA fun cup of joe with open liberty
A fun cup of joe with open liberty
 
Zero to 1000+ Applications - Large Scale CD Adoption at Cisco with Spinnaker ...
Zero to 1000+ Applications - Large Scale CD Adoption at Cisco with Spinnaker ...Zero to 1000+ Applications - Large Scale CD Adoption at Cisco with Spinnaker ...
Zero to 1000+ Applications - Large Scale CD Adoption at Cisco with Spinnaker ...
 

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
 
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
 
Seriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java MicroservicesSeriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java MicroservicesJamie 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
 
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
 
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
 
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
 
Seriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java MicroservicesSeriously Open Cloud Native Java Microservices
Seriously Open Cloud Native Java Microservices
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bag
 
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
 
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

Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
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
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
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
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
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
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
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
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
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
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
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
 

Recently uploaded (20)

Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
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...
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
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...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
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
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
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....
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
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
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
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
 

Codecamp 2020 microservices made easy workshop

  • 1. Microservices Made Easy Workshop With MicroProfile, OpenJ9, Open Liberty and OpenShift Jamie Lee Coleman Software Engineer/Developer Advocate @IBM @Jamie_Lee_C 1
  • 3. Workshop Modules 3 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 Extra Reactive Modules 1. Creating reactive Java microservices 2. Testing reactive Java microservices 3. Building and deploying Reactive Java microservices on OpenShift 4.x
  • 6. Why move to the Cloud and what is Cloud-Native? 6
  • 7. 7 What the Cloud offers Demand One big server running all the time? time
  • 8. 8 Demand One big server running all the time? What the Cloud offers time
  • 9. 9 Demand time One big server running all the time? What the Cloud offers
  • 11. Microservices 11 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
  • 13. 13 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
  • 15. 15 MicroProfile Community ● Over a dozen vendors and Java user groups ● 140 individual contributors ● Over half a dozen independent implementations
  • 16. Locations of some MicroProfile Contributors 1 6 • 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
  • 20. 20 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. CDI BA @Path("/orders") public class OrdersResource { @Inject CoffeeShop coffeeShop; ... } MicroProfile Core Technologies
  • 24. MicroProfile Core Technologies 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; } }
  • 25. MicroProfile Core Technologies 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
  • 26. MicroProfile Core Technologies JWT @POST @RolesAllowed({ "admin", "coffee-shop" }) public Response startCoffeeBrew(CoffeeBrew brew) {...} BA
  • 27. MicroProfile Core Technologies 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); ... }
  • 28. MicroProfile Core Technologies Config A B @ApplicationScoped public class Barista { @Inject @ConfigProperty(name="default_barista_base_url") String baristaBaseURL; ... }
  • 29. MicroProfile Core Technologies 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(); } }
  • 30. MicroProfile Core Technologies 30 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) { ... }
  • 31. MicroProfile Core Technologies 31 Open Tracing A B @Traced public void startBrew(CoffeeType coffeeType) { ... } JAX-RS methods are automatically traced by default
  • 32. 32 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. 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
  • 37. Developer Experience: dev mode • Boosts developer productivity • Immediate feedback for code and config changes • No re-build necessary mvn liberty:dev
  • 39.
  • 40. 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) 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
  • 41. Open Liberty startup time comparison (using OpenJ9 JVM) 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
  • 42. 42 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.
  • 44. 44 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
  • 45. 45 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
  • 46. my- app:latest (app container) mongo:4.0 (DB container) Dev/Test env Production env integrati on 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…
  • 47. 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
  • 48. Deploying to the Cloud with Kubernetes & OpenShift
  • 50. 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
  • 52. MicroProfile with Kubernetes 52 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;
  • 53. MicroProfile with Kubernetes 53 Health A B readinessProbe: httpGet: path: /health port: 9080 initialDelaySeconds: 15 periodSeconds: 5 failureThreshold: 1
  • 54. 54
  • 55. 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
  • 56. 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.
  • 57. IDE integration - With OpenShift's integration with Eclipse, JBoss Developer Studio, and Visual Studio developers can stay entirely within the IDE that they when working with OpenShift.
  • 59. 5 Time To Code To get started visit the following URL in your browser: 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.
  • 60. 60 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.
  • 61. Thank you 61 Jamie Lee Coleman Software Engineer/AdvocateTeam Lead Email: jlcoleman@uk.ibm.com Twitter: @Jamie_Lee_C

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, …