SlideShare a Scribd company logo
1 of 124
Download to read offline
MONOLITHS TO MICROSERVICES: APP
TRANSFORMATION
Hands-on Technical Workshop Overview
Matt Davis
AppDev SA / Farmer
Email: mattd@redhat.com
@matt_s_davis
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB2
WHAT YOU WILL LEARN
● Industry trends around enterprise application development
● Red Hat’s approach to application modernization
● How to discuss migration and modernization with your customers or managers
● Migrating an existing legacy Java™ EE app to Red Hat JBoss Enterprise Application
Platform on OpenShift.
● Using modern frameworks like Spring Boot, Wildfly Swarm, Eclipse Vert.x, and Node.js to
implement cloud native microservices and replace monolithic functionality.
● Developing and deploying using Red Hat OpenShift Container Platform, Red Hat OpenShift
Application Runtimes, and DevOps processes.
● The benefits and challenges with microservices, including use cases for reactive
microservices.
● Preventing and detecting issues in a distributed system.
● Pros and cons with different packaging techniques for microservices
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB3
9:00AM—9:15AM
WELCOME
11:00AM—11:15AM
BREAK
9:15AM—10:15AM
MOVING EXISTING APPS TO THE CLOUD
11:15AM—12:30PM
MONOLITHS TO MICROSERVICES PART 1
10:15AM—11:00AM
DEVELOPER INTRO TO OPENSHIFT
1:00PM—2:15PM
MONOLITHS TO MICROSERVICES PART 2
2:15PM—3:00PM
REACTIVE MICROSERVICES WITH ECLIPSE VERT.X
AGENDA
3:00PM—3:15PM
BREAK
3:15PM—4:45PM
PREVENT AND DETECT DISTRIBUTED APP ISSUES
4:45PM—5:15PM
PACKAGING MICROSERVICES | API-LED MODERNIZATION
5:15PM—5:30PM
WRAP-UP AND CLOSING REMARKS
12:30PM—1:00PM
LUNCH
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB4
PREREQUISITES
● Laptop with recent browser:
○ Chrome, Firefox, Internet Explorer/Edge 10+, or Safari 9+ installed
● Are a Java developer, architect, or developer team lead interested in learning more about
the latest technologies for modern application development
● Working knowledge of Java programming
● Familiarity with Linux container technology and concepts
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB5
Hands-on Labs: openshift-modernize-apps.katacoda.com
MOVING EXISTING APPS TO THE
CLOUD
Fast
Monoliths
Existing, Java EE,
Spring MVC
Java EE
MSA
Monolith
Decomposition,
Enterprise Java
MSA
Fast Monoliths
(Java EE,
Spring)
Tomcat
Spring Boot
/ MVC
Web
Tomcat,
Spring MVC,
SpringBoot
Greenfield
Reactive Java
Java EE - mono to
micro. / greenfield
Reactive
Reactive Java
/ Polyglot
MSA
Reactive
JS
Reactive
client /
server-side
JavaScript
Greenfield
polymorphic
JavaScript
Server
-less
FaaS
Existing Applications New Applications
Spring
MSA
Java
MSA
Greenfield
Java / Spring
MSA
THE SPECTRUM OF ENTERPRISE APPS
MIGRATION AND MODERNIZATION
APPROACHES
● API-centric polyglot microservices
architecture
● Autonomous development teams
● Agile development, continuous
deployment, DevOps culture
● Containerized & orchestrated
cloud deployments
● Reuse existing functionality and
data as much as possible
● Move existing workloads to a
modern deployment platform
● Apply new processes, products,
and technology to existing apps
MODERNIZING EXISTING APPS DEVELOPING NEW APPLICATIONS
Not a target
APPLICATION MODERNIZATION
Existing Apps
Lift & Shift
Connect & Extend
Repurchase
Rip & Re-write
Review
Analyze
Prioritize
Retire
Retain as is
How much
work required
to rewrite?
Highly scaled and high
rate of change apps
are candidates
Smaller or frozen apps
are candidates here
GENERAL DISTRIBUTION
PATTERNS IN MODERNIZING WORKLOADS
LIFT & SHIFT
● Containerize existing
workloads
● Deploy them on a PaaS
● Keep external integrations
and data on legacy
● Legacy applications have to
be well written and suited
CONNECT & EXTEND
● Legacy remains intact
● New layer - new capabilities
● Deploy on PaaS
● New integration points
between legacy and new
layers (Need for Agile
Integration)
RIP & RE-WRITE
● Legacy is totally replaced
● New interfaces and data
● Use PaaS to run
● Some data and features can
be re-wrapped, but mostly
are retired.
GENERAL DISTRIBUTION
PATTERNS IN MODERNIZING WORKLOADS
LIFT & SHIFT
● Containerize existing
workloads
● Deploy them on a PaaS
● Keep external integrations
and data on legacy
● Legacy applications have to
be well written and suited
CONNECT & EXTEND
● Legacy remains intact
● New layer - new capabilities
● Deploy on PaaS
● New integration points
between legacy and new
layers (Need for Agile
Integration)
RIP & RE-WRITE
● Legacy is totally replaced
● New interfaces and data
● Use PaaS to run
● Some data and features can
be re-wrapped, but mostly
are retired.
FOCUS FOR THIS SECTION
GENERAL DISTRIBUTION
LIFT-AND-SHIFT MONOLITH TO CLOUD
Application Server
HTML Javascript Web
ServiceServiceService
Service Service Service
Data Access
HTML Javascript Web
ServiceServiceService
Service Service Service
Data Access
GENERAL DISTRIBUTION
LIFT-AND-SHIFT MONOLITH TO CLOUD
HTML Javascript Web
ServiceServiceService
Service Service Service
Data Access
CONTAINER
GENERAL DISTRIBUTION
Majestic Monolith
https://m.signalvnoise.com/the-majestic-monolith-29166d022228
GENERAL DISTRIBUTION
MAJESTIC (FAST-MOVING) MONOLITH
● Large organizations have a tremendous amount of resources
invested in existing monolith applications
● Looking for a sane way to capture the benefits of containers
and orchestration without having to complete rewrite
● OpenShift provides the platform for their existing investment
with the benefit of a path forward for microservice based
apps in the future
16
Why migrate to JBoss EAP?
Runtime [1][2]
(framework)
Boot time
server only
Boot time including app
deployment
Memory usage
without load
Memory usage
under load
Measured[3]
throughput
JBoss EAP (Java EE) 2 - 3 sec 3 sec 40 MB 200 - 400 MB 23K req/sec
JBoss EAP (Spring) 2 - 3 sec 7 sec 40 MB 500 - 700 MB 9K req/sec
JBoss WS/Tomcat (Spring) 0 - 1 sec 8 sec 40 MB 0.5 - 1.5 GB 8K req/sec
Fat JAR (Spring Boot) N/A 3 sec 30 MB 0.5 - 2.0 GB 11K req/sec
[1] The microservice is a simple REST application.
[2] All runtimes are using their default settings
[3] The performance test was conducted with ApacheBench using 500K request with 50 users and keep-alive enabled.
Don’t believe it? Try it out yourself http://bit.ly/modern-java-runtimes
LAB: MOVING EXISTING APPS TO THE
CLOUD
GOAL FOR LAB
In this lab you will learn:
● How to use lab environment for today
● How to migrate an existing legacy Java EE application
(CoolStore) from Weblogic to JBoss EAP using Red Hat
Application Migration Toolkit
● How to deploy the result to OpenShift container platform to
create a Fast Moving Monolith
● Different alternatives to building and deploying an
application
COOLSTORE APPLICATION
COOLSTORE APPLICATION
Data Tier
Presentation Tier
Business Logic Tier
<<SLSB>>
Inventory
Service
<<SFSB>>
ShoppingCart
Service
<<SLSB>>
Catalog
Service
Database
<<REST>>
Product-
Endpoint
<<SLSB>>
Promo
Service
<<REST>>
Cart-
Endpoint
<<SLSB>>
Shipping
Service
<<AngularJS>>
Web
<<SLSB & MDB>>
OrderService
<<REST>>
Order-
Endpoint
Red Hat Application Migration ToolkitCatalyze large scale application
modernizations and migrations
● Automate analysis
● Support effort estimation
● Accelerate code migration
● Free & Open Source
IBM
WebSphere AS
Oracle
WebLogic Server
JBoss EAP
upgrades
Cloud readiness,
containerization
Pluggable:
your own rules
Java EE
upgrades
Eclipse
plugin
Command line
interface
Web
console
LAB: MOVING EXISTING APPS TO THE CLOUD
SCENARIO 1 GETTING STARTED WITH THIS COURSE
SCENARIO 2 MOVING EXISTING APPS TO THE CLOUD
+
WEB: openshift-modernize-apps.katacoda.com
SLIDES (PDF): bit.ly/m2m-slides
WRAP-UP AND DISCUSSION
RESULT OF LAB
In this lab you:
● Familiarized yourself with the Lab environment
● Migrated the CoolStore monolith from Weblogic to JBoss
EAP using Red Hat Application Migration Toolkit
● Created a new development project on OpenShift
● Deployed the migrated app to OpenShift using a Template
and a Binary Build
● In the next lab you will explore OpenShift deeper as a
developer
OpenShift
coolstore-dev
Coolstore
monolith
Coolstore
database
(dev)
Coolstore
Binary
mvn package
RESULT OF LAB
Application Modernization & Migration
BENEFITS
Red Hat provides the most comprehensive
technologies, tools and services to support you
TODAY and TOMORROW
APPROACH
COMBINE TRANSFORMATION
FACTORY
RED HAT APPLICATION MIGRATION &
MODERNIZATION PROGRAM
Application Modernization & Migration
JUMPSTART YOUR MODERNIZATION WITH
RED HAT OPEN INNOVATIONS LABS
INNOVATION
ACCELERATED
DEVELOP CONTEMPORARY APPS
• Develop on PaaS environment
• Transform how you design and develop apps
• Adopt lean and agile principles
• Master DevOps practices
MODERNIZE TRADITIONAL APPS
• Extend applications
• Optimize applications
• Scale applications
• Expose to orchestration
COLLABORATION
Space to work,
innovate, and discuss
RESIDENCY
An eight-week accelerated
teaming engagement
COMMUNITY INCUBATION
Communities
supporting innovation
A DEVELOPER INTRODUCTION TO
OPENSHIFT
CONTAINERS & CLOUD-NATIVE ROADSHOW29
A secure and enterprise-grade container
application platform based on Kubernetes for
traditional and cloud-native applications
CONTAINERS & CLOUD-NATIVE ROADSHOW30
CLOUD-NATIVE CAPABILITIES WITH
RED HAT OPENSHIFT
ANY
CONTAINER
Amazon Web Services Microsoft Azure Google CloudOpenStackDatacenterLaptop
ANY
INFRASTRUCTURE
APPLICATION LIFECYCLE MANAGEMENT
CONTAINER ORCHESTRATION AND MANAGEMENT
ENTERPRISE CONTAINER HOST
CONTAINERS & CLOUD-NATIVE ROADSHOW31
CLOUD-NATIVE CAPABILITIES WITH
RED HAT OPENSHIFT
APPLICATION LIFECYCLE MANAGEMENT
CONTAINER ORCHESTRATION AND MANAGEMENT
ENTERPRISE CONTAINER HOST
Service Discovery Routing Load Balancing
Security
Monitoring
Conf Management Log Management Multi-tenancy
Self-ServiceBuild Automation Deploy Automation CI/CD
ANY
CONTAINER
Amazon Web Services Microsoft Azure Google CloudOpenStackDatacenterLaptop
ANY
INFRASTRUCTURE
A container is the smallest compute unit
CONTAINER
containers are created from
container images during a build
CONTAINER
CONTAINER
IMAGE
BINARY RUNTIME
IMAGE REGISTRY
container images are stored in
an image registry
CONTAINER
CONTAINER
IMAGE
CONTAINER
IMAGE
CONTAINER
IMAGE
CONTAINER
IMAGE
CONTAINER
IMAGE
CONTAINER
IMAGE
an image repository contains all versions of an
image in the image registry
IMAGE REPOSITORY
frontend:latest
frontend:2.0
frontend:1.1
frontend:1.0
CONTAINER
IMAGE
mongo:latest
mongo:3.7
mongo:3.6
mongo:3.4
CONTAINER
IMAGE
myregistry/frontend myregistry/mongo
PODPOD
containers are wrapped in pods which are
units of deployment and management, and
share a common network address
CONTAINER CONTAINERCONTAINER
IP: 10.1.0.11 IP: 10.1.0.55
pods configuration is defined
in a deployment
image name
replicas
labels
cpu
memory
storage
POD
CONTAINER
POD
CONTAINER
POD
CONTAINER
DEPLOYMENT
NODE (RHEL)
pods are deployed to and run on nodes
POD
CONTAINER
POD
CONTAINER
POD
CONTAINER
NODE (RHEL)
POD
CONTAINER
POD
CONTAINER
POD
CONTAINER
POD
services provide internal load-balancing and
service discovery across pods
CONTAINER
POD
CONTAINER
POD
CONTAINER
BACKEND SERVICE
POD
CONTAINER
role: backend
role: backendrole: backendrole: backendrole: frontend
POD
apps can talk to each other via services
CONTAINER
POD
CONTAINER
POD
CONTAINER
BACKEND SERVICE
POD
CONTAINER
role: backend
role: backendrole: backendrole: backendrole: frontend
Invoke
Backend API
POD
routes add services to the external load-balancer and
provide readable urls for the app
CONTAINER
POD
CONTAINER
POD
CONTAINER
BACKEND SERVICE
ROUTE
app-prod.mycompany.com
> curl http://app-prod.mycompany.com
projects isolate apps across environments,
teams, groups and departments
POD
C
POD
C
POD
C
PAYMENT DEV
POD
C
POD
C
POD
C
PAYMENT PROD
POD
C
POD
C
POD
C
CATALOG
POD
C
POD
C
POD
C
INVENTORY
❌
❌❌
templates define a blueprint for an
application that can be instantiated within
a project
TEMPLATE (name=”foo”)
source
output
triggers
name
labels
strategy
BUILD CONFIG
image name
replicas
labels
cpu
memory
storage
DEPLOYMENT
name
labels
port
targetPort
selectors
protocol
SERVICE
name
destination
termination
hostname
ROUTE
name
labels
repo
IMAGESTREAM
$ oc new-app foo
LAB: DEVELOPER INTRODUCTION TO
OPENSHIFT
CURRENT STATE
OpenShift
coolstore-dev
Coolstore
monolith
Coolstore
database
(dev)
Coolstore
Binary
mvn package
GOAL FOR LAB
In this lab you will learn:
● Important OpenShift concepts for developers
● How OpenShift makes developers and architects happier
● How to do efficient round-trip development:
○ Separate dev from prod environments
○ Quick deployments using rsync / port-forwarding
○ Promoting apps using CI/CD Pipelines
LAB: DEVELOPER INTRO TO OPENSHIFT
SCENARIO 3 A DEVELOPER INTRODUCTION TO OPENSHIFT
WEB: openshift-modernize-apps.katacoda.com
SLIDES (PDF): bit.ly/m2m-slides
WRAP-UP AND DISCUSSION
RESULT OF LAB
In this lab you learned how to:
● Do quick deployments with oc rsync
● Create a production environment separate from dev
● Promote tested/verified builds between environments using
OpenShift pipeline builds
You should now have two projects (dev and prod) running the
same CoolStore app! In the next lab we will begin the process of
breaking the monolith up into microservices.
DESIRED RESULT OF SCENARIO 3
OpenShift
coolstore-dev
Coolstore
monolith
Coolstore
database
(dev)
Coolstore
Binary
coolstore-prod
Coolstore
monolith
Coolstore
database
(prod)
Pipeline
Promotion
mvn package
LEARN MORE: learn.openshift.com
PART 3: MONOLITHS TO
MICROSERVICES WITH JAVA EE AND
SPRING BOOT
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB53
WHY MONOLITH TO MICROSERVICES
Break things down (organizations, teams,
IT systems, etc) down into smaller pieces
for greater parallelization and autonomy
and focus on reducing time to value.
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB54
REDUCING TIME TO VALUE
Month
0
Month
3
Week
1
Week
2
Week
3
Week
4
Week
5
Week
6
Week
7
Week
8
Week
9
Week
10
Week
11
Monolith Lifecycle
Fast Moving Monolith
Microservices
Optimizing for Speed
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB
http://martinfowler.com/bliki/MonolithFirst.html
Monolith First?
http://martinfowler.com/bliki/MonolithFirst.html
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB5656
THE BIGGER PICTURE: THE PATH TO
CLOUD-NATIVE APPS
A DIGITAL DARWINISM
SELF-SERVICE
ON-DEMAND
INFRA
RE-ORG TO
DEVOPS
AUTOMATION
CONTINUOUS
DELIVERY
ADVANCED
DEPLOYMENT
TECHNIQUES
MICROSERVICES
FAST
MONOLITH
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB57
● In this lab, you will begin to ‘strangle’ the coolstore monolith by implementing its services as
external microservices, split along business boundaries
● Once implemented, traffic destined to the original monolith’s services will be redirected (via
OpenShift software-defined routing) to the new services
STRANGLING THE MONOLITH
Node.js
Web
WildFly Swarm
Inventory
Vert.x
Cart
Runtime
Service
Runtime
Service
Vert.x
Orders
Spring Boot
Catalog
JBoss EAP
HTML Javascript Web
CartCatalogInventory
Promo Ratings Orders
Data Access
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB58
STRANGLING THE MONOLITH
● Strangling - incrementally replacing
functionality in app with something better
(cheaper, faster, easier to maintain).
● As functionality is replaced, “dead” parts of
monolith can be removed/retired.
● You can also wait for all functionality to be
replaced before retiring anything!
● Business stakeholders find this attractive as
new functionality is added more rapidly during
strangulation. Time
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB
RHOAR PRODUCT ARCHITECTURE
RHOAR RUNTIMES
(Container images, Maven Artifacts, Serverless)
MICROPROFILE
/ JAVA EE
OPENSHIFT SERVICES
REACTIVE
(vert.x)
JAVASCRIPT SERVLET APPS
OpenShift.io
(Developer
SaaS)
Generators
IDE
etc.
Management
APM
Metrics
Service
Discovery
Config.
Logging
Health
Check
Load
Balancing
CI/CDSSOMessaging IMDG API Mgmt
OPENWHISK
SERVICE MESH
Istio Pilot Istio Mixer Istio Auth
Envoy Proxy Envoy Proxy Envoy Proxy Envoy Proxy
Service
Catalog
== Future
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB
TOMCAT SIMPLICITY
JAVASCRIPT FLEXIBILITY
SERVLET APPS
REACTIVE SYSTEMS
JAVA MICROSERVICES
ENTERPRISE JAVA
SPRING
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB
• Microservices for Developers using Spring Framework
• An opinionated approach to building Spring applications
• Historical alternative to Java EE
• Getting started experience
• Spring MVC / DI / Boot most popular
MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB
Spring in RHOAR
• It’s the same Spring you know and love
• Tested and Verified by Red Hat QE
– Spring Boot, Spring Cloud Kubernetes, Ribbon, Hystrix
• Red Hat components fully supported
– Tomcat, Hibernate, CXF, SSO (Keycloak), Messaging (AMQ), …
• Native Kubernetes/OpenShift integration (Spring Cloud)
• Service Discovery via k8s (DNS), Ribbon
• Spring Config via ConfigMap
• Developer Tooling (launch.openshift.io, starters)
• Additional planned support for
– Transactions (Naryana)
● Health Checks (actuator)
● Externalized Config (spring-cloud-kubernetes)
● Client-side discovery / load balancing (Eureka/Kubernetes)
● Circuit Breaking / Bulkheading (Hystrix)
● Logging / Monitoring / Tracing / Metrics
● Secure deployments with Keycloak
● API Documentation (Swagger)
Cloud Native Support in Spring
WILDFLY SWARM
My Svc
Java EE microservices
● Leverage Java EE expertise
● Open standard
● Microservices focus
● Optimized for OpenShift
● Super lightweight
● Tooling for Developers
● MicroProfile Implementation
My
Svc
JAX-RS
$ java -jar my_microservice.jar
● A tangible unit providing a specific piece of functionality
● Embodied in a maven artifact
● To support the compositional aspect in WF Swarm
● Provides the “runtime” capabilities
● Means to add API dependencies (e.g. JAX-RS)
● Means to configure the system
○ With reasonable defaults
● Means to discover other components (topology)
● Means to alter deployments (e.g. keycloak)
● Can be auto-detected or explicitly declared
WildFly Swarm “pieces” - Fractions
● Health Checks
● Externalized Config
● Client-side discovery / load balancing
● Circuit Breaking / Bulkheading
● Logging / Monitoring / Tracing / Metrics
● Secure deployments with Keycloak
● MicroProfile
● API Documentation
Cloud Native Support in WildFly Swarm
Build microsevices
● Embeddable (Fat Jar)
● Lightweight
● Modular & extensible
● Built from WildFly
(Trusted and Reliable)
Supported Specifications
Java EE 7 Web Profile MicroProfile 1.0
Tested and Verified
Hystrix Ribbon MySQL Oracle DB
Metrics
Additional Supported Fractions
Health
Configuration
Topology
Monitor
Keycloak
Upstream (Unsupported)
Flyway
Logstash
Fluentd
Swagger
JMS
Vert.x Integration
Consul
Spring
Jolokia
Infinispan
jGroups
WildFly Swarm and RHOAR
● Defines open source Java microservices specifications
● Industry Collaboration - Red Hat, IBM, Payara, Tomitribe, London Java Community,
SouJava, Oracle, Hazelcast, Fujitsu, SmartBear...
● WildFly Swarm is Red Hat’s implementation
● Minimum footprint for Enterprise Java cloud-native services (v1.3) :
JSON-P 1.0
Health Check
1.0
CDI 1.2 JAX-RS 2.0
JWT
Propagation 1.0
Fault
Tolerance 1.0
Metrics 1.0
Config 1.1 OpenTracing 1.0
OpenAPI 1.0
RestClient 1.0
New in 1.3:
LAB: MONOLITHS TO MICROSERVICES
WITH JAVA EE AND SPRING BOOT
GOAL FOR LAB
In this lab you will learn:
● How Red Hat OpenShift and Red Hat OpenShift Application
Runtimes (RHOAR) help jumpstart app modernization
● Benefits and challenges of microservices
● How to transform existing monolithic applications to
microservices using strangler pattern and 12-factor app
patterns.
● Use modern app dev frameworks like WildFly Swarm and
Spring Boot to implement microservice applications on
OpenShift
CURRENT STATE - THE MONOLITH
OpenShift
coolstore-dev
Coolstore
monolith
Coolstore
database
(dev)
Coolstore
Binary
coolstore-prod
Coolstore
monolith
Coolstore
database
(prod)
Pipeline
Promotion
Debugger
mvn package
LAB: MONOLITHS TO MICROSERVICES WITH
JAVA EE AND SPRING BOOT
SCENARIO 4 TRANSFORMING AN EXISTING MONOLITH (PART 1)
SCENARIO 5 TRANSFORMING AN EXISTING MONOLITH (PART 2)
+
WRAP-UP AND DISCUSSION
RESULT OF LAB
In this lab you learned how to:
● Implement a Java EE microservice using WildFly Swarm
● Implement a Java EE microservice using Spring Boot
● Develop container-based testing
● Add microservice concerns like Health checks, externalized
configuration and circuit breaking
● Use the strangler pattern to slowly migrate functionality
from monolith to microservices
DESIRED RESULT OF
LAB
OpenShift
coolstore-prod
Coolstore
monolith
Coolstore
database
(prod)
inventory
Inventory
microservice
Inventory
database
catalog
Catalog
microservice
Catalog
database
UI
REACTIVE MICROSERVICES
INSERT DESIGNATOR, IF NEEDED
The 2 faces of Reactive
Reactive
A software showing
responses to stimuli
Reactive
Systems
Reactive
Programming
Akka, Vert.x Reactor, RX, Vert.x
Actor, Agent
Autonomic
Systems
Data flow,
Functional
programming
INSERT DESIGNATOR, IF NEEDED
Execution Model (single core)
Blocking
● Example: CGI, early versions of server
side JavaScript.
● Can only scale horizontally
Multi thread
● Example: Java EE, Tomcat, Spring (non
reactive)
● Scales horizontally and vertically
Non blocking
● Example: NodeJS, Eclipse Vert.x, Akka,
Spring reactive
● Scales horizontally and vertically
Single Thread
Blocking
Single Thread
Non-blocking
Multi thread
= Execution Thread
= Request 1 = Request 2 = Request 3
Time
Reactive Systems
Request 1 waiting for DB
Multi Thread
Non-blocking
INSERT DESIGNATOR, IF NEEDED82
Eclipse Vert.x
Vert.x is a toolkit to build distributed and reactive systems
● Asynchronous Non-Blocking development model
● Simplified concurrency (event loop)
● Reactive microservice, Web applications, IOT
● Ideal high-volume, low-latency applications
● Un-opinionated
● Understands clustering in its core architecture
Home - http://www.vertx.io
INSERT DESIGNATOR, IF NEEDED83
VERT.X EVENT LOOP
EVENT
QUEUE
EVENT
LOOP
WORKER
THREADS
async
Handle Thousands of Requests
With Few Threads
response
INSERT DESIGNATOR, IF NEEDED84
Vert.x Ecosystem
INSERT DESIGNATOR, IF NEEDED85
● Explore Vert.x Maven project
● Create an API gateway
● Run Vert.x locally
● Deploy Vert.x on OpenShift
LAB 4: Reactive Microservices with Eclipse Vert.x
LAB: REACTIVE MICROSERVICES
WITH ECLIPSE VERT.X
GOAL FOR LAB
In this lab you will learn:
● How Event-based architectures supercharge microservice
apps
● Use cases for reactive applications
● Develop microservices using Eclipse Vert.x
● Interact with other microservices without blocking
● Learn the basics of Reactive programming
CURRENT STATE
OpenShift
coolstore-prod
Coolstore
monolith
Coolstore
database
(prod)
inventory
Inventory
microservice
Inventory
database
UI
Future Services
Future Services Future Services
Future Services
catalog
Catalog
microservice
Catalog
database
LAB: REACTIVE MICROSERVICES
SCENARIO 6 BUILDING REACTIVE MICROSERVICES
WRAP-UP AND DISCUSSION
RESULT OF LAB
In this lab you learned how to:
● Build reactive web application that are non-blocking
● Asynchronously call out to external service using Callbacks,
Handlers and Futures
● Deploy the application to OpenShift
RESULT OF LAB
OpenShift
coolstore-prod
Coolstore
monolith
Coolstore
database
(prod)
inventoryZ
Inventory
microservice
Inventory
database
catalog
Catalog
microservice
Catalog
database
cart
Cart
microservice
Cart
database
UI
checkout
Future Services
ECLIPSE VERT.X OFFER MUCH MORE
INSERT DESIGNATOR, IF NEEDED94
SERVICE DISCOVERY
Service
Provider
Service
Provider
Service
Provider
Service
Consumer
Service
Consumer
Service
Consumer
Vert.x
Service
Registry
publish lookup
Bridge Bridge Bridge
import
Kubernetes Consul Other
INSERT DESIGNATOR, IF NEEDED
Vert.x vs NodeJS
2 threads per core
NodeJS Vert.x
Vert.x
● Multi-threaded
● Polyglot (Java, JavaScript, Scala, and more)
● Supports reactive programming using RxJava, RxJS, etc
NodeJS
● Single threaded
● JavaScript only
● Support reactive programming using RxJS
INSERT DESIGNATOR, IF NEEDED96
FREE E-BOOKS
http://vertx.io/docs/
PART 5: RESILIENT DISTRIBUTED
APPS
INSERT DESIGNATOR, IF NEEDED98
DISTRIBUTED SERVICES ARCHITECTURES
Benefits (when implemented correctly):
● Performance
● Reliability
● Resiliency
● Extensibility
● Availability
● Robustness
INSERT DESIGNATOR, IF NEEDED99
DISTRIBUTED SERVICES ARCHITECTURES
Fallacies of Distributed Computing
● The network is reliable.
● Latency is zero.
● Bandwidth is infinite.
● The network is secure.
● Topology doesn't change.
● There is one administrator.
● Transport cost is zero.
● The network is homogeneous.
wikipedia.org/wiki/Fallacies_of_distributed_computing
INSERT DESIGNATOR, IF NEEDED100
DISTRIBUTED SERVICES ARCHITECTURES
Applications must deal with
● Unpredictable failure modes
● End-to-end application correctness
● System degradation
● Topology changes
● Elastic/ephemeral/transient resources
A
E
B C
F G
D
H
I
Client
INSERT DESIGNATOR, IF NEEDED101
MICROSERVICES == DISTRIBUTED COMPUTING
INSERT DESIGNATOR, IF NEEDED102
Example
ACME Laptop 128GB SSD,
8GB RAM
$323.56
Touchscreen
128GB SSD
8GB RAM
Core i3
Windows 10
Add to Cart
In-Store Pickup (15 available)
Raleigh, Central Ave, Store #1123
Recommendations
Pricing Engine
Reviews
Details/Specifications
Location-based availability
People who purchased also...
INSERT DESIGNATOR, IF NEEDED103
Chaining
INSERT DESIGNATOR, IF NEEDED104
Chaining (Fail)
X
INSERT DESIGNATOR, IF NEEDED105
Chaining (Cascading Fail)
XXXX
X
INSERT DESIGNATOR, IF NEEDED106
POSSIBLE SOLUTIONS
Today, Developers do this:
● Circuit Breaking
● Bulkheading
● Timeouts/Retries
● Service Discovery
● Client-side Load Balancing
INSERT DESIGNATOR, IF NEEDED107
TOO MUCH INFRASTRUCTURE IN BUSINESS LOGIC
INSERT DESIGNATOR, IF NEEDED
spring-cloud-netflix-hystrix
spring-cloud-netflix-zuul
spring-cloud-netflix-eureka-client
spring-cloud-netflix-ribbon
spring-cloud-netflix-atlas
spring-cloud-netflix-spectator
spring-cloud-netflix-hystrix-stream
...
@Enable....150MagicThings
org.wildfly.swarm.hystrix
org.wildfly.swarm.ribbon
org.wildfly.swarm.topology
org.wildfly.swarm.camel-zookeeper
org.wildfly.swarm.hystrix
...
vertx-circuit-breaker
vertx-service-discovery
vertx-dropwizard-metrics
Vertx-zipkin
...
+ Node.js
+ Go
+ Python
+ Ruby
+ Perl
+ ….
BUT I’M USING...
INSERT DESIGNATOR, IF NEEDED
SIDECARS
PODS WITH TWO CONTAINERS
Pod
Container
JVM
Service A
Side-car Container
Pod
Container
JVM
Service B
Side-car Container
Pod
Container
JVM
Service C
Side-car Container
● Service proxy
● C++. fast
● L3&4 network filter
● Service discovery
● Health checking
● Load balancing
● Stats, metrics, tracing
Istio - Sail
(Kubernetes - Helmsman or ship’s pilot)
ISTIO - A ROBUST SERVICE MESH FOR
MICROSERVICES
Further Reading :
https://blog.openshift.com/red-hat-istio-launch/
https://istio.io/blog/istio-service-mesh-for-microservices.html
http://blog.christianposta.com/microservices/the-hardest-part-of-microservices-calling-your-services/
Key Features
● Intelligent routing and load balancing
● Fleet-wide, in-depth observability
● Resiliency across languages and platforms
● Fault injection
● Developer productivity
● Policy driven ops
● Circuit breaking, outlier detection
● Timeouts/retries
● Rate limiting
● Secure by default
● Incremental, unobtrusive adoptionImage from Christian Posta
*
* App-specific fallback logic belongs here
Istio Control Plane
ISTIO - A ROBUST SERVICE MESH FOR
MICROSERVICES
Istio Pilot Istio Mixer Istio Auth
Pod
Container
Service A
Envoy Proxy
Pod
Container
Service A
Envoy Proxy
Pod
Container
Service A
Envoy ProxyIstio Data
Plane
● service discovery
● load balancing
● TLS termination
● HTTP/2 & gRPC proxying,
● circuit breakers,
● health checks,
● staged rollouts fault injection
● rich metrics.
● access control
● usage policies
● telemetry
collection
● traffic mgmt
● discovery
● authentication
● policy enforcement
● Id & credentials
MICROSERVICES 3.0 - SERVICE MESH
Code Independent:
● Intelligent Routing and Load-Balancing
○ A/B Tests
○ Canary Releases
○ Dark Launches
● Distributed Tracing
● Circuit Breakers
● Fine grained Access Control
● Telemetry, metrics and Logs
● Fleet wide policy enforcement
Config Server
NETFLIX
Ribbon
Jaeger Istio
LAB: DETECTING AND PREVENTING
ISSUES IN DISTRIBUTED APPS WITH
ISTIO
GOAL FOR LAB
In this lab you will learn:
● How to install Istio onto OpenShift Container Platform
● How to deploy apps with sidecar proxies
● How to generate and visualize deep metrics for apps
● How to alter routing dynamically
● How to inject faults for testing
● How to do rate limiting
● How Istio implements circuit breaking and distributed tracing
SAMPLE APP: “BookInfo”
Ingress
Proxy
P
R
O
X
Y
Product
Page
Pilot Mixer Prometheus
Jaeger
P
R
O
X
Y
Details
P
R
O
X
Y
Ratings
Proxy
Reviews
v1
Proxy
Reviews
v2
Proxy
Reviews
v3
SAMPLE APP: “BookInfo”
LAB: DETECTING AND PREVENTING ISSUES IN
DISTRIBUTED APPS WITH ISTIO
SCENARIO 7 PREVENT AND DETECT ISSUES IN A DISTRIBUTED SYSTEM
WRAP-UP AND DISCUSSION
RESULT OF LAB
In this lab you learned:
● How to install Istio onto OpenShift Container Platform
● How to deploy apps with sidecar proxies
● How to generate and visualize deep metrics for apps
● How to alter routing dynamically
● How to inject faults for testing
● How to do rate limiting
● How Istio implements circuit breaking and distributed
tracing
● Use cases for service mesh
MICROSERVICES 4.0?
Service Microservice Function
f( )
> Single Purpose
> Stateless
> Independently Scalable
> Automated
> Single Action
> Event-sourced
> Ephemeral
> Autonomous
> Loosely-coupled
SERVERLESS PROJECTS / SERVICES
123
http://funcatron.org
CLOUD FUNCTIONS BETA
serverless-docker
THANK YOU
plus.google.com/+RedHat
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHatNews

