SlideShare a Scribd company logo
Steve Caron
Sr. Solution Engineer
Dynatrace Center of Excellence
Monolith to
Microservices
2Confidential
Monolith to Microservices
with Dynatrace & OpenShift
https://bit.ly/dt-rh-jun11
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices
4Confidential
What we will accomplish
• Set-up TicketMonster
• Extract the UI from the monolith
• Identify a microservice
• Identify the domain model of the
microservice
• Deploy the microservice
• Familiarization with cloud platform
• Deployment of microservice
• Confidence in breaking the monolith
• Persistence layer for the microservice
• (real) microservice extracted
Confidential 5
Check Prerequisites
Make sure your laptop has Internet Access and a modern browser (Google Chrome is ideal)
Workshop OpenShift Cluster:
URL: https://console-openshift-console.apps.cluster-dynatrac-edbb.dynatrac-
edbb.example.opentlc.com/
User: user## (## = assigned number)
Password: openshift
Workshop Dynatrace tenant:
URL: https://wxu551.dynatrace-managed.com/
User: user## (## = assigned number)
Password: dynatrace
Github Repo:
URL: https://github.com/steve-caron-dynatrace/Monolith_to_Microservices
6Confidential
Introduction
Limitations of Monoliths have given rise to Microservices
7Confidential
From monolith to microservices
Confidential 8
• Agility –Rebuilding the whole application takes a
decent amount of time
• Scalability – Scaling a monolith happens in both
directions: vertically as well as horizontally -
causing unused resources
• DevOps Cycle – Continuous delivery (high
frequency of deployments) fails due to high build
time
• Availability, fault tolerance, and resiliency
Limitations of monolithic applications
Confidential 9
Limitation of monolithic applications
Source: https://tommcfarlin.com/design-patterns-for-refactoring-facade/
Confidential 10
• Agility - Scope changes can be done in one
microservice - other microservices are not
impacted from these changes
• Scalability - Individual components can scale as
needed
• DevOps Cycle - Since each component
operates independently, continuous delivery
cycle reduces
Limitations of Monoliths have given rise to Microservices
Confidential 11
Just moving an application to the cloud won’t do it – even if it feels that way
Confidential 12
Just moving an application to the cloud won’t do it – even if it feels that way
13Confidential
Your App / Container
Autonomous Cloud:
Deliver Digital
Business Value
Faster
16Confidential
You need to change radically
17Confidential
Changing a technology stack and a modern UI is not enough
18Confidential
Your understanding of how you deliver needs to change
23Confidential
Openshift & Dynatrace primer
Confidential 24
OpenShift Architecture
OpenShift runs on any infrastructure
Confidential 25
OpenShift Architecture
OpenShift nodes are instances of
Red Hat Enterprise Linux / Atomic Host
Confidential 26
OpenShift Architecture
Application services run in
containers on each node
Confidential 27
OpenShift Architecture
Pods run one to many
containers as a co-located unit
Confidential 28
OpenShift Architecture
Masters leverage Kubernetes
to orchestrate nodes and applications
Confidential 29
OpenShift Architecture
Services allow related pods
to connect to each other
Confidential 30
OpenShift Architecture
Pods can attach to shared persistent storage
Confidential 31
OpenShift Architecture
Routing routes external requests to pods
Confidential 32
OpenShift Architecture
Devs and Ops access OpenShift via CLI,
Web UI or IDE
Confidential 33
Key Concepts - Nodes
• Worker machine in Kubernetes
• VM or physical machine
• Managed by the control plane (master)
• Node components:
• kubelet
• kube-proxy
• Container Runtime Engine
Confidential 34
Key Concepts - Pods
• Smallest “unit of work” in
Kubernetes.
• Pods are one or more
containers that share
volumes and namespace.
• They are also ephemeral
Confidential 35
Key Concepts - Services
• Unified method of accessing
the exposed workloads of
pods.
• Think of it as an internal
load balancer to your pods.
• How it is implemented
depends on the cloud
provider or the on-prem
config
• Not ephemeral
<service name>.<namespace>.svc.cluster.local
Confidential 36
Key Concepts – Deployments
• Way of managing Pods via ReplicaSets
• Provide rollback functionality and update control
• Each iteration creates a unique label that is assigned
to both the ReplicaSet and subsequent Pods.
Confidential 37
OpenShift concepts cheat sheet
Nodes
• are instances of underlying OS (Linux)
• virtual or physical machine
• host one to many Pods
Deployments/Replicasets
• select a Pod object using labels
• ensure a given number of Pod replicas
• handle scale-up/down and rolling updates
Pods
• are (co-located) groups of containers
• a Pod’s containers run on the same host (node)
Services
• select a Pod object using labels
• abstract a (replicated) set of Pods by IP, port(s)
• provide domain name and simple load balancing
Labels
• assign identifying metadata to objects (Pods)
• are used to organize, group or select objects
Routes
• expose services to the (cluster) outside world
Annotations
• assign non-identifying metadata to objects
• are used for arbitrary data (build, debug info)
Projects
• aka namespaces: allows a community of users to
organize and manage their content in isolation
from other communities.
Confidential 38
What is an Operator?
• The Operator Framework is an open
source toolkit to manage Kubernetes
native applications in an effective,
automated, and scalable way.
• Human operational knowledge in
software
• Reliably manage application lifecycles
as a first-class kube native object
Confidential 39
Dynatrace OneAgent Operator in action
• Watches for custom resources of
type OneAgent
• Takes care of OneAgent
deployment via DaemonSet
• Updates OneAgent to the latest
version available
1
1
2
2
3
3
3
Confidential 40
All-in-one monitoring of OpenShift cluster and workload
41Confidential
Hands-on with TicketMonster
42Confidential
Openshift UI Navigation
43Confidential
Openshift UI Navigation
44Confidential
Openshift UI Navigation
45Confidential
Openshift UI Navigation
46Confidential
Openshift UI Navigation
47Confidential
Openshift UI Navigation
48Confidential
Openshift UI Navigation
49Confidential
Openshift UI Navigation
50Confidential
Openshift UI Navigation
51Confidential
Openshift UI Navigation
52Confidential
Lab: Lift-and-shift TicketMonster
a. Login to
OpenShift
b. Create project-##
c. Navigate to your
project
Step 1:
Setup Project
https://github.com/peterhack/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
Confidential 53
• Overview
1. Create a MySQL service for monolith
2. Push application to OpenShift
3. Bind MySQL service to monolith
• Instructions:
• Lab: 1_Lift-and-Shift_TicketMonster
• Takeaways
• Familiarization with OpenShift
Lab 1: Lift-and-shift TicketMonster
Confidential 54
Lab: Lift-and-shift TicketMonster
a. Click on “Add”
b. Import YAML/JSON
c. Navigate to git repo for ticketmonster-db template
d. Copy RAW YAML
e. Create db template
f. Instantiate db template
Step 1:
Deploy Database for Monolith
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
Confidential 55
Lab: Lift-and-shift TicketMonster
a. Click on “Add”
b. Import YAML/JSON
c. Navigate to git repo for ticketmonster-monolith-template
d. Copy RAW YAML
e. Create monolith template
f. Instantiate monolith template
Step 2:
Deploy Monolith
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
Confidential 56
Lab: Lift-and-shift TicketMonster
monolith
Confidential 57
Lab: Lift-and-shift TicketMonster
a. Click on “Administrator”
b. Networking -> Routes -> Create Route
c. Name = monolith
d. Service = ticketmonster-monolith
e. Target Port = 8080 -> 8080 (TCP)
Step 3:
Create Route to Monolith
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
Confidential 58
Lab: Lift-and-shift TicketMonster
a. In Route, copy “Location”
b. Paste the location url in a browser and exercise the application
Step 4:
Exercise the application
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
Confidential 59
A single application consolidating all client
interactions for the monolith:
• Application uses the services provided by the
monolith and compose them together
• Use an API gateway or service mesh when
application needs to invoke calls to several
microservices
• Works as proxy where the UI pages of different
components are invoked to show the interface
Extract the UI from the Monolith
Confidential 60
• Overview
1) Rename ‘monolith‘ to ‘backend‘
2) Push new UI to OpenShift
3) Switch to tm-ui-v1
• Instructions:
• Lab: 2_Extract_UI_From_Monolith
• Takeaways
• Deployment of Microservice
Lab 2: Extract the UI from the Monolith
To start breaking up the monolith, a best practice is
extracting the user interface from TicketMonster
since this helps to decouple the client facing part
from the business logic. So, this lab launches the
first microservice to separate the user interface
from the rest of TicketMonster as depicted below.
Confidential 61
Lab: Lift-and-shift TicketMonster
Step 1:
Define a new route for the monolith
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
a. Click on “Administrator”
b. Networking -> Routes -> Create Route
c. Name = backend
d. Service = ticketmonster-monolith
e. Target Port = 8080 -> 8080 (TCP)
f. Copy backend route “host” info in notepad; you will need it later on
Confidential 62
Lab 2: Extract the UI from the Monolith
monolith
backend
Confidential 63
Lab: Lift-and-shift TicketMonster
a. Click on “Add”
b. Import YAML/JSON
c. Navigate to git repo for ticketmonster-ui-v1 template
d.Paste RAW YAML into OpenShift
*replace backend URL*
e. Create & Instantiate monolith template
Step 2:
Decouple UI from the Monolith
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/2_Extract_UI_From_Monolith
Confidential 64
Lab 2: Extract the UI from the Monolith
monolith
backend
tticketmonster-ui-v1
Confidential 65
Lab: Lift-and-shift TicketMonster
Step 1:
Define a new route for the monolith
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
a. Click on “Administrator”
b. Networking -> Routes -> Create Route
c. Name = ticketmonster-ui-v1
d. Service = ticketmonster-ui-v1
e. Target Port = 8080 -> 8080 (TCP)
Confidential 66
Lab 2: Extract the UI from the Monolith
monolith
backend
tticketmonster-ui-
v1
ticketmonster-ui-v1
Confidential 67
Lab: Lift-and-shift TicketMonster
a. Select “ticketmonster-UI” URL from the route section and
validate that the page states “This UI hits the MONOLITH”
Step 3:
Validate new UI
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/2_Extract_UI_From_Monolith
Confidential 68
How to identify a Microservice?
• Problem: we don’t know much
about our monolith:
• Who is depending on us and how
are they depending on us?
• Whom are we depending on and
how are we depending on them?
• What happens within our monolith
code base when it gets called?
• Solution: Leverage Dynatrace to:
• Get Dependency Information
• Detect Service Endpoints, Usage &
Behavior
• Understand Service Flow per
Endpoint
• Finding Entry Points with CPU
Sampling Data
• Define Custom Service Entry Points
Confidential 69
Identify a Microservice – understand dependencies
Confidential 70
Identify a Microservice – find the entry point in the code
Confidential 71
Other considerations to factor in the decision
• Business risk – Is the planned microservice a critical component and
does it impact the business in case it fails (conduct a risk
assessment)?
• Product roadmap – Which parts of the monolith need to be refactored
anyways?
• Business strategy – What is the long-time business strategy of the
monolith?
• Technology strategy – Do new technologies impact the further
development of the monolith?
Confidential 72
• Overview
1) Analyze UI and monolith
2) Define Custom Service Detection Rule
• Instructions:
• Lab: 4_Identify_a_Microservice
• Takeaways
• Virtually broken the monolith
Lab 4 : Identify a Microservice - Observability as part of the platform
Confidential 73
Lab: Lift-and-shift TicketMonster
Step 1:
Define custom service entry point
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice
a. Log into Dynatrace Tenant
b.Go to Settings, Server-side service monitoring, and click on Custom
service detection”
c. Click on Define Java service, set name of custom service to
“project-xx-orders-service” and click Find entry point
d.Select the process group that contains your entry point
“ticketmonster-monolith” and click Continue.
Confidential 74
Lab: Lift-and-shift TicketMonster
Step 2:
Define custom service entry point
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice
a. Search for loaded classes and interfaces with name
BookingService, select
“org.jboss.examples.ticketmonster.rest.BookingService” and
click Continue.
b.Use Selected Class and click Continue
c. Select method with “createBooking” as entry point and click
Finish
d.Review and select ”Save Changes”
Confidential 75
Lab: Lift-and-shift TicketMonster
Step 3:
Optional : Restart Pod to activate custom service
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice
a. In Openshift UI, Select Administrator
b.Workloads -> Pods
c. Select Pod “ticketmonster-monolith-xxxx”
d.Action -> Delete Pod
Confidential 76
Lab: Lift-and-shift TicketMonster
Step 4:
Book a ticket on Ticket Monster
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice
a. Open the ”ticketmonster-ui-v1” in a browser
b.Click on Events, Concerts, and on, eg. Rock concert of the decade
c. Select Venue, Date, and Order Ticket
d.Select section and number of tickets
e. Checkout and review booking details
Confidential 77
Lab: Lift-and-shift TicketMonster
Step 5:
Consider Service Flow in Dynatrace
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice
a. Log into Dynatrace console and select the Project-##
Management Zone
b.Choose the Transactions & services tab from left menu
c. Select TicketMonsterUI and click on View service flow
Confidential 78
Lab: Lift-and-shift TicketMonster
Step 5:
Consider Service Flow in Dynatrace
Confidential 79
Identifying the Domain Model of the Microservice
• Data management of a decoupled Microservice:
• Use an existing API of the monolith to keep data management at the monolith
• (If no appropriate API is available) create a new lower-level API for the microservice (but still keep the
data management at the monolith)
• Do an ETL (Extract, Transform, Load) from the monolith’s database to the microservice’ database and
keep both in sync
• Data model shows how data is stored and entities relate to each other in the persistence layer.
• Domain model describes the behavior of the solution space of a microservice’s domain and
tends to focus on use case scenarios
Confidential 80
Refactoring your Source Code
• 1) Extract OrdersService from the Monolith
• Cut out the class containing createBooking method
• Identify missing abstractions for a successful build
• 2) Strangle the OrdersService around the Monolith
• Call the OrdersService in the business logic of the backend
• 3) Build the Data and Domain Models for the Microservice
• Integrate a data virtualization framework into your code base
• Extend the data model to the domain model by virtualized data views
Confidential 81
• Overview
1. Analyze database queries of
Microservice
• Instructions:
• Lab: 5_Domain_Model_of_Microservice
• Takeaways
• Persistence layer of Microservices
Lab 5 : The Microservice and its Domain Model
Confidential 82
Lab: Lift-and-shift TicketMonster
Step 1:
Inspect the Data and Domain Models with Dynatrace
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice
a. Within Dynatrace Service Flow, follow through custom project-
xx-orders-service to mysql db
b.Click on “View database statements”
Confidential 83
Lab: Lift-and-shift TicketMonster
Step 2: View database statements
Confidential 84
• Overview
1. Deploy a new backend version
2. Create a MySQL service instance
for microservice
3. Build microservice and push it to
OpenShift
4. Bind MySQL service instance to
microservice
5. Re-deploy UI to use new
backend version
• Instructions:
• Lab: 6_Deploy_the_Microservice
• Takeaways
• Microservice for a specific
bounded context
Lab 6 : Deploy the Microservice
Based on the result of the previous labs, you identified the
microservice OrdersService that has its own code repository and defines its
own domain model. To launch this service, it is not recommended to
directly route traffic to this new service since we cannot fully ensure that it
works as supposed. For this reason, we strangle the microservice around
the monolith. In other words, all incoming requests will still be intercepted
by the backend service, which forwards synthetic or live traffic
to OrdersService.
In this lab you'll use feature flags and OpenShift routing mechanism to
smoothly incorporate the new microservice into the monolith. The final
state of this lab is shown below:
Confidential 85
Lab: Lift-and-shift TicketMonster
Step 1:
Create the new data store for the Orders microservice
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/5_Domain_Model_of_Microservice
a. Select “Add”
b.Import YAML/JSON
c. Navigate to git repo for ticketmonster orders-db template
d.Paste RAW YAML into OpenShift
e. Create and Instantiate
Confidential 86
Lab: Lift-and-shift TicketMonster
Step 2:
Setup the database
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/5_Domain_Model_of_Microservice
a. Administrator -> Workloads -> Pod
b.Select the “orders-db” pod
c. Select the “Terminal” tab
d.In the terminal type:
a.cd~
b.pwd
*Should now be in directory /var/lib/mysql
Confidential 87
curl -o 0_ordersdb-schema.sql https://raw.githubusercontent.com/dynatrace-innovationlab/monolith-
to-microservice-openshift/master/orders-service/src/main/resources/db/migration/0_ordersdb-
schema.sql
curl -o 1_ordersdb-data.sql https://raw.githubusercontent.com/dynatrace-innovationlab/monolith-to-
microservice-openshift/master/orders-service/src/main/resources/db/migration/1_ordersdb-data.sql
mysql -u root orders < 0_ordersdb-schema.sql
mysql -u root orders < 1_ordersdb-data.sql
mysql -u root
GRANT ALL ON orders.* TO 'ticket'@'%';
show databases;
use orders
show tables;
select * from id_generator;
Step 2:
Setup the database
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/5_Domain_Model_of_Microservice
Confidential 88
Lab: Lift-and-shift TicketMonster
Step 4:
Deploy the Orders microservice
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice
a. Developer -> Add
b.Navigate to git repo for ticketmonster-orders-service template
c. Copy RAW YAML
d.Paste RAW YAML into OpenShift
e. Create and Instantiate
Confidential 91
Lab 6 : Deploy the microservice
monolith
backend
tticketmonster-u1-
v1
ticketmonster-ui-v1
orders-service
Confidential 92
Lab: Lift-and-shift TicketMonster
Step 5:
Deploy ticketmonster-backend-V2
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice
a. Developer -> Add
b.Navigate to git repo for ticketmonster-backend-v2 template
c. Copy RAW YAML
d.Paste RAW YAML into OpenShift
e. Create and Instantiate
Confidential 93
Lab: Lift-and-shift TicketMonster
Step 6:
Create route for ticketmonster-backend-V2
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice
a. Administrator -> Networking - Routes
b. Select “Create Route”
c. Name: backend-v2
d. Service: ticketmonster-backend-v2
e. Target Port: 8080 -> 8080 (TCP)
f. Select “Create”
Confidential 94
Lab: Identify the microservice
monolith
backend
tticketmonst
er-u1-v1
ticketmonster-ui-v1
orders-service
ticketmonster-
backend-v2
backend-v2
Confidential 95
Lab: Lift-and-shift TicketMonster
Step 7:
Split route to backend
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice
a. Split the traffic to the backend
Can be done from the CLI :
oc set route-backends backend ticketmonster-monolith=50 ticketmonster-backend-v2=50 -n project-xx
Or can also be done by editing the yaml in the console:
- In Administrator mode, go in the Routes definitions.
- Select the backend route
- Click Edit
- Add the following yaml after the spec:to , also change the weight in the “to” from 0 to 50
alternateBackends:
- kind: Service
name: ticketmonster-backend-v2
weight: 50
Confidential 96
Lab: Identify the microservice
backend
tticketmonst
er-u1-v1
ticketmonster-ui-v1
orders-service
ticketmonster-
backend-v2
Confidential 97
Lab: Lift-and-shift TicketMonster
Step 8:
Verify Service in Dynatrace
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice
We can verify the service flow in Dynatrace.
From the left menu, choose the Transaction & services tab.
Select service TicketMonsterUI.
Click on View service flow.
Finally, you see the service flow containing the microservice
orders-service.
Confidential 98
Lab: Lift-and-shift TicketMonster
Step 8:
Verify Service in Dynatrace
https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice
Confidential 99
Summary
• Limitation to Monoliths
• Agility –Rebuilding the whole application takes a decent amount of time
• Scalability – Scaling a monolith happens in both directions: vertically as well as horizontally - causing unused resources
• DevOps Cycle – Continuous delivery (high frequency of deployments) fails due to high build time
• Limitations of Monoliths have given rise to Microservices
• Agility - Scope changes can be done in one microservice - other micro services are not impacted from these changes
• Scalability - Individual components can scale as needed
• DevOps Cycle - Since each component operates independently, continuous delivery cycle reduces
• Dynatrace can be leveraged in this Monolith to Microservices Journey to:
• Get Dependency Information
• Detect Service Endpoints, Usage & Behavior
• Understand Service Flow per Endpoint
• Finding Entry Points with CPU Sampling Data
• Define Custom Service Entry Points
10
0
Confidential
dynatrace.com

More Related Content

What's hot

Barbican 1.0 - Open Source Key Management for OpenStack
Barbican 1.0 - Open Source Key Management for OpenStackBarbican 1.0 - Open Source Key Management for OpenStack
Barbican 1.0 - Open Source Key Management for OpenStack
jarito030506
 
Redefining cloud native debugging
Redefining cloud native debugging  Redefining cloud native debugging
Redefining cloud native debugging
LibbySchulze
 
ADDO 2020: "The past, present, and future of cloud native API gateways"
ADDO 2020: "The past, present, and future of cloud native API gateways"ADDO 2020: "The past, present, and future of cloud native API gateways"
ADDO 2020: "The past, present, and future of cloud native API gateways"
Daniel Bryant
 
Vulnerability Discovery in the Cloud
Vulnerability Discovery in the CloudVulnerability Discovery in the Cloud
Vulnerability Discovery in the Cloud
DevOps.com
 
SpringOne2GX 2014 Splunk Presentation
SpringOne2GX 2014 Splunk PresentationSpringOne2GX 2014 Splunk Presentation
SpringOne2GX 2014 Splunk Presentation
Damien Dallimore
 
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
Lightbend
 
Comparison of Current Service Mesh Architectures
Comparison of Current Service Mesh ArchitecturesComparison of Current Service Mesh Architectures
Comparison of Current Service Mesh Architectures
Mirantis
 