More Related Content

What's hot

Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREAraf Karsh Hamid
 
OpenShift Overview
OpenShift OverviewOpenShift Overview
OpenShift Overviewroundman
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDSunnyvale
 
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Edureka!
 
GitOps is IaC done right
GitOps is IaC done rightGitOps is IaC done right
GitOps is IaC done rightChen Cheng-Wei
 
Overview of API Management Architectures
Overview of API Management ArchitecturesOverview of API Management Architectures
Overview of API Management ArchitecturesNordic APIs
 
Platform engineering 101
Platform engineering 101Platform engineering 101
Platform engineering 101Sander Knape
 
A microservice approach for legacy modernisation
A microservice approach for legacy modernisationA microservice approach for legacy modernisation
A microservice approach for legacy modernisationluisw19
 
Platform Engineering
Platform EngineeringPlatform Engineering
Platform EngineeringOpsta
 
EKS vs GKE vs AKS - Evaluating Kubernetes in the Cloud
EKS vs GKE vs AKS - Evaluating Kubernetes in the CloudEKS vs GKE vs AKS - Evaluating Kubernetes in the Cloud
EKS vs GKE vs AKS - Evaluating Kubernetes in the CloudDevOps.com
 
The Three Pillars of Agile Integration: Connector, Container & API
The Three Pillars of Agile Integration: Connector, Container & APIThe Three Pillars of Agile Integration: Connector, Container & API
The Three Pillars of Agile Integration: Connector, Container & APIJudy Breedlove
 