Service Mesh - Why? How? What?
Service Mesh - Why? How? What?Service Mesh - Why? How? What?
Service Mesh - Why? How? What?
Orkhan Gasimov
 
The Complete Guide to Service Mesh
The Complete Guide to Service MeshThe Complete Guide to Service Mesh
The Complete Guide to Service Mesh
Aspen Mesh
 
Debugging Complex Issues in Web Applications
Debugging Complex Issues in Web ApplicationsDebugging Complex Issues in Web Applications
Debugging Complex Issues in Web Applications
VMware Tanzu
 
Nashik MuleSoft Virtual Meetup#1 - Shared and Dedicated Load Balancer
Nashik MuleSoft Virtual Meetup#1 - Shared and Dedicated Load BalancerNashik MuleSoft Virtual Meetup#1 - Shared and Dedicated Load Balancer
Nashik MuleSoft Virtual Meetup#1 - Shared and Dedicated Load Balancer
Jitendra Bafna
 
Splunk Modular Inputs / JMS Messaging Module Input
Splunk Modular Inputs / JMS Messaging Module InputSplunk Modular Inputs / JMS Messaging Module Input
Splunk Modular Inputs / JMS Messaging Module Input
Damien Dallimore
 
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
VMware Tanzu
 
The Beginner’s Guide To Spring Cloud
The Beginner’s Guide To Spring CloudThe Beginner’s Guide To Spring Cloud
The Beginner’s Guide To Spring Cloud
VMware Tanzu
 
Un-broken Logging - Operability.io 2015 - Matthew Skelton
Un-broken Logging - Operability.io 2015 - Matthew SkeltonUn-broken Logging - Operability.io 2015 - Matthew Skelton
Un-broken Logging - Operability.io 2015 - Matthew Skelton
Skelton Thatcher Consulting Ltd
 
Meetup milano #3 all you need to know before creating your vpc
Meetup milano #3   all you need to know before creating your vpcMeetup milano #3   all you need to know before creating your vpc
Meetup milano #3 all you need to know before creating your vpc
Gonzalo Marcos Ansoain
 
Pivotal Cloud Foundry 2.4: A First Look
Pivotal Cloud Foundry 2.4: A First LookPivotal Cloud Foundry 2.4: A First Look
Pivotal Cloud Foundry 2.4: A First Look
VMware Tanzu
 
Monitoring Serverless Applications with Datadog
Monitoring Serverless Applications with DatadogMonitoring Serverless Applications with Datadog
Monitoring Serverless Applications with Datadog
DevOps.com
 
Splunk Conf 2014 - Splunking the Java Virtual Machine
Splunk Conf 2014 - Splunking the Java Virtual MachineSplunk Conf 2014 - Splunking the Java Virtual Machine
Splunk Conf 2014 - Splunking the Java Virtual Machine
Damien Dallimore
 
Microservice Pattern Launguage
Microservice Pattern LaunguageMicroservice Pattern Launguage
Microservice Pattern Launguage
Inho Kang
 

What's hot (20)

Barbican 1.0 - Open Source Key Management for OpenStack
Barbican 1.0 - Open Source Key Management for OpenStackBarbican 1.0 - Open Source Key Management for OpenStack
Barbican 1.0 - Open Source Key Management for OpenStack
 
Redefining cloud native debugging
Redefining cloud native debugging  Redefining cloud native debugging
Redefining cloud native debugging
 
ADDO 2020: "The past, present, and future of cloud native API gateways"
ADDO 2020: "The past, present, and future of cloud native API gateways"ADDO 2020: "The past, present, and future of cloud native API gateways"
ADDO 2020: "The past, present, and future of cloud native API gateways"
 
Vulnerability Discovery in the Cloud
Vulnerability Discovery in the CloudVulnerability Discovery in the Cloud
Vulnerability Discovery in the Cloud
 
SpringOne2GX 2014 Splunk Presentation
SpringOne2GX 2014 Splunk PresentationSpringOne2GX 2014 Splunk Presentation
SpringOne2GX 2014 Splunk Presentation
 
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
How to build streaming data pipelines with Akka Streams, Flink, and Spark usi...
 
Comparison of Current Service Mesh Architectures
Comparison of Current Service Mesh ArchitecturesComparison of Current Service Mesh Architectures
Comparison of Current Service Mesh Architectures
 
Service Mesh - Why? How? What?
Service Mesh - Why? How? What?Service Mesh - Why? How? What?
Service Mesh - Why? How? What?
 
The Complete Guide to Service Mesh
The Complete Guide to Service MeshThe Complete Guide to Service Mesh
The Complete Guide to Service Mesh
 
Debugging Complex Issues in Web Applications
Debugging Complex Issues in Web ApplicationsDebugging Complex Issues in Web Applications
Debugging Complex Issues in Web Applications
 
Nashik MuleSoft Virtual Meetup#1 - Shared and Dedicated Load Balancer
Nashik MuleSoft Virtual Meetup#1 - Shared and Dedicated Load BalancerNashik MuleSoft Virtual Meetup#1 - Shared and Dedicated Load Balancer
Nashik MuleSoft Virtual Meetup#1 - Shared and Dedicated Load Balancer
 
Splunk Modular Inputs / JMS Messaging Module Input
Splunk Modular Inputs / JMS Messaging Module InputSplunk Modular Inputs / JMS Messaging Module Input
Splunk Modular Inputs / JMS Messaging Module Input
 
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
Four Steps Toward a Safer Continuous Delivery Practice (Hint: Add Monitoring)
 
The Beginner’s Guide To Spring Cloud
The Beginner’s Guide To Spring CloudThe Beginner’s Guide To Spring Cloud
The Beginner’s Guide To Spring Cloud
 
Un-broken Logging - Operability.io 2015 - Matthew Skelton
Un-broken Logging - Operability.io 2015 - Matthew SkeltonUn-broken Logging - Operability.io 2015 - Matthew Skelton
Un-broken Logging - Operability.io 2015 - Matthew Skelton
 
Meetup milano #3 all you need to know before creating your vpc
Meetup milano #3   all you need to know before creating your vpcMeetup milano #3   all you need to know before creating your vpc
Meetup milano #3 all you need to know before creating your vpc
 
Pivotal Cloud Foundry 2.4: A First Look
Pivotal Cloud Foundry 2.4: A First LookPivotal Cloud Foundry 2.4: A First Look
Pivotal Cloud Foundry 2.4: A First Look
 
Monitoring Serverless Applications with Datadog
Monitoring Serverless Applications with DatadogMonitoring Serverless Applications with Datadog
Monitoring Serverless Applications with Datadog
 
Splunk Conf 2014 - Splunking the Java Virtual Machine
Splunk Conf 2014 - Splunking the Java Virtual MachineSplunk Conf 2014 - Splunking the Java Virtual Machine
Splunk Conf 2014 - Splunking the Java Virtual Machine
 
Microservice Pattern Launguage
Microservice Pattern LaunguageMicroservice Pattern Launguage
Microservice Pattern Launguage
 

Similar to Dynatrace - Red Hat workshop : Monolith to Microservices

Oscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby projectOscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby project
Patrick Chanezon
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
Johannes Brännström
 
Operator Framework Overview
Operator Framework OverviewOperator Framework Overview
Operator Framework Overview
Rob Szumski
 
Build cloud native solution using open source
Build cloud native solution using open source Build cloud native solution using open source
Build cloud native solution using open source
Nitesh Jadhav
 
Docker Application to Scientific Computing
Docker Application to Scientific ComputingDocker Application to Scientific Computing
Docker Application to Scientific Computing
Peter Bryzgalov
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Patrick Chanezon
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Patrick Chanezon
 
Integration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob DaviesIntegration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob Davies
Judy Breedlove
 
Debugging Microservices - QCON 2017
Debugging Microservices - QCON 2017Debugging Microservices - QCON 2017
Debugging Microservices - QCON 2017
Idit Levine
 
Tungsten Fabric Overview
Tungsten Fabric OverviewTungsten Fabric Overview
Tungsten Fabric Overview
Michelle Holley
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Ambassador Labs
 
citus™ iot ecosystem
citus™ iot ecosystemcitus™ iot ecosystem
citus™ iot ecosystem
DUONG Dinh Cuong
 
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusMicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
Emily Jiang
 
Sumo Logic Cert Jam - Advanced Metrics with Kubernetes
Sumo Logic Cert Jam - Advanced Metrics with KubernetesSumo Logic Cert Jam - Advanced Metrics with Kubernetes
Sumo Logic Cert Jam - Advanced Metrics with Kubernetes
Sumo Logic
 
20220406 - SDAN_Presentation1_SDANOverview.pdf
20220406 - SDAN_Presentation1_SDANOverview.pdf20220406 - SDAN_Presentation1_SDANOverview.pdf
20220406 - SDAN_Presentation1_SDANOverview.pdf
ssuser34f58c1
 
Docker meetup - PaaS interoperability
Docker meetup - PaaS interoperabilityDocker meetup - PaaS interoperability
Docker meetup - PaaS interoperability
Ludovic Piot
 
Azure meetup cloud native concepts - may 28th 2018
Azure meetup   cloud native concepts - may 28th 2018Azure meetup   cloud native concepts - may 28th 2018
Azure meetup cloud native concepts - may 28th 2018
Jim Bugwadia
 
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptxToronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
Anurag Dwivedi
 
Centralize and Simplify Secrets Management for Red Hat OpenShift Container En...
Centralize and Simplify Secrets Management for Red Hat OpenShift Container En...Centralize and Simplify Secrets Management for Red Hat OpenShift Container En...
Centralize and Simplify Secrets Management for Red Hat OpenShift Container En...
DevOps.com
 
ThroughTheLookingGlass_EffectiveObservability.pptx
ThroughTheLookingGlass_EffectiveObservability.pptxThroughTheLookingGlass_EffectiveObservability.pptx
ThroughTheLookingGlass_EffectiveObservability.pptx
Grace Jansen
 

Similar to Dynatrace - Red Hat workshop : Monolith to Microservices (20)

Oscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby projectOscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby project
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
 
Operator Framework Overview
Operator Framework OverviewOperator Framework Overview
Operator Framework Overview
 
Build cloud native solution using open source
Build cloud native solution using open source Build cloud native solution using open source
Build cloud native solution using open source
 
Docker Application to Scientific Computing
Docker Application to Scientific ComputingDocker Application to Scientific Computing
Docker Application to Scientific Computing
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
 
Integration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob DaviesIntegration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob Davies
 
Debugging Microservices - QCON 2017
Debugging Microservices - QCON 2017Debugging Microservices - QCON 2017
Debugging Microservices - QCON 2017
 
Tungsten Fabric Overview
Tungsten Fabric OverviewTungsten Fabric Overview
Tungsten Fabric Overview
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
 
citus™ iot ecosystem
citus™ iot ecosystemcitus™ iot ecosystem
citus™ iot ecosystem
 
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexusMicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
MicroProfile, Docker, Kubernetes, Istio and Open Shift lab @dev nexus
 
Sumo Logic Cert Jam - Advanced Metrics with Kubernetes
Sumo Logic Cert Jam - Advanced Metrics with KubernetesSumo Logic Cert Jam - Advanced Metrics with Kubernetes
Sumo Logic Cert Jam - Advanced Metrics with Kubernetes
 