Red Hat Openshift on Microsoft Azure
Red Hat Openshift on Microsoft AzureRed Hat Openshift on Microsoft Azure
Red Hat Openshift on Microsoft AzureJohn Archer
 
Platform Engineering: Manage your infrastructure using Kubernetes and Crossplane
Platform Engineering: Manage your infrastructure using Kubernetes and CrossplanePlatform Engineering: Manage your infrastructure using Kubernetes and Crossplane
Platform Engineering: Manage your infrastructure using Kubernetes and CrossplaneAhmed AbouZaid
 
Amazon EKS - Elastic Container Service for Kubernetes
Amazon EKS - Elastic Container Service for KubernetesAmazon EKS - Elastic Container Service for Kubernetes
Amazon EKS - Elastic Container Service for KubernetesAmazon Web Services
 
The Architecture of an API Platform
The Architecture of an API PlatformThe Architecture of an API Platform
The Architecture of an API PlatformJohannes Ridderstedt
 

What's hot (20)

"DevOps > CI+CD "
"DevOps > CI+CD ""DevOps > CI+CD "
"DevOps > CI+CD "
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SRE
 
OpenShift Overview
OpenShift OverviewOpenShift Overview
OpenShift Overview
 
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCDKubernetes GitOps featuring GitHub, Kustomize and ArgoCD
Kubernetes GitOps featuring GitHub, Kustomize and ArgoCD
 
Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
 
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
 