20220406 - SDAN_Presentation1_SDANOverview.pdf
20220406 - SDAN_Presentation1_SDANOverview.pdf20220406 - SDAN_Presentation1_SDANOverview.pdf
20220406 - SDAN_Presentation1_SDANOverview.pdf
 
Docker meetup - PaaS interoperability
Docker meetup - PaaS interoperabilityDocker meetup - PaaS interoperability
Docker meetup - PaaS interoperability
 
Azure meetup cloud native concepts - may 28th 2018
Azure meetup   cloud native concepts - may 28th 2018Azure meetup   cloud native concepts - may 28th 2018
Azure meetup cloud native concepts - may 28th 2018
 
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptxToronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
Toronto MuleSoft_Meetup_Run Time Fabric - Self Managed Kubernetes.pptx
 
Centralize and Simplify Secrets Management for Red Hat OpenShift Container En...
Centralize and Simplify Secrets Management for Red Hat OpenShift Container En...Centralize and Simplify Secrets Management for Red Hat OpenShift Container En...
Centralize and Simplify Secrets Management for Red Hat OpenShift Container En...
 
ThroughTheLookingGlass_EffectiveObservability.pptx
ThroughTheLookingGlass_EffectiveObservability.pptxThroughTheLookingGlass_EffectiveObservability.pptx
ThroughTheLookingGlass_EffectiveObservability.pptx
 

Recently uploaded

Unlocking value with event-driven architecture by Confluent
Unlocking value with event-driven architecture by ConfluentUnlocking value with event-driven architecture by Confluent
Unlocking value with event-driven architecture by Confluent
confluent
 
Maximizing Efficiency and Profitability: Optimizing Data Systems, Enhancing C...
Maximizing Efficiency and Profitability: Optimizing Data Systems, Enhancing C...Maximizing Efficiency and Profitability: Optimizing Data Systems, Enhancing C...
Maximizing Efficiency and Profitability: Optimizing Data Systems, Enhancing C...
OnePlan Solutions
 
OpenChain Webinar: IAV, TimeToAct and ISO/IEC 5230 - Third-Party Certificatio...
OpenChain Webinar: IAV, TimeToAct and ISO/IEC 5230 - Third-Party Certificatio...OpenChain Webinar: IAV, TimeToAct and ISO/IEC 5230 - Third-Party Certificatio...
OpenChain Webinar: IAV, TimeToAct and ISO/IEC 5230 - Third-Party Certificatio...
Shane Coughlan
 
SAP implementation steps PDF - Zyple Software
SAP implementation steps PDF - Zyple SoftwareSAP implementation steps PDF - Zyple Software
SAP implementation steps PDF - Zyple Software
Zyple Software
 
How to Secure Your Kubernetes Software Supply Chain at Scale
How to Secure Your Kubernetes Software Supply Chain at ScaleHow to Secure Your Kubernetes Software Supply Chain at Scale
How to Secure Your Kubernetes Software Supply Chain at Scale
Anchore
 
06. Ruby Array & Hash - Ruby Core Teaching
06. Ruby Array & Hash - Ruby Core Teaching06. Ruby Array & Hash - Ruby Core Teaching
06. Ruby Array & Hash - Ruby Core Teaching
quanhoangd129
 
09. Ruby Object Oriented Programming - Ruby Core Teaching
09. Ruby Object Oriented Programming - Ruby Core Teaching09. Ruby Object Oriented Programming - Ruby Core Teaching
09. Ruby Object Oriented Programming - Ruby Core Teaching
quanhoangd129
 
04. Ruby Operators Slides - Ruby Core Teaching
04. Ruby Operators Slides - Ruby Core Teaching04. Ruby Operators Slides - Ruby Core Teaching
04. Ruby Operators Slides - Ruby Core Teaching
quanhoangd129
 
How To Fill Timesheet in TaskSprint: Quick Guide 2024
How To Fill Timesheet in TaskSprint: Quick Guide 2024How To Fill Timesheet in TaskSprint: Quick Guide 2024
How To Fill Timesheet in TaskSprint: Quick Guide 2024
TaskSprint | Employee Efficiency Software
 
Test Polarity: Detecting Positive and Negative Tests (FSE 2024)
Test Polarity: Detecting Positive and Negative Tests (FSE 2024)Test Polarity: Detecting Positive and Negative Tests (FSE 2024)
Test Polarity: Detecting Positive and Negative Tests (FSE 2024)
andrehoraa
 
DSD-INT 2024 Rainfall nowcasting – now and then - Uijlenhoet
DSD-INT 2024 Rainfall nowcasting – now and then - UijlenhoetDSD-INT 2024 Rainfall nowcasting – now and then - Uijlenhoet
DSD-INT 2024 Rainfall nowcasting – now and then - Uijlenhoet
Deltares
 
02. Ruby Basic slides - Ruby Core Teaching
02. Ruby Basic slides - Ruby Core Teaching02. Ruby Basic slides - Ruby Core Teaching
02. Ruby Basic slides - Ruby Core Teaching
quanhoangd129
 
Amadeus Travel API, Amadeus Booking API, Amadeus GDS
Amadeus Travel API, Amadeus Booking API, Amadeus GDSAmadeus Travel API, Amadeus Booking API, Amadeus GDS
Amadeus Travel API, Amadeus Booking API, Amadeus GDS
aadhiyaeliza
 
Fantastic Design Patterns and Where to use them No Notes.pdf
Fantastic Design Patterns and Where to use them No Notes.pdfFantastic Design Patterns and Where to use them No Notes.pdf
Fantastic Design Patterns and Where to use them No Notes.pdf
6m9p7qnjj8
 
B.Sc. Computer Science Department PPT 2024
B.Sc. Computer Science Department PPT 2024B.Sc. Computer Science Department PPT 2024
B.Sc. Computer Science Department PPT 2024
vmsdeptcom
 
Russian Girls Call Mumbai 🛵🚡9833363713 💃 Choose Best And Top Girl Service And...
Russian Girls Call Mumbai 🛵🚡9833363713 💃 Choose Best And Top Girl Service And...Russian Girls Call Mumbai 🛵🚡9833363713 💃 Choose Best And Top Girl Service And...
Russian Girls Call Mumbai 🛵🚡9833363713 💃 Choose Best And Top Girl Service And...
dream girl
 
Celebrity Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service A...
Celebrity Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service A...Celebrity Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service A...
Celebrity Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service A...
norina2645
 
InflectraCON 360: Risk-Based Testing for Mission Critical Systems
InflectraCON 360: Risk-Based Testing for Mission Critical SystemsInflectraCON 360: Risk-Based Testing for Mission Critical Systems
InflectraCON 360: Risk-Based Testing for Mission Critical Systems
Inflectra
 
Applitools Autonomous 2.0 Sneak Peek.pdf
Applitools Autonomous 2.0 Sneak Peek.pdfApplitools Autonomous 2.0 Sneak Peek.pdf
Applitools Autonomous 2.0 Sneak Peek.pdf
Applitools
 
Fix Production Bugs Quickly - The Power of Structured Logging in Ruby on Rail...
Fix Production Bugs Quickly - The Power of Structured Logging in Ruby on Rail...Fix Production Bugs Quickly - The Power of Structured Logging in Ruby on Rail...
Fix Production Bugs Quickly - The Power of Structured Logging in Ruby on Rail...
John Gallagher
 

Recently uploaded (20)

Unlocking value with event-driven architecture by Confluent
Unlocking value with event-driven architecture by ConfluentUnlocking value with event-driven architecture by Confluent
Unlocking value with event-driven architecture by Confluent
 
Maximizing Efficiency and Profitability: Optimizing Data Systems, Enhancing C...
Maximizing Efficiency and Profitability: Optimizing Data Systems, Enhancing C...Maximizing Efficiency and Profitability: Optimizing Data Systems, Enhancing C...
Maximizing Efficiency and Profitability: Optimizing Data Systems, Enhancing C...
 
OpenChain Webinar: IAV, TimeToAct and ISO/IEC 5230 - Third-Party Certificatio...
OpenChain Webinar: IAV, TimeToAct and ISO/IEC 5230 - Third-Party Certificatio...OpenChain Webinar: IAV, TimeToAct and ISO/IEC 5230 - Third-Party Certificatio...
OpenChain Webinar: IAV, TimeToAct and ISO/IEC 5230 - Third-Party Certificatio...
 
SAP implementation steps PDF - Zyple Software
SAP implementation steps PDF - Zyple SoftwareSAP implementation steps PDF - Zyple Software
SAP implementation steps PDF - Zyple Software
 
How to Secure Your Kubernetes Software Supply Chain at Scale
How to Secure Your Kubernetes Software Supply Chain at ScaleHow to Secure Your Kubernetes Software Supply Chain at Scale
How to Secure Your Kubernetes Software Supply Chain at Scale
 
06. Ruby Array & Hash - Ruby Core Teaching
06. Ruby Array & Hash - Ruby Core Teaching06. Ruby Array & Hash - Ruby Core Teaching
06. Ruby Array & Hash - Ruby Core Teaching
 
09. Ruby Object Oriented Programming - Ruby Core Teaching
09. Ruby Object Oriented Programming - Ruby Core Teaching09. Ruby Object Oriented Programming - Ruby Core Teaching
09. Ruby Object Oriented Programming - Ruby Core Teaching
 
04. Ruby Operators Slides - Ruby Core Teaching
04. Ruby Operators Slides - Ruby Core Teaching04. Ruby Operators Slides - Ruby Core Teaching
04. Ruby Operators Slides - Ruby Core Teaching
 
How To Fill Timesheet in TaskSprint: Quick Guide 2024
How To Fill Timesheet in TaskSprint: Quick Guide 2024How To Fill Timesheet in TaskSprint: Quick Guide 2024
How To Fill Timesheet in TaskSprint: Quick Guide 2024
 
Test Polarity: Detecting Positive and Negative Tests (FSE 2024)
Test Polarity: Detecting Positive and Negative Tests (FSE 2024)Test Polarity: Detecting Positive and Negative Tests (FSE 2024)
Test Polarity: Detecting Positive and Negative Tests (FSE 2024)
 
DSD-INT 2024 Rainfall nowcasting – now and then - Uijlenhoet
DSD-INT 2024 Rainfall nowcasting – now and then - UijlenhoetDSD-INT 2024 Rainfall nowcasting – now and then - Uijlenhoet
DSD-INT 2024 Rainfall nowcasting – now and then - Uijlenhoet
 
02. Ruby Basic slides - Ruby Core Teaching
02. Ruby Basic slides - Ruby Core Teaching02. Ruby Basic slides - Ruby Core Teaching
02. Ruby Basic slides - Ruby Core Teaching
 
Amadeus Travel API, Amadeus Booking API, Amadeus GDS
Amadeus Travel API, Amadeus Booking API, Amadeus GDSAmadeus Travel API, Amadeus Booking API, Amadeus GDS
Amadeus Travel API, Amadeus Booking API, Amadeus GDS
 
Fantastic Design Patterns and Where to use them No Notes.pdf
Fantastic Design Patterns and Where to use them No Notes.pdfFantastic Design Patterns and Where to use them No Notes.pdf
Fantastic Design Patterns and Where to use them No Notes.pdf
 
B.Sc. Computer Science Department PPT 2024
B.Sc. Computer Science Department PPT 2024B.Sc. Computer Science Department PPT 2024
B.Sc. Computer Science Department PPT 2024
 
Russian Girls Call Mumbai 🛵🚡9833363713 💃 Choose Best And Top Girl Service And...
Russian Girls Call Mumbai 🛵🚡9833363713 💃 Choose Best And Top Girl Service And...Russian Girls Call Mumbai 🛵🚡9833363713 💃 Choose Best And Top Girl Service And...
Russian Girls Call Mumbai 🛵🚡9833363713 💃 Choose Best And Top Girl Service And...
 
Celebrity Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service A...
Celebrity Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service A...Celebrity Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service A...
Celebrity Girls Call Mumbai 🛵🚡9910780858 💃 Choose Best And Top Girl Service A...
 
InflectraCON 360: Risk-Based Testing for Mission Critical Systems
InflectraCON 360: Risk-Based Testing for Mission Critical SystemsInflectraCON 360: Risk-Based Testing for Mission Critical Systems
InflectraCON 360: Risk-Based Testing for Mission Critical Systems
 
Applitools Autonomous 2.0 Sneak Peek.pdf
Applitools Autonomous 2.0 Sneak Peek.pdfApplitools Autonomous 2.0 Sneak Peek.pdf
Applitools Autonomous 2.0 Sneak Peek.pdf
 
Fix Production Bugs Quickly - The Power of Structured Logging in Ruby on Rail...
Fix Production Bugs Quickly - The Power of Structured Logging in Ruby on Rail...Fix Production Bugs Quickly - The Power of Structured Logging in Ruby on Rail...
Fix Production Bugs Quickly - The Power of Structured Logging in Ruby on Rail...
 