GitOps is IaC done right
GitOps is IaC done rightGitOps is IaC done right
GitOps is IaC done right
 
Intro to Knative
Intro to KnativeIntro to Knative
Intro to Knative
 
Overview of API Management Architectures
Overview of API Management ArchitecturesOverview of API Management Architectures
Overview of API Management Architectures
 
Platform engineering 101
Platform engineering 101Platform engineering 101
Platform engineering 101
 
IaC.pptx
IaC.pptxIaC.pptx
IaC.pptx
 
Devops | CICD Pipeline
Devops | CICD PipelineDevops | CICD Pipeline
Devops | CICD Pipeline
 
A microservice approach for legacy modernisation
A microservice approach for legacy modernisationA microservice approach for legacy modernisation
A microservice approach for legacy modernisation
 
Platform Engineering
Platform EngineeringPlatform Engineering
Platform Engineering
 
EKS vs GKE vs AKS - Evaluating Kubernetes in the Cloud
EKS vs GKE vs AKS - Evaluating Kubernetes in the CloudEKS vs GKE vs AKS - Evaluating Kubernetes in the Cloud
EKS vs GKE vs AKS - Evaluating Kubernetes in the Cloud
 
The Three Pillars of Agile Integration: Connector, Container & API
The Three Pillars of Agile Integration: Connector, Container & APIThe Three Pillars of Agile Integration: Connector, Container & API
The Three Pillars of Agile Integration: Connector, Container & API
 
Red Hat Openshift on Microsoft Azure
Red Hat Openshift on Microsoft AzureRed Hat Openshift on Microsoft Azure
Red Hat Openshift on Microsoft Azure
 
Platform Engineering: Manage your infrastructure using Kubernetes and Crossplane
Platform Engineering: Manage your infrastructure using Kubernetes and CrossplanePlatform Engineering: Manage your infrastructure using Kubernetes and Crossplane
Platform Engineering: Manage your infrastructure using Kubernetes and Crossplane
 
Amazon EKS - Elastic Container Service for Kubernetes
Amazon EKS - Elastic Container Service for KubernetesAmazon EKS - Elastic Container Service for Kubernetes
Amazon EKS - Elastic Container Service for Kubernetes
 
The Architecture of an API Platform
The Architecture of an API PlatformThe Architecture of an API Platform
The Architecture of an API Platform
 

Similar to Monoliths to microservices workshop

Moving existing apps to the cloud
 Moving existing apps to the cloud Moving existing apps to the cloud
Moving existing apps to the cloudTiera Fann, MBA
 
App Mod 01: Moving existing apps to the cloud
App Mod 01: Moving existing apps to the cloudApp Mod 01: Moving existing apps to the cloud
App Mod 01: Moving existing apps to the cloudJudy Breedlove
 
Transformacion e innovacion digital Meetup - Application Modernization and Mi...
Transformacion e innovacion digital Meetup - Application Modernization and Mi...Transformacion e innovacion digital Meetup - Application Modernization and Mi...
Transformacion e innovacion digital Meetup - Application Modernization and Mi...José Román Martín Gil
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsVMware Tanzu
 
Wellington DevOps: Bringing Your Applications into the Future with Habitat
Wellington DevOps: Bringing Your Applications into the Future with HabitatWellington DevOps: Bringing Your Applications into the Future with Habitat
Wellington DevOps: Bringing Your Applications into the Future with HabitatMatt Ray
 
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...VMworld
 