Dynatrace - Red Hat workshop : Monolith to Microservices

  • 1. Steve Caron Sr. Solution Engineer Dynatrace Center of Excellence Monolith to Microservices
  • 2. 2Confidential Monolith to Microservices with Dynatrace & OpenShift https://bit.ly/dt-rh-jun11 https://github.com/steve-caron-dynatrace/Monolith_to_Microservices
  • 3. 4Confidential What we will accomplish • Set-up TicketMonster • Extract the UI from the monolith • Identify a microservice • Identify the domain model of the microservice • Deploy the microservice • Familiarization with cloud platform • Deployment of microservice • Confidence in breaking the monolith • Persistence layer for the microservice • (real) microservice extracted
  • 4. Confidential 5 Check Prerequisites Make sure your laptop has Internet Access and a modern browser (Google Chrome is ideal) Workshop OpenShift Cluster: URL: https://console-openshift-console.apps.cluster-dynatrac-edbb.dynatrac- edbb.example.opentlc.com/ User: user## (## = assigned number) Password: openshift Workshop Dynatrace tenant: URL: https://wxu551.dynatrace-managed.com/ User: user## (## = assigned number) Password: dynatrace Github Repo: URL: https://github.com/steve-caron-dynatrace/Monolith_to_Microservices
  • 5. 6Confidential Introduction Limitations of Monoliths have given rise to Microservices
  • 7. Confidential 8 • Agility –Rebuilding the whole application takes a decent amount of time • Scalability – Scaling a monolith happens in both directions: vertically as well as horizontally - causing unused resources • DevOps Cycle – Continuous delivery (high frequency of deployments) fails due to high build time • Availability, fault tolerance, and resiliency Limitations of monolithic applications
  • 8. Confidential 9 Limitation of monolithic applications Source: https://tommcfarlin.com/design-patterns-for-refactoring-facade/
  • 9. Confidential 10 • Agility - Scope changes can be done in one microservice - other microservices are not impacted from these changes • Scalability - Individual components can scale as needed • DevOps Cycle - Since each component operates independently, continuous delivery cycle reduces Limitations of Monoliths have given rise to Microservices
  • 10. Confidential 11 Just moving an application to the cloud won’t do it – even if it feels that way
  • 11. Confidential 12 Just moving an application to the cloud won’t do it – even if it feels that way
  • 12. 13Confidential Your App / Container Autonomous Cloud: Deliver Digital Business Value Faster
  • 13. 16Confidential You need to change radically
  • 14. 17Confidential Changing a technology stack and a modern UI is not enough
  • 15. 18Confidential Your understanding of how you deliver needs to change
  • 18. Confidential 25 OpenShift Architecture OpenShift nodes are instances of Red Hat Enterprise Linux / Atomic Host
  • 19. Confidential 26 OpenShift Architecture Application services run in containers on each node
  • 20. Confidential 27 OpenShift Architecture Pods run one to many containers as a co-located unit
  • 21. Confidential 28 OpenShift Architecture Masters leverage Kubernetes to orchestrate nodes and applications
  • 22. Confidential 29 OpenShift Architecture Services allow related pods to connect to each other
  • 23. Confidential 30 OpenShift Architecture Pods can attach to shared persistent storage
  • 24. Confidential 31 OpenShift Architecture Routing routes external requests to pods
  • 25. Confidential 32 OpenShift Architecture Devs and Ops access OpenShift via CLI, Web UI or IDE
  • 26. Confidential 33 Key Concepts - Nodes • Worker machine in Kubernetes • VM or physical machine • Managed by the control plane (master) • Node components: • kubelet • kube-proxy • Container Runtime Engine
  • 27. Confidential 34 Key Concepts - Pods • Smallest “unit of work” in Kubernetes. • Pods are one or more containers that share volumes and namespace. • They are also ephemeral
  • 28. Confidential 35 Key Concepts - Services • Unified method of accessing the exposed workloads of pods. • Think of it as an internal load balancer to your pods. • How it is implemented depends on the cloud provider or the on-prem config • Not ephemeral <service name>.<namespace>.svc.cluster.local
  • 29. Confidential 36 Key Concepts – Deployments • Way of managing Pods via ReplicaSets • Provide rollback functionality and update control • Each iteration creates a unique label that is assigned to both the ReplicaSet and subsequent Pods.
  • 30. Confidential 37 OpenShift concepts cheat sheet Nodes • are instances of underlying OS (Linux) • virtual or physical machine • host one to many Pods Deployments/Replicasets • select a Pod object using labels • ensure a given number of Pod replicas • handle scale-up/down and rolling updates Pods • are (co-located) groups of containers • a Pod’s containers run on the same host (node) Services • select a Pod object using labels • abstract a (replicated) set of Pods by IP, port(s) • provide domain name and simple load balancing Labels • assign identifying metadata to objects (Pods) • are used to organize, group or select objects Routes • expose services to the (cluster) outside world Annotations • assign non-identifying metadata to objects • are used for arbitrary data (build, debug info) Projects • aka namespaces: allows a community of users to organize and manage their content in isolation from other communities.
  • 31. Confidential 38 What is an Operator? • The Operator Framework is an open source toolkit to manage Kubernetes native applications in an effective, automated, and scalable way. • Human operational knowledge in software • Reliably manage application lifecycles as a first-class kube native object
  • 32. Confidential 39 Dynatrace OneAgent Operator in action • Watches for custom resources of type OneAgent • Takes care of OneAgent deployment via DaemonSet • Updates OneAgent to the latest version available 1 1 2 2 3 3 3
  • 33. Confidential 40 All-in-one monitoring of OpenShift cluster and workload
  • 45. 52Confidential Lab: Lift-and-shift TicketMonster a. Login to OpenShift b. Create project-## c. Navigate to your project Step 1: Setup Project https://github.com/peterhack/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
  • 46. Confidential 53 • Overview 1. Create a MySQL service for monolith 2. Push application to OpenShift 3. Bind MySQL service to monolith • Instructions: • Lab: 1_Lift-and-Shift_TicketMonster • Takeaways • Familiarization with OpenShift Lab 1: Lift-and-shift TicketMonster
  • 47. Confidential 54 Lab: Lift-and-shift TicketMonster a. Click on “Add” b. Import YAML/JSON c. Navigate to git repo for ticketmonster-db template d. Copy RAW YAML e. Create db template f. Instantiate db template Step 1: Deploy Database for Monolith https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
  • 48. Confidential 55 Lab: Lift-and-shift TicketMonster a. Click on “Add” b. Import YAML/JSON c. Navigate to git repo for ticketmonster-monolith-template d. Copy RAW YAML e. Create monolith template f. Instantiate monolith template Step 2: Deploy Monolith https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
  • 49. Confidential 56 Lab: Lift-and-shift TicketMonster monolith
  • 50. Confidential 57 Lab: Lift-and-shift TicketMonster a. Click on “Administrator” b. Networking -> Routes -> Create Route c. Name = monolith d. Service = ticketmonster-monolith e. Target Port = 8080 -> 8080 (TCP) Step 3: Create Route to Monolith https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
  • 51. Confidential 58 Lab: Lift-and-shift TicketMonster a. In Route, copy “Location” b. Paste the location url in a browser and exercise the application Step 4: Exercise the application https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster
  • 52. Confidential 59 A single application consolidating all client interactions for the monolith: • Application uses the services provided by the monolith and compose them together • Use an API gateway or service mesh when application needs to invoke calls to several microservices • Works as proxy where the UI pages of different components are invoked to show the interface Extract the UI from the Monolith
  • 53. Confidential 60 • Overview 1) Rename ‘monolith‘ to ‘backend‘ 2) Push new UI to OpenShift 3) Switch to tm-ui-v1 • Instructions: • Lab: 2_Extract_UI_From_Monolith • Takeaways • Deployment of Microservice Lab 2: Extract the UI from the Monolith To start breaking up the monolith, a best practice is extracting the user interface from TicketMonster since this helps to decouple the client facing part from the business logic. So, this lab launches the first microservice to separate the user interface from the rest of TicketMonster as depicted below.
  • 54. Confidential 61 Lab: Lift-and-shift TicketMonster Step 1: Define a new route for the monolith https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster a. Click on “Administrator” b. Networking -> Routes -> Create Route c. Name = backend d. Service = ticketmonster-monolith e. Target Port = 8080 -> 8080 (TCP) f. Copy backend route “host” info in notepad; you will need it later on
  • 55. Confidential 62 Lab 2: Extract the UI from the Monolith monolith backend
  • 56. Confidential 63 Lab: Lift-and-shift TicketMonster a. Click on “Add” b. Import YAML/JSON c. Navigate to git repo for ticketmonster-ui-v1 template d.Paste RAW YAML into OpenShift *replace backend URL* e. Create & Instantiate monolith template Step 2: Decouple UI from the Monolith https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/2_Extract_UI_From_Monolith
  • 57. Confidential 64 Lab 2: Extract the UI from the Monolith monolith backend tticketmonster-ui-v1
  • 58. Confidential 65 Lab: Lift-and-shift TicketMonster Step 1: Define a new route for the monolith https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/1_Lift-and-Shift_TicketMonster a. Click on “Administrator” b. Networking -> Routes -> Create Route c. Name = ticketmonster-ui-v1 d. Service = ticketmonster-ui-v1 e. Target Port = 8080 -> 8080 (TCP)
  • 59. Confidential 66 Lab 2: Extract the UI from the Monolith monolith backend tticketmonster-ui- v1 ticketmonster-ui-v1
  • 60. Confidential 67 Lab: Lift-and-shift TicketMonster a. Select “ticketmonster-UI” URL from the route section and validate that the page states “This UI hits the MONOLITH” Step 3: Validate new UI https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/2_Extract_UI_From_Monolith
  • 61. Confidential 68 How to identify a Microservice? • Problem: we don’t know much about our monolith: • Who is depending on us and how are they depending on us? • Whom are we depending on and how are we depending on them? • What happens within our monolith code base when it gets called? • Solution: Leverage Dynatrace to: • Get Dependency Information • Detect Service Endpoints, Usage & Behavior • Understand Service Flow per Endpoint • Finding Entry Points with CPU Sampling Data • Define Custom Service Entry Points
  • 62. Confidential 69 Identify a Microservice – understand dependencies
  • 63. Confidential 70 Identify a Microservice – find the entry point in the code
  • 64. Confidential 71 Other considerations to factor in the decision • Business risk – Is the planned microservice a critical component and does it impact the business in case it fails (conduct a risk assessment)? • Product roadmap – Which parts of the monolith need to be refactored anyways? • Business strategy – What is the long-time business strategy of the monolith? • Technology strategy – Do new technologies impact the further development of the monolith?
  • 65. Confidential 72 • Overview 1) Analyze UI and monolith 2) Define Custom Service Detection Rule • Instructions: • Lab: 4_Identify_a_Microservice • Takeaways • Virtually broken the monolith Lab 4 : Identify a Microservice - Observability as part of the platform
  • 66. Confidential 73 Lab: Lift-and-shift TicketMonster Step 1: Define custom service entry point https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice a. Log into Dynatrace Tenant b.Go to Settings, Server-side service monitoring, and click on Custom service detection” c. Click on Define Java service, set name of custom service to “project-xx-orders-service” and click Find entry point d.Select the process group that contains your entry point “ticketmonster-monolith” and click Continue.
  • 67. Confidential 74 Lab: Lift-and-shift TicketMonster Step 2: Define custom service entry point https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice a. Search for loaded classes and interfaces with name BookingService, select “org.jboss.examples.ticketmonster.rest.BookingService” and click Continue. b.Use Selected Class and click Continue c. Select method with “createBooking” as entry point and click Finish d.Review and select ”Save Changes”
  • 68. Confidential 75 Lab: Lift-and-shift TicketMonster Step 3: Optional : Restart Pod to activate custom service https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice a. In Openshift UI, Select Administrator b.Workloads -> Pods c. Select Pod “ticketmonster-monolith-xxxx” d.Action -> Delete Pod
  • 69. Confidential 76 Lab: Lift-and-shift TicketMonster Step 4: Book a ticket on Ticket Monster https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice a. Open the ”ticketmonster-ui-v1” in a browser b.Click on Events, Concerts, and on, eg. Rock concert of the decade c. Select Venue, Date, and Order Ticket d.Select section and number of tickets e. Checkout and review booking details
  • 70. Confidential 77 Lab: Lift-and-shift TicketMonster Step 5: Consider Service Flow in Dynatrace https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice a. Log into Dynatrace console and select the Project-## Management Zone b.Choose the Transactions & services tab from left menu c. Select TicketMonsterUI and click on View service flow
  • 71. Confidential 78 Lab: Lift-and-shift TicketMonster Step 5: Consider Service Flow in Dynatrace
  • 72. Confidential 79 Identifying the Domain Model of the Microservice • Data management of a decoupled Microservice: • Use an existing API of the monolith to keep data management at the monolith • (If no appropriate API is available) create a new lower-level API for the microservice (but still keep the data management at the monolith) • Do an ETL (Extract, Transform, Load) from the monolith’s database to the microservice’ database and keep both in sync • Data model shows how data is stored and entities relate to each other in the persistence layer. • Domain model describes the behavior of the solution space of a microservice’s domain and tends to focus on use case scenarios
  • 73. Confidential 80 Refactoring your Source Code • 1) Extract OrdersService from the Monolith • Cut out the class containing createBooking method • Identify missing abstractions for a successful build • 2) Strangle the OrdersService around the Monolith • Call the OrdersService in the business logic of the backend • 3) Build the Data and Domain Models for the Microservice • Integrate a data virtualization framework into your code base • Extend the data model to the domain model by virtualized data views
  • 74. Confidential 81 • Overview 1. Analyze database queries of Microservice • Instructions: • Lab: 5_Domain_Model_of_Microservice • Takeaways • Persistence layer of Microservices Lab 5 : The Microservice and its Domain Model
  • 75. Confidential 82 Lab: Lift-and-shift TicketMonster Step 1: Inspect the Data and Domain Models with Dynatrace https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/4_Identify_a_Microservice a. Within Dynatrace Service Flow, follow through custom project- xx-orders-service to mysql db b.Click on “View database statements”
  • 76. Confidential 83 Lab: Lift-and-shift TicketMonster Step 2: View database statements
  • 77. Confidential 84 • Overview 1. Deploy a new backend version 2. Create a MySQL service instance for microservice 3. Build microservice and push it to OpenShift 4. Bind MySQL service instance to microservice 5. Re-deploy UI to use new backend version • Instructions: • Lab: 6_Deploy_the_Microservice • Takeaways • Microservice for a specific bounded context Lab 6 : Deploy the Microservice Based on the result of the previous labs, you identified the microservice OrdersService that has its own code repository and defines its own domain model. To launch this service, it is not recommended to directly route traffic to this new service since we cannot fully ensure that it works as supposed. For this reason, we strangle the microservice around the monolith. In other words, all incoming requests will still be intercepted by the backend service, which forwards synthetic or live traffic to OrdersService. In this lab you'll use feature flags and OpenShift routing mechanism to smoothly incorporate the new microservice into the monolith. The final state of this lab is shown below:
  • 78. Confidential 85 Lab: Lift-and-shift TicketMonster Step 1: Create the new data store for the Orders microservice https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/5_Domain_Model_of_Microservice a. Select “Add” b.Import YAML/JSON c. Navigate to git repo for ticketmonster orders-db template d.Paste RAW YAML into OpenShift e. Create and Instantiate
  • 79. Confidential 86 Lab: Lift-and-shift TicketMonster Step 2: Setup the database https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/5_Domain_Model_of_Microservice a. Administrator -> Workloads -> Pod b.Select the “orders-db” pod c. Select the “Terminal” tab d.In the terminal type: a.cd~ b.pwd *Should now be in directory /var/lib/mysql
  • 80. Confidential 87 curl -o 0_ordersdb-schema.sql https://raw.githubusercontent.com/dynatrace-innovationlab/monolith- to-microservice-openshift/master/orders-service/src/main/resources/db/migration/0_ordersdb- schema.sql curl -o 1_ordersdb-data.sql https://raw.githubusercontent.com/dynatrace-innovationlab/monolith-to- microservice-openshift/master/orders-service/src/main/resources/db/migration/1_ordersdb-data.sql mysql -u root orders < 0_ordersdb-schema.sql mysql -u root orders < 1_ordersdb-data.sql mysql -u root GRANT ALL ON orders.* TO 'ticket'@'%'; show databases; use orders show tables; select * from id_generator; Step 2: Setup the database https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/5_Domain_Model_of_Microservice
  • 81. Confidential 88 Lab: Lift-and-shift TicketMonster Step 4: Deploy the Orders microservice https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice a. Developer -> Add b.Navigate to git repo for ticketmonster-orders-service template c. Copy RAW YAML d.Paste RAW YAML into OpenShift e. Create and Instantiate
  • 82. Confidential 91 Lab 6 : Deploy the microservice monolith backend tticketmonster-u1- v1 ticketmonster-ui-v1 orders-service
  • 83. Confidential 92 Lab: Lift-and-shift TicketMonster Step 5: Deploy ticketmonster-backend-V2 https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice a. Developer -> Add b.Navigate to git repo for ticketmonster-backend-v2 template c. Copy RAW YAML d.Paste RAW YAML into OpenShift e. Create and Instantiate
  • 84. Confidential 93 Lab: Lift-and-shift TicketMonster Step 6: Create route for ticketmonster-backend-V2 https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice a. Administrator -> Networking - Routes b. Select “Create Route” c. Name: backend-v2 d. Service: ticketmonster-backend-v2 e. Target Port: 8080 -> 8080 (TCP) f. Select “Create”
  • 85. Confidential 94 Lab: Identify the microservice monolith backend tticketmonst er-u1-v1 ticketmonster-ui-v1 orders-service ticketmonster- backend-v2 backend-v2
  • 86. Confidential 95 Lab: Lift-and-shift TicketMonster Step 7: Split route to backend https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice a. Split the traffic to the backend Can be done from the CLI : oc set route-backends backend ticketmonster-monolith=50 ticketmonster-backend-v2=50 -n project-xx Or can also be done by editing the yaml in the console: - In Administrator mode, go in the Routes definitions. - Select the backend route - Click Edit - Add the following yaml after the spec:to , also change the weight in the “to” from 0 to 50 alternateBackends: - kind: Service name: ticketmonster-backend-v2 weight: 50
  • 87. Confidential 96 Lab: Identify the microservice backend tticketmonst er-u1-v1 ticketmonster-ui-v1 orders-service ticketmonster- backend-v2
  • 88. Confidential 97 Lab: Lift-and-shift TicketMonster Step 8: Verify Service in Dynatrace https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice We can verify the service flow in Dynatrace. From the left menu, choose the Transaction & services tab. Select service TicketMonsterUI. Click on View service flow. Finally, you see the service flow containing the microservice orders-service.
  • 89. Confidential 98 Lab: Lift-and-shift TicketMonster Step 8: Verify Service in Dynatrace https://github.com/steve-caron-dynatrace/Monolith_to_Microservices/tree/master/6_Deploy_the_Microservice
  • 90. Confidential 99 Summary • Limitation to Monoliths • Agility –Rebuilding the whole application takes a decent amount of time • Scalability – Scaling a monolith happens in both directions: vertically as well as horizontally - causing unused resources • DevOps Cycle – Continuous delivery (high frequency of deployments) fails due to high build time • Limitations of Monoliths have given rise to Microservices • Agility - Scope changes can be done in one microservice - other micro services are not impacted from these changes • Scalability - Individual components can scale as needed • DevOps Cycle - Since each component operates independently, continuous delivery cycle reduces • Dynatrace can be leveraged in this Monolith to Microservices Journey to: • Get Dependency Information • Detect Service Endpoints, Usage & Behavior • Understand Service Flow per Endpoint • Finding Entry Points with CPU Sampling Data • Define Custom Service Entry Points