Modernizing Applications with Microservices and DC/OS (Lightbend/Mesosphere c...
Modernizing Applications with Microservices and DC/OS (Lightbend/Mesosphere c...Modernizing Applications with Microservices and DC/OS (Lightbend/Mesosphere c...
Modernizing Applications with Microservices and DC/OS (Lightbend/Mesosphere c...Lightbend
 
How to Migrate Applications Off a Mainframe
How to Migrate Applications Off a MainframeHow to Migrate Applications Off a Mainframe
How to Migrate Applications Off a MainframeVMware Tanzu
 
Red Hat Container Strategy
Red Hat Container StrategyRed Hat Container Strategy
Red Hat Container StrategyRed Hat Events
 
Disruptive Trends in Application Development
Disruptive Trends in Application DevelopmentDisruptive Trends in Application Development
Disruptive Trends in Application DevelopmentWaveMaker, Inc.
 
Java Application Modernization Patterns and Stories from the IBM Garage
Java Application Modernization Patterns and Stories from the IBM GarageJava Application Modernization Patterns and Stories from the IBM Garage
Java Application Modernization Patterns and Stories from the IBM GarageHolly Cummins
 
Red Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform OverviewRed Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform OverviewJames Falkner
 
Devops automation using Docker, Kubernetes and Openshift
Devops automation using Docker, Kubernetes and OpenshiftDevops automation using Docker, Kubernetes and Openshift
Devops automation using Docker, Kubernetes and OpenshiftJonathan Tse
 
SoCal DevOps Meetup 1/26/2017 - Habitat by Chef
SoCal DevOps Meetup 1/26/2017 - Habitat by ChefSoCal DevOps Meetup 1/26/2017 - Habitat by Chef
SoCal DevOps Meetup 1/26/2017 - Habitat by ChefTrevor Hess
 
DevOps LA Meetup Intro to Habitat
DevOps LA Meetup Intro to HabitatDevOps LA Meetup Intro to Habitat
DevOps LA Meetup Intro to HabitatJessica DeVita
 
App Mod 03: Monoliths to microservices with java ee and spring boot
App Mod 03: Monoliths to microservices with java ee and spring bootApp Mod 03: Monoliths to microservices with java ee and spring boot
App Mod 03: Monoliths to microservices with java ee and spring bootJudy Breedlove
 
Automation, Audits, and Apps Tour
Automation, Audits, and Apps TourAutomation, Audits, and Apps Tour
Automation, Audits, and Apps TourChef
 
Embracing Containers and Microservices for Future Proof Application Moderniza...
Embracing Containers and Microservices for Future Proof Application Moderniza...Embracing Containers and Microservices for Future Proof Application Moderniza...
Embracing Containers and Microservices for Future Proof Application Moderniza...Marlabs
 
Moving existing apps to the cloud
 Moving existing apps to the cloud Moving existing apps to the cloud
Moving existing apps to the cloudRam Maddali
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science PlatformDecision Science Community
 

Similar to Monoliths to microservices workshop (20)

Moving existing apps to the cloud
 Moving existing apps to the cloud Moving existing apps to the cloud
Moving existing apps to the cloud
 
App Mod 01: Moving existing apps to the cloud
App Mod 01: Moving existing apps to the cloudApp Mod 01: Moving existing apps to the cloud
App Mod 01: Moving existing apps to the cloud
 
Transformacion e innovacion digital Meetup - Application Modernization and Mi...
Transformacion e innovacion digital Meetup - Application Modernization and Mi...Transformacion e innovacion digital Meetup - Application Modernization and Mi...
Transformacion e innovacion digital Meetup - Application Modernization and Mi...
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
 
Wellington DevOps: Bringing Your Applications into the Future with Habitat
Wellington DevOps: Bringing Your Applications into the Future with HabitatWellington DevOps: Bringing Your Applications into the Future with Habitat
Wellington DevOps: Bringing Your Applications into the Future with Habitat
 
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
VMworld 2013: Best Practices for Application Lifecycle Management with vCloud...
 
Modernizing Applications with Microservices and DC/OS (Lightbend/Mesosphere c...
Modernizing Applications with Microservices and DC/OS (Lightbend/Mesosphere c...Modernizing Applications with Microservices and DC/OS (Lightbend/Mesosphere c...
Modernizing Applications with Microservices and DC/OS (Lightbend/Mesosphere c...
 
How to Migrate Applications Off a Mainframe
How to Migrate Applications Off a MainframeHow to Migrate Applications Off a Mainframe
How to Migrate Applications Off a Mainframe
 
Red Hat Container Strategy
Red Hat Container StrategyRed Hat Container Strategy
Red Hat Container Strategy
 
Disruptive Trends in Application Development
Disruptive Trends in Application DevelopmentDisruptive Trends in Application Development
Disruptive Trends in Application Development
 
Java Application Modernization Patterns and Stories from the IBM Garage
Java Application Modernization Patterns and Stories from the IBM GarageJava Application Modernization Patterns and Stories from the IBM Garage
Java Application Modernization Patterns and Stories from the IBM Garage
 
Red Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform OverviewRed Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform Overview
 
Devops automation using Docker, Kubernetes and Openshift
Devops automation using Docker, Kubernetes and OpenshiftDevops automation using Docker, Kubernetes and Openshift
Devops automation using Docker, Kubernetes and Openshift
 
SoCal DevOps Meetup 1/26/2017 - Habitat by Chef
SoCal DevOps Meetup 1/26/2017 - Habitat by ChefSoCal DevOps Meetup 1/26/2017 - Habitat by Chef
SoCal DevOps Meetup 1/26/2017 - Habitat by Chef
 
DevOps LA Meetup Intro to Habitat
DevOps LA Meetup Intro to HabitatDevOps LA Meetup Intro to Habitat
DevOps LA Meetup Intro to Habitat
 
App Mod 03: Monoliths to microservices with java ee and spring boot
App Mod 03: Monoliths to microservices with java ee and spring bootApp Mod 03: Monoliths to microservices with java ee and spring boot
App Mod 03: Monoliths to microservices with java ee and spring boot
 
Automation, Audits, and Apps Tour
Automation, Audits, and Apps TourAutomation, Audits, and Apps Tour
Automation, Audits, and Apps Tour
 
Embracing Containers and Microservices for Future Proof Application Moderniza...
Embracing Containers and Microservices for Future Proof Application Moderniza...Embracing Containers and Microservices for Future Proof Application Moderniza...
Embracing Containers and Microservices for Future Proof Application Moderniza...
 
Moving existing apps to the cloud
 Moving existing apps to the cloud Moving existing apps to the cloud
Moving existing apps to the cloud
 
Technology insights: Decision Science Platform
Technology insights: Decision Science PlatformTechnology insights: Decision Science Platform
Technology insights: Decision Science Platform
 

More from Judy Breedlove

Agile integration activation: get hands on with ap-is
Agile integration activation: get hands on with ap-isAgile integration activation: get hands on with ap-is
Agile integration activation: get hands on with ap-isJudy Breedlove
 
The 3 pillars of agile integration: Container, Connector and API
The 3 pillars of agile integration:  Container, Connector and APIThe 3 pillars of agile integration:  Container, Connector and API
The 3 pillars of agile integration: Container, Connector and APIJudy Breedlove
 
Preparing your organization for microservices
Preparing your organization for microservicesPreparing your organization for microservices
Preparing your organization for microservicesJudy Breedlove
 
Transform the internal it landscape with APIs and integration
Transform the internal it landscape with APIs and integrationTransform the internal it landscape with APIs and integration
Transform the internal it landscape with APIs and integrationJudy Breedlove
 
An API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationAn API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationJudy Breedlove
 
Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)Judy Breedlove
 
An API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationAn API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationJudy Breedlove
 
Transform the internal it landscape with APIs
Transform the internal it landscape with APIsTransform the internal it landscape with APIs
Transform the internal it landscape with APIsJudy Breedlove
 
Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Judy Breedlove
 
Navigating Cloud Adoption: Trends that Challenge and Inspire Designers
Navigating Cloud Adoption:  Trends that Challenge and Inspire DesignersNavigating Cloud Adoption:  Trends that Challenge and Inspire Designers
Navigating Cloud Adoption: Trends that Challenge and Inspire DesignersJudy Breedlove
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshJudy Breedlove
 
The Future of Cloud Native Apps - Chicago Intro
The Future of Cloud Native Apps - Chicago IntroThe Future of Cloud Native Apps - Chicago Intro
The Future of Cloud Native Apps - Chicago IntroJudy Breedlove
 
Serverless and serverfull - where microservices compliments serverless
Serverless and serverfull - where microservices compliments serverlessServerless and serverfull - where microservices compliments serverless
Serverless and serverfull - where microservices compliments serverlessJudy Breedlove
 
Cloud-Native Microservices
Cloud-Native MicroservicesCloud-Native Microservices
Cloud-Native MicroservicesJudy Breedlove
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolith Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolith Judy Breedlove
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolithJudy Breedlove
 
Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Judy Breedlove
 
Red Hat: Three Pillars of Integration
Red Hat:  Three Pillars of IntegrationRed Hat:  Three Pillars of Integration
Red Hat: Three Pillars of IntegrationJudy Breedlove
 
API Integration: Red Hat integration perspective
API Integration: Red Hat integration perspectiveAPI Integration: Red Hat integration perspective
API Integration: Red Hat integration perspectiveJudy Breedlove
 

More from Judy Breedlove (20)

Putting data to work
Putting data to workPutting data to work
Putting data to work
 
Agile integration activation: get hands on with ap-is
Agile integration activation: get hands on with ap-isAgile integration activation: get hands on with ap-is
Agile integration activation: get hands on with ap-is
 
The 3 pillars of agile integration: Container, Connector and API
The 3 pillars of agile integration:  Container, Connector and APIThe 3 pillars of agile integration:  Container, Connector and API
The 3 pillars of agile integration: Container, Connector and API
 
Preparing your organization for microservices
Preparing your organization for microservicesPreparing your organization for microservices
Preparing your organization for microservices
 
Transform the internal it landscape with APIs and integration
Transform the internal it landscape with APIs and integrationTransform the internal it landscape with APIs and integration
Transform the internal it landscape with APIs and integration
 
An API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationAn API-focused approach to Agile Integration
An API-focused approach to Agile Integration
 
Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)
 
An API-focused approach to Agile Integration
An API-focused approach to Agile IntegrationAn API-focused approach to Agile Integration
An API-focused approach to Agile Integration
 
Transform the internal it landscape with APIs
Transform the internal it landscape with APIsTransform the internal it landscape with APIs
Transform the internal it landscape with APIs
 
Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...
 
Navigating Cloud Adoption: Trends that Challenge and Inspire Designers
Navigating Cloud Adoption:  Trends that Challenge and Inspire DesignersNavigating Cloud Adoption:  Trends that Challenge and Inspire Designers
Navigating Cloud Adoption: Trends that Challenge and Inspire Designers
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
 
The Future of Cloud Native Apps - Chicago Intro
The Future of Cloud Native Apps - Chicago IntroThe Future of Cloud Native Apps - Chicago Intro
The Future of Cloud Native Apps - Chicago Intro
 
Serverless and serverfull - where microservices compliments serverless
Serverless and serverfull - where microservices compliments serverlessServerless and serverfull - where microservices compliments serverless
Serverless and serverfull - where microservices compliments serverless
 
Cloud-Native Microservices
Cloud-Native MicroservicesCloud-Native Microservices
Cloud-Native Microservices
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolith Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolith
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolith
 
Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...Microservices, containers and event driven architecture - key factors in agil...
Microservices, containers and event driven architecture - key factors in agil...
 
Red Hat: Three Pillars of Integration
Red Hat:  Three Pillars of IntegrationRed Hat:  Three Pillars of Integration
Red Hat: Three Pillars of Integration
 
API Integration: Red Hat integration perspective
API Integration: Red Hat integration perspectiveAPI Integration: Red Hat integration perspective
API Integration: Red Hat integration perspective
 

Recently uploaded

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 

Recently uploaded (20)

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 

Monoliths to microservices workshop

  • 1. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION Hands-on Technical Workshop Overview Matt Davis AppDev SA / Farmer Email: mattd@redhat.com @matt_s_davis
  • 2. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB2 WHAT YOU WILL LEARN ● Industry trends around enterprise application development ● Red Hat’s approach to application modernization ● How to discuss migration and modernization with your customers or managers ● Migrating an existing legacy Java™ EE app to Red Hat JBoss Enterprise Application Platform on OpenShift. ● Using modern frameworks like Spring Boot, Wildfly Swarm, Eclipse Vert.x, and Node.js to implement cloud native microservices and replace monolithic functionality. ● Developing and deploying using Red Hat OpenShift Container Platform, Red Hat OpenShift Application Runtimes, and DevOps processes. ● The benefits and challenges with microservices, including use cases for reactive microservices. ● Preventing and detecting issues in a distributed system. ● Pros and cons with different packaging techniques for microservices
  • 3. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB3 9:00AM—9:15AM WELCOME 11:00AM—11:15AM BREAK 9:15AM—10:15AM MOVING EXISTING APPS TO THE CLOUD 11:15AM—12:30PM MONOLITHS TO MICROSERVICES PART 1 10:15AM—11:00AM DEVELOPER INTRO TO OPENSHIFT 1:00PM—2:15PM MONOLITHS TO MICROSERVICES PART 2 2:15PM—3:00PM REACTIVE MICROSERVICES WITH ECLIPSE VERT.X AGENDA 3:00PM—3:15PM BREAK 3:15PM—4:45PM PREVENT AND DETECT DISTRIBUTED APP ISSUES 4:45PM—5:15PM PACKAGING MICROSERVICES | API-LED MODERNIZATION 5:15PM—5:30PM WRAP-UP AND CLOSING REMARKS 12:30PM—1:00PM LUNCH
  • 4. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB4 PREREQUISITES ● Laptop with recent browser: ○ Chrome, Firefox, Internet Explorer/Edge 10+, or Safari 9+ installed ● Are a Java developer, architect, or developer team lead interested in learning more about the latest technologies for modern application development ● Working knowledge of Java programming ● Familiarity with Linux container technology and concepts
  • 5. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB5 Hands-on Labs: openshift-modernize-apps.katacoda.com
  • 6. MOVING EXISTING APPS TO THE CLOUD
  • 7. Fast Monoliths Existing, Java EE, Spring MVC Java EE MSA Monolith Decomposition, Enterprise Java MSA Fast Monoliths (Java EE, Spring) Tomcat Spring Boot / MVC Web Tomcat, Spring MVC, SpringBoot Greenfield Reactive Java Java EE - mono to micro. / greenfield Reactive Reactive Java / Polyglot MSA Reactive JS Reactive client / server-side JavaScript Greenfield polymorphic JavaScript Server -less FaaS Existing Applications New Applications Spring MSA Java MSA Greenfield Java / Spring MSA THE SPECTRUM OF ENTERPRISE APPS
  • 8. MIGRATION AND MODERNIZATION APPROACHES ● API-centric polyglot microservices architecture ● Autonomous development teams ● Agile development, continuous deployment, DevOps culture ● Containerized & orchestrated cloud deployments ● Reuse existing functionality and data as much as possible ● Move existing workloads to a modern deployment platform ● Apply new processes, products, and technology to existing apps MODERNIZING EXISTING APPS DEVELOPING NEW APPLICATIONS
  • 9. Not a target APPLICATION MODERNIZATION Existing Apps Lift & Shift Connect & Extend Repurchase Rip & Re-write Review Analyze Prioritize Retire Retain as is How much work required to rewrite? Highly scaled and high rate of change apps are candidates Smaller or frozen apps are candidates here
  • 10. GENERAL DISTRIBUTION PATTERNS IN MODERNIZING WORKLOADS LIFT & SHIFT ● Containerize existing workloads ● Deploy them on a PaaS ● Keep external integrations and data on legacy ● Legacy applications have to be well written and suited CONNECT & EXTEND ● Legacy remains intact ● New layer - new capabilities ● Deploy on PaaS ● New integration points between legacy and new layers (Need for Agile Integration) RIP & RE-WRITE ● Legacy is totally replaced ● New interfaces and data ● Use PaaS to run ● Some data and features can be re-wrapped, but mostly are retired.
  • 11. GENERAL DISTRIBUTION PATTERNS IN MODERNIZING WORKLOADS LIFT & SHIFT ● Containerize existing workloads ● Deploy them on a PaaS ● Keep external integrations and data on legacy ● Legacy applications have to be well written and suited CONNECT & EXTEND ● Legacy remains intact ● New layer - new capabilities ● Deploy on PaaS ● New integration points between legacy and new layers (Need for Agile Integration) RIP & RE-WRITE ● Legacy is totally replaced ● New interfaces and data ● Use PaaS to run ● Some data and features can be re-wrapped, but mostly are retired. FOCUS FOR THIS SECTION
  • 12. GENERAL DISTRIBUTION LIFT-AND-SHIFT MONOLITH TO CLOUD Application Server HTML Javascript Web ServiceServiceService Service Service Service Data Access HTML Javascript Web ServiceServiceService Service Service Service Data Access
  • 13. GENERAL DISTRIBUTION LIFT-AND-SHIFT MONOLITH TO CLOUD HTML Javascript Web ServiceServiceService Service Service Service Data Access CONTAINER
  • 15. GENERAL DISTRIBUTION MAJESTIC (FAST-MOVING) MONOLITH ● Large organizations have a tremendous amount of resources invested in existing monolith applications ● Looking for a sane way to capture the benefits of containers and orchestration without having to complete rewrite ● OpenShift provides the platform for their existing investment with the benefit of a path forward for microservice based apps in the future
  • 16. 16 Why migrate to JBoss EAP? Runtime [1][2] (framework) Boot time server only Boot time including app deployment Memory usage without load Memory usage under load Measured[3] throughput JBoss EAP (Java EE) 2 - 3 sec 3 sec 40 MB 200 - 400 MB 23K req/sec JBoss EAP (Spring) 2 - 3 sec 7 sec 40 MB 500 - 700 MB 9K req/sec JBoss WS/Tomcat (Spring) 0 - 1 sec 8 sec 40 MB 0.5 - 1.5 GB 8K req/sec Fat JAR (Spring Boot) N/A 3 sec 30 MB 0.5 - 2.0 GB 11K req/sec [1] The microservice is a simple REST application. [2] All runtimes are using their default settings [3] The performance test was conducted with ApacheBench using 500K request with 50 users and keep-alive enabled. Don’t believe it? Try it out yourself http://bit.ly/modern-java-runtimes
  • 17. LAB: MOVING EXISTING APPS TO THE CLOUD
  • 18. GOAL FOR LAB In this lab you will learn: ● How to use lab environment for today ● How to migrate an existing legacy Java EE application (CoolStore) from Weblogic to JBoss EAP using Red Hat Application Migration Toolkit ● How to deploy the result to OpenShift container platform to create a Fast Moving Monolith ● Different alternatives to building and deploying an application
  • 20. COOLSTORE APPLICATION Data Tier Presentation Tier Business Logic Tier <<SLSB>> Inventory Service <<SFSB>> ShoppingCart Service <<SLSB>> Catalog Service Database <<REST>> Product- Endpoint <<SLSB>> Promo Service <<REST>> Cart- Endpoint <<SLSB>> Shipping Service <<AngularJS>> Web <<SLSB & MDB>> OrderService <<REST>> Order- Endpoint
  • 21. Red Hat Application Migration ToolkitCatalyze large scale application modernizations and migrations ● Automate analysis ● Support effort estimation ● Accelerate code migration ● Free & Open Source IBM WebSphere AS Oracle WebLogic Server JBoss EAP upgrades Cloud readiness, containerization Pluggable: your own rules Java EE upgrades Eclipse plugin Command line interface Web console
  • 22. LAB: MOVING EXISTING APPS TO THE CLOUD SCENARIO 1 GETTING STARTED WITH THIS COURSE SCENARIO 2 MOVING EXISTING APPS TO THE CLOUD + WEB: openshift-modernize-apps.katacoda.com SLIDES (PDF): bit.ly/m2m-slides
  • 24. RESULT OF LAB In this lab you: ● Familiarized yourself with the Lab environment ● Migrated the CoolStore monolith from Weblogic to JBoss EAP using Red Hat Application Migration Toolkit ● Created a new development project on OpenShift ● Deployed the migrated app to OpenShift using a Template and a Binary Build ● In the next lab you will explore OpenShift deeper as a developer
  • 26. Application Modernization & Migration BENEFITS Red Hat provides the most comprehensive technologies, tools and services to support you TODAY and TOMORROW APPROACH COMBINE TRANSFORMATION FACTORY RED HAT APPLICATION MIGRATION & MODERNIZATION PROGRAM
  • 27. Application Modernization & Migration JUMPSTART YOUR MODERNIZATION WITH RED HAT OPEN INNOVATIONS LABS INNOVATION ACCELERATED DEVELOP CONTEMPORARY APPS • Develop on PaaS environment • Transform how you design and develop apps • Adopt lean and agile principles • Master DevOps practices MODERNIZE TRADITIONAL APPS • Extend applications • Optimize applications • Scale applications • Expose to orchestration COLLABORATION Space to work, innovate, and discuss RESIDENCY An eight-week accelerated teaming engagement COMMUNITY INCUBATION Communities supporting innovation
  • 28. A DEVELOPER INTRODUCTION TO OPENSHIFT
  • 29. CONTAINERS & CLOUD-NATIVE ROADSHOW29 A secure and enterprise-grade container application platform based on Kubernetes for traditional and cloud-native applications
  • 30. CONTAINERS & CLOUD-NATIVE ROADSHOW30 CLOUD-NATIVE CAPABILITIES WITH RED HAT OPENSHIFT ANY CONTAINER Amazon Web Services Microsoft Azure Google CloudOpenStackDatacenterLaptop ANY INFRASTRUCTURE APPLICATION LIFECYCLE MANAGEMENT CONTAINER ORCHESTRATION AND MANAGEMENT ENTERPRISE CONTAINER HOST
  • 31. CONTAINERS & CLOUD-NATIVE ROADSHOW31 CLOUD-NATIVE CAPABILITIES WITH RED HAT OPENSHIFT APPLICATION LIFECYCLE MANAGEMENT CONTAINER ORCHESTRATION AND MANAGEMENT ENTERPRISE CONTAINER HOST Service Discovery Routing Load Balancing Security Monitoring Conf Management Log Management Multi-tenancy Self-ServiceBuild Automation Deploy Automation CI/CD ANY CONTAINER Amazon Web Services Microsoft Azure Google CloudOpenStackDatacenterLaptop ANY INFRASTRUCTURE
  • 32. A container is the smallest compute unit CONTAINER
  • 33. containers are created from container images during a build CONTAINER CONTAINER IMAGE BINARY RUNTIME
  • 34. IMAGE REGISTRY container images are stored in an image registry CONTAINER CONTAINER IMAGE CONTAINER IMAGE CONTAINER IMAGE CONTAINER IMAGE CONTAINER IMAGE CONTAINER IMAGE
  • 35. an image repository contains all versions of an image in the image registry IMAGE REPOSITORY frontend:latest frontend:2.0 frontend:1.1 frontend:1.0 CONTAINER IMAGE mongo:latest mongo:3.7 mongo:3.6 mongo:3.4 CONTAINER IMAGE myregistry/frontend myregistry/mongo
  • 36. PODPOD containers are wrapped in pods which are units of deployment and management, and share a common network address CONTAINER CONTAINERCONTAINER IP: 10.1.0.11 IP: 10.1.0.55
  • 37. pods configuration is defined in a deployment image name replicas labels cpu memory storage POD CONTAINER POD CONTAINER POD CONTAINER DEPLOYMENT
  • 38. NODE (RHEL) pods are deployed to and run on nodes POD CONTAINER POD CONTAINER POD CONTAINER NODE (RHEL) POD CONTAINER POD CONTAINER POD CONTAINER
  • 39. POD services provide internal load-balancing and service discovery across pods CONTAINER POD CONTAINER POD CONTAINER BACKEND SERVICE POD CONTAINER role: backend role: backendrole: backendrole: backendrole: frontend
  • 40. POD apps can talk to each other via services CONTAINER POD CONTAINER POD CONTAINER BACKEND SERVICE POD CONTAINER role: backend role: backendrole: backendrole: backendrole: frontend Invoke Backend API
  • 41. POD routes add services to the external load-balancer and provide readable urls for the app CONTAINER POD CONTAINER POD CONTAINER BACKEND SERVICE ROUTE app-prod.mycompany.com > curl http://app-prod.mycompany.com
  • 42. projects isolate apps across environments, teams, groups and departments POD C POD C POD C PAYMENT DEV POD C POD C POD C PAYMENT PROD POD C POD C POD C CATALOG POD C POD C POD C INVENTORY ❌ ❌❌
  • 43. templates define a blueprint for an application that can be instantiated within a project TEMPLATE (name=”foo”) source output triggers name labels strategy BUILD CONFIG image name replicas labels cpu memory storage DEPLOYMENT name labels port targetPort selectors protocol SERVICE name destination termination hostname ROUTE name labels repo IMAGESTREAM $ oc new-app foo
  • 46. GOAL FOR LAB In this lab you will learn: ● Important OpenShift concepts for developers ● How OpenShift makes developers and architects happier ● How to do efficient round-trip development: ○ Separate dev from prod environments ○ Quick deployments using rsync / port-forwarding ○ Promoting apps using CI/CD Pipelines
  • 47. LAB: DEVELOPER INTRO TO OPENSHIFT SCENARIO 3 A DEVELOPER INTRODUCTION TO OPENSHIFT WEB: openshift-modernize-apps.katacoda.com SLIDES (PDF): bit.ly/m2m-slides
  • 49. RESULT OF LAB In this lab you learned how to: ● Do quick deployments with oc rsync ● Create a production environment separate from dev ● Promote tested/verified builds between environments using OpenShift pipeline builds You should now have two projects (dev and prod) running the same CoolStore app! In the next lab we will begin the process of breaking the monolith up into microservices.
  • 50. DESIRED RESULT OF SCENARIO 3 OpenShift coolstore-dev Coolstore monolith Coolstore database (dev) Coolstore Binary coolstore-prod Coolstore monolith Coolstore database (prod) Pipeline Promotion mvn package
  • 52. PART 3: MONOLITHS TO MICROSERVICES WITH JAVA EE AND SPRING BOOT
  • 53. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB53 WHY MONOLITH TO MICROSERVICES Break things down (organizations, teams, IT systems, etc) down into smaller pieces for greater parallelization and autonomy and focus on reducing time to value.
  • 54. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB54 REDUCING TIME TO VALUE Month 0 Month 3 Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9 Week 10 Week 11 Monolith Lifecycle Fast Moving Monolith Microservices Optimizing for Speed
  • 55. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB http://martinfowler.com/bliki/MonolithFirst.html Monolith First? http://martinfowler.com/bliki/MonolithFirst.html
  • 56. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB5656 THE BIGGER PICTURE: THE PATH TO CLOUD-NATIVE APPS A DIGITAL DARWINISM SELF-SERVICE ON-DEMAND INFRA RE-ORG TO DEVOPS AUTOMATION CONTINUOUS DELIVERY ADVANCED DEPLOYMENT TECHNIQUES MICROSERVICES FAST MONOLITH
  • 57. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB57 ● In this lab, you will begin to ‘strangle’ the coolstore monolith by implementing its services as external microservices, split along business boundaries ● Once implemented, traffic destined to the original monolith’s services will be redirected (via OpenShift software-defined routing) to the new services STRANGLING THE MONOLITH Node.js Web WildFly Swarm Inventory Vert.x Cart Runtime Service Runtime Service Vert.x Orders Spring Boot Catalog JBoss EAP HTML Javascript Web CartCatalogInventory Promo Ratings Orders Data Access
  • 58. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB58 STRANGLING THE MONOLITH ● Strangling - incrementally replacing functionality in app with something better (cheaper, faster, easier to maintain). ● As functionality is replaced, “dead” parts of monolith can be removed/retired. ● You can also wait for all functionality to be replaced before retiring anything! ● Business stakeholders find this attractive as new functionality is added more rapidly during strangulation. Time
  • 59. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB
  • 60. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB RHOAR PRODUCT ARCHITECTURE RHOAR RUNTIMES (Container images, Maven Artifacts, Serverless) MICROPROFILE / JAVA EE OPENSHIFT SERVICES REACTIVE (vert.x) JAVASCRIPT SERVLET APPS OpenShift.io (Developer SaaS) Generators IDE etc. Management APM Metrics Service Discovery Config. Logging Health Check Load Balancing CI/CDSSOMessaging IMDG API Mgmt OPENWHISK SERVICE MESH Istio Pilot Istio Mixer Istio Auth Envoy Proxy Envoy Proxy Envoy Proxy Envoy Proxy Service Catalog == Future
  • 61. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB TOMCAT SIMPLICITY JAVASCRIPT FLEXIBILITY SERVLET APPS REACTIVE SYSTEMS JAVA MICROSERVICES ENTERPRISE JAVA
  • 63. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB • Microservices for Developers using Spring Framework • An opinionated approach to building Spring applications • Historical alternative to Java EE • Getting started experience • Spring MVC / DI / Boot most popular
  • 64. MONOLITHS TO MICROSERVICES: APP TRANSFORMATION HANDS-ON LAB Spring in RHOAR • It’s the same Spring you know and love • Tested and Verified by Red Hat QE – Spring Boot, Spring Cloud Kubernetes, Ribbon, Hystrix • Red Hat components fully supported – Tomcat, Hibernate, CXF, SSO (Keycloak), Messaging (AMQ), … • Native Kubernetes/OpenShift integration (Spring Cloud) • Service Discovery via k8s (DNS), Ribbon • Spring Config via ConfigMap • Developer Tooling (launch.openshift.io, starters) • Additional planned support for – Transactions (Naryana)
  • 65. ● Health Checks (actuator) ● Externalized Config (spring-cloud-kubernetes) ● Client-side discovery / load balancing (Eureka/Kubernetes) ● Circuit Breaking / Bulkheading (Hystrix) ● Logging / Monitoring / Tracing / Metrics ● Secure deployments with Keycloak ● API Documentation (Swagger) Cloud Native Support in Spring
  • 67. My Svc Java EE microservices ● Leverage Java EE expertise ● Open standard ● Microservices focus ● Optimized for OpenShift ● Super lightweight ● Tooling for Developers ● MicroProfile Implementation My Svc JAX-RS $ java -jar my_microservice.jar
  • 68. ● A tangible unit providing a specific piece of functionality ● Embodied in a maven artifact ● To support the compositional aspect in WF Swarm ● Provides the “runtime” capabilities ● Means to add API dependencies (e.g. JAX-RS) ● Means to configure the system ○ With reasonable defaults ● Means to discover other components (topology) ● Means to alter deployments (e.g. keycloak) ● Can be auto-detected or explicitly declared WildFly Swarm “pieces” - Fractions
  • 69. ● Health Checks ● Externalized Config ● Client-side discovery / load balancing ● Circuit Breaking / Bulkheading ● Logging / Monitoring / Tracing / Metrics ● Secure deployments with Keycloak ● MicroProfile ● API Documentation Cloud Native Support in WildFly Swarm
  • 70. Build microsevices ● Embeddable (Fat Jar) ● Lightweight ● Modular & extensible ● Built from WildFly (Trusted and Reliable) Supported Specifications Java EE 7 Web Profile MicroProfile 1.0 Tested and Verified Hystrix Ribbon MySQL Oracle DB Metrics Additional Supported Fractions Health Configuration Topology Monitor Keycloak Upstream (Unsupported) Flyway Logstash Fluentd Swagger JMS Vert.x Integration Consul Spring Jolokia Infinispan jGroups WildFly Swarm and RHOAR
  • 71. ● Defines open source Java microservices specifications ● Industry Collaboration - Red Hat, IBM, Payara, Tomitribe, London Java Community, SouJava, Oracle, Hazelcast, Fujitsu, SmartBear... ● WildFly Swarm is Red Hat’s implementation ● Minimum footprint for Enterprise Java cloud-native services (v1.3) : JSON-P 1.0 Health Check 1.0 CDI 1.2 JAX-RS 2.0 JWT Propagation 1.0 Fault Tolerance 1.0 Metrics 1.0 Config 1.1 OpenTracing 1.0 OpenAPI 1.0 RestClient 1.0 New in 1.3:
  • 72. LAB: MONOLITHS TO MICROSERVICES WITH JAVA EE AND SPRING BOOT
  • 73. GOAL FOR LAB In this lab you will learn: ● How Red Hat OpenShift and Red Hat OpenShift Application Runtimes (RHOAR) help jumpstart app modernization ● Benefits and challenges of microservices ● How to transform existing monolithic applications to microservices using strangler pattern and 12-factor app patterns. ● Use modern app dev frameworks like WildFly Swarm and Spring Boot to implement microservice applications on OpenShift
  • 74. CURRENT STATE - THE MONOLITH OpenShift coolstore-dev Coolstore monolith Coolstore database (dev) Coolstore Binary coolstore-prod Coolstore monolith Coolstore database (prod) Pipeline Promotion Debugger mvn package
  • 75. LAB: MONOLITHS TO MICROSERVICES WITH JAVA EE AND SPRING BOOT SCENARIO 4 TRANSFORMING AN EXISTING MONOLITH (PART 1) SCENARIO 5 TRANSFORMING AN EXISTING MONOLITH (PART 2) +
  • 77. RESULT OF LAB In this lab you learned how to: ● Implement a Java EE microservice using WildFly Swarm ● Implement a Java EE microservice using Spring Boot ● Develop container-based testing ● Add microservice concerns like Health checks, externalized configuration and circuit breaking ● Use the strangler pattern to slowly migrate functionality from monolith to microservices
  • 80. INSERT DESIGNATOR, IF NEEDED The 2 faces of Reactive Reactive A software showing responses to stimuli Reactive Systems Reactive Programming Akka, Vert.x Reactor, RX, Vert.x Actor, Agent Autonomic Systems Data flow, Functional programming
  • 81. INSERT DESIGNATOR, IF NEEDED Execution Model (single core) Blocking ● Example: CGI, early versions of server side JavaScript. ● Can only scale horizontally Multi thread ● Example: Java EE, Tomcat, Spring (non reactive) ● Scales horizontally and vertically Non blocking ● Example: NodeJS, Eclipse Vert.x, Akka, Spring reactive ● Scales horizontally and vertically Single Thread Blocking Single Thread Non-blocking Multi thread = Execution Thread = Request 1 = Request 2 = Request 3 Time Reactive Systems Request 1 waiting for DB Multi Thread Non-blocking
  • 82. INSERT DESIGNATOR, IF NEEDED82 Eclipse Vert.x Vert.x is a toolkit to build distributed and reactive systems ● Asynchronous Non-Blocking development model ● Simplified concurrency (event loop) ● Reactive microservice, Web applications, IOT ● Ideal high-volume, low-latency applications ● Un-opinionated ● Understands clustering in its core architecture Home - http://www.vertx.io
  • 83. INSERT DESIGNATOR, IF NEEDED83 VERT.X EVENT LOOP EVENT QUEUE EVENT LOOP WORKER THREADS async Handle Thousands of Requests With Few Threads response
  • 84. INSERT DESIGNATOR, IF NEEDED84 Vert.x Ecosystem
  • 85. INSERT DESIGNATOR, IF NEEDED85 ● Explore Vert.x Maven project ● Create an API gateway ● Run Vert.x locally ● Deploy Vert.x on OpenShift LAB 4: Reactive Microservices with Eclipse Vert.x
  • 87. GOAL FOR LAB In this lab you will learn: ● How Event-based architectures supercharge microservice apps ● Use cases for reactive applications ● Develop microservices using Eclipse Vert.x ● Interact with other microservices without blocking ● Learn the basics of Reactive programming
  • 89. LAB: REACTIVE MICROSERVICES SCENARIO 6 BUILDING REACTIVE MICROSERVICES
  • 91. RESULT OF LAB In this lab you learned how to: ● Build reactive web application that are non-blocking ● Asynchronously call out to external service using Callbacks, Handlers and Futures ● Deploy the application to OpenShift
  • 93. ECLIPSE VERT.X OFFER MUCH MORE
  • 94. INSERT DESIGNATOR, IF NEEDED94 SERVICE DISCOVERY Service Provider Service Provider Service Provider Service Consumer Service Consumer Service Consumer Vert.x Service Registry publish lookup Bridge Bridge Bridge import Kubernetes Consul Other
  • 95. INSERT DESIGNATOR, IF NEEDED Vert.x vs NodeJS 2 threads per core NodeJS Vert.x Vert.x ● Multi-threaded ● Polyglot (Java, JavaScript, Scala, and more) ● Supports reactive programming using RxJava, RxJS, etc NodeJS ● Single threaded ● JavaScript only ● Support reactive programming using RxJS
  • 96. INSERT DESIGNATOR, IF NEEDED96 FREE E-BOOKS http://vertx.io/docs/
  • 97. PART 5: RESILIENT DISTRIBUTED APPS
  • 98. INSERT DESIGNATOR, IF NEEDED98 DISTRIBUTED SERVICES ARCHITECTURES Benefits (when implemented correctly): ● Performance ● Reliability ● Resiliency ● Extensibility ● Availability ● Robustness
  • 99. INSERT DESIGNATOR, IF NEEDED99 DISTRIBUTED SERVICES ARCHITECTURES Fallacies of Distributed Computing ● The network is reliable. ● Latency is zero. ● Bandwidth is infinite. ● The network is secure. ● Topology doesn't change. ● There is one administrator. ● Transport cost is zero. ● The network is homogeneous. wikipedia.org/wiki/Fallacies_of_distributed_computing
  • 100. INSERT DESIGNATOR, IF NEEDED100 DISTRIBUTED SERVICES ARCHITECTURES Applications must deal with ● Unpredictable failure modes ● End-to-end application correctness ● System degradation ● Topology changes ● Elastic/ephemeral/transient resources A E B C F G D H I Client
  • 101. INSERT DESIGNATOR, IF NEEDED101 MICROSERVICES == DISTRIBUTED COMPUTING
  • 102. INSERT DESIGNATOR, IF NEEDED102 Example ACME Laptop 128GB SSD, 8GB RAM $323.56 Touchscreen 128GB SSD 8GB RAM Core i3 Windows 10 Add to Cart In-Store Pickup (15 available) Raleigh, Central Ave, Store #1123 Recommendations Pricing Engine Reviews Details/Specifications Location-based availability People who purchased also...
  • 103. INSERT DESIGNATOR, IF NEEDED103 Chaining
  • 104. INSERT DESIGNATOR, IF NEEDED104 Chaining (Fail) X
  • 105. INSERT DESIGNATOR, IF NEEDED105 Chaining (Cascading Fail) XXXX X
  • 106. INSERT DESIGNATOR, IF NEEDED106 POSSIBLE SOLUTIONS Today, Developers do this: ● Circuit Breaking ● Bulkheading ● Timeouts/Retries ● Service Discovery ● Client-side Load Balancing
  • 107. INSERT DESIGNATOR, IF NEEDED107 TOO MUCH INFRASTRUCTURE IN BUSINESS LOGIC
  • 108. INSERT DESIGNATOR, IF NEEDED spring-cloud-netflix-hystrix spring-cloud-netflix-zuul spring-cloud-netflix-eureka-client spring-cloud-netflix-ribbon spring-cloud-netflix-atlas spring-cloud-netflix-spectator spring-cloud-netflix-hystrix-stream ... @Enable....150MagicThings org.wildfly.swarm.hystrix org.wildfly.swarm.ribbon org.wildfly.swarm.topology org.wildfly.swarm.camel-zookeeper org.wildfly.swarm.hystrix ... vertx-circuit-breaker vertx-service-discovery vertx-dropwizard-metrics Vertx-zipkin ... + Node.js + Go + Python + Ruby + Perl + …. BUT I’M USING...
  • 109. INSERT DESIGNATOR, IF NEEDED SIDECARS
  • 110. PODS WITH TWO CONTAINERS Pod Container JVM Service A Side-car Container Pod Container JVM Service B Side-car Container Pod Container JVM Service C Side-car Container ● Service proxy ● C++. fast ● L3&4 network filter ● Service discovery ● Health checking ● Load balancing ● Stats, metrics, tracing
  • 111. Istio - Sail (Kubernetes - Helmsman or ship’s pilot)
  • 112. ISTIO - A ROBUST SERVICE MESH FOR MICROSERVICES Further Reading : https://blog.openshift.com/red-hat-istio-launch/ https://istio.io/blog/istio-service-mesh-for-microservices.html http://blog.christianposta.com/microservices/the-hardest-part-of-microservices-calling-your-services/ Key Features ● Intelligent routing and load balancing ● Fleet-wide, in-depth observability ● Resiliency across languages and platforms ● Fault injection ● Developer productivity ● Policy driven ops ● Circuit breaking, outlier detection ● Timeouts/retries ● Rate limiting ● Secure by default ● Incremental, unobtrusive adoptionImage from Christian Posta * * App-specific fallback logic belongs here
  • 113. Istio Control Plane ISTIO - A ROBUST SERVICE MESH FOR MICROSERVICES Istio Pilot Istio Mixer Istio Auth Pod Container Service A Envoy Proxy Pod Container Service A Envoy Proxy Pod Container Service A Envoy ProxyIstio Data Plane ● service discovery ● load balancing ● TLS termination ● HTTP/2 & gRPC proxying, ● circuit breakers, ● health checks, ● staged rollouts fault injection ● rich metrics. ● access control ● usage policies ● telemetry collection ● traffic mgmt ● discovery ● authentication ● policy enforcement ● Id & credentials
  • 114. MICROSERVICES 3.0 - SERVICE MESH Code Independent: ● Intelligent Routing and Load-Balancing ○ A/B Tests ○ Canary Releases ○ Dark Launches ● Distributed Tracing ● Circuit Breakers ● Fine grained Access Control ● Telemetry, metrics and Logs ● Fleet wide policy enforcement Config Server NETFLIX Ribbon Jaeger Istio
  • 115. LAB: DETECTING AND PREVENTING ISSUES IN DISTRIBUTED APPS WITH ISTIO
  • 116. GOAL FOR LAB In this lab you will learn: ● How to install Istio onto OpenShift Container Platform ● How to deploy apps with sidecar proxies ● How to generate and visualize deep metrics for apps ● How to alter routing dynamically ● How to inject faults for testing ● How to do rate limiting ● How Istio implements circuit breaking and distributed tracing
  • 119. LAB: DETECTING AND PREVENTING ISSUES IN DISTRIBUTED APPS WITH ISTIO SCENARIO 7 PREVENT AND DETECT ISSUES IN A DISTRIBUTED SYSTEM
  • 121. RESULT OF LAB In this lab you learned: ● How to install Istio onto OpenShift Container Platform ● How to deploy apps with sidecar proxies ● How to generate and visualize deep metrics for apps ● How to alter routing dynamically ● How to inject faults for testing ● How to do rate limiting ● How Istio implements circuit breaking and distributed tracing ● Use cases for service mesh
  • 122. MICROSERVICES 4.0? Service Microservice Function f( ) > Single Purpose > Stateless > Independently Scalable > Automated > Single Action > Event-sourced > Ephemeral > Autonomous > Loosely-coupled
  • 123. SERVERLESS PROJECTS / SERVICES 123 http://funcatron.org CLOUD FUNCTIONS BETA serverless-docker