If you want to break your monolith into components, services, or even functions, it is important to understand where and how to break your existing code base and architecture into smaller units to allow it to scale and perform, and to make it easy to operate. This session, a representative from Dynatrace shows how the company redefined its architecture, explains which migration capabilities its engineers built into its product, and describes how the lessons learned can benefit everyone as they fearlessly transform from monolith to serverless.
1. Cloud innovation and automation
Fearless from Monolith to
Serverless with Dynatrace
Adam Carter
Technical Evangelist @ Dynatrace
@adambomb00
adam.carter@dynatrace.com
11. Amazon SNS
Amazon S3
Amazon API
Gateway
Amazon
SQS
Amazon
Kinesis
Amazon
DynamoDB
Business Logic
Glue between
the bricks
Your Services
Leveraging standard service
and platform capabilities
Courtesy of AWS
12. Amazon SNS
Amazon S3
Amazon API
Gateway
Amazon
SQS
Amazon
Kinesis
Amazon
DynamoDB
Microservices
to Functions
Courtesy of AWS
13. Amazon SNS
Amazon S3
Amazon API
Gateway
Amazon
SQS
Amazon
Kinesis
Amazon
DynamoDB
Microservices
to Functions
Courtesy of AWS
14. Amazon SNS
Amazon S3
Amazon API
Gateway
Amazon
SQS
Amazon
Kinesis
Amazon
DynamoDB
Microservices
to Functions
Courtesy of AWS
19. Amazon SNS
Amazon S3
Amazon API
Gateway
Amazon
SQS
Amazon
Kinesis
Amazon
DynamoDB
Microservices
to
Functions
Ephemeral
When the system is
idle, it shuts down and
costs nothing to run
Courtesy of AWS
20. Questions / Challenges on that “Migration” Journey
• Where to start?
• What to break out?
• Dependencies?
• Works as expected?
• Users happy?
• Does it scale?
• Does it perform?
• Works as expected?
• Users happy?
• How to optimize?
• How to automate?
?
? ?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
? ?
?
?
?
? ? ?
?
?
?
?
From
On-Premise Monolith
Via
Containerized Services
To
Functions & Cloud Services
21. 26
500
Feature Releases / Year
Deployments / Day
31000 60h
Unit & Int Tests / hour UI Tests per Build
More Quality
~120 340
Code commits / day Stories per sprint
More Agile
93%
Production bugs found by Dev
More Stability 450 99.998%
Global EC2 Instances Global Availability
Dynatrace Journey! It shaped our product!
23. Where to start?
What to break out?
Dependencies?
Works as expected?
Does it scale?
Does it perform?
Works as expected?
How to scale?
How to optimize?
How to automate?
Dynatrace Smartscape
We tell you WHAT to migrate and
WHERE to break the monolith!
Dynatrace AI
Automatic End User, Service and
Infrastructure Root Cause Analysis
Dynatrace Automation API
Automate Rollout in your
Containers & Functions. Automate
Shift-Left and Self-Healing
Dynatrace enables Break, Shift, Re-Platform
24. Dynatrace helps to decide WHAT to migrate/shift
Dynatrace Smartscape
• Auto-dependency
mapping of internal &
external services
• Auto-load detection and
baselining
• Auto-resource
consumption detection
Automate T-Shirt Size Categorization for your Migration Plan
25. Tightly coupled! Shall we really distribute/extract?
Dynatrace “virtually” breaks your monolith!
Dynatrace helps to decide WHERE to break the monolith
26. Getting to know the Monolith Architecture
?
?
?
?
?
?
?
?
?
?
?
Service
Endpoints
Depending
Services
Service Flow
29. Step #3 Understanding Service Flow per Endpoint
#1 Filter on specific endpoint
#2 See Execution Flow to Depending Services
#3 Dependencies
& Call Patterns
#4 Call Pattern Details
30. Step #3 Understanding Service Flow per Endpoint
#1 Filter on specific endpoint
#2 See Execution Flow to Depending Services
#3 Dependencies
& Call Patterns
#4 Call Pattern Details
31. What we learned so far!
/review
/finish
/config
/payment
Backend
Service X
DB A
Q 1
Endpoints +
Throughput
Dependencies &
Call Patterns
Flow & CPU
Consumption
32. Next: Where to break the monolith?
/review
/finish
/config
/payment
Backend
Service X
DB A
Q 1
?
?
?
?
?
?
?
?
?
?
Entry Points? Entry Points?
33. Step 4: Finding Entry Points with CPU Sampling
#1 Filter on specific endpoint
#2 Search for specific code
#3 Found Entry Point to Package
34. Step #5 Define Custom Service Entry Points
#1 Service Name
#2 Method
35. We “virtually” broke the monolith!
/review
/finish
/config
/payment
Backend
Service X
DB A
Q 1
User
Catalog
Check
Avail.
Credit-
Card
Billing
Order
Journey
Booking
Configuration
Payment
36. Step #6 Learn from Dynatrace Data
Tightly coupled! Shall we really distribute/extract?
37. Dynatrace validates & optimizes scalability
Low Load Peak LoadRegular Load
How does each service scale? Does it correctly fail over??
38. Dynatrace Baselining Validates Before vs After!
How is Performance & Resource Consumption per Service Endpoint?
Before After
39. Planned Architectural Service Flow
Actual Architectural Service Flow
Identify / Optimize Architectural Patterns
Recursive Calls, N+1 Call Pattern, Chatty Interfaces, No Caching Layer …
Dynatrace ServiceFlow Validates your Architecture!
40. WHAT RUNS WHERE?
Monitoring Data and Tags for each EC2 instance through CloudWatch
Dependencies to Cloud Services
Who is calling RDS? DynamoDB? Lambdas?
Dynatrace Cloud Monitoring Validates Cloud Service Dependencies
43. Dynatrace Log Analytics: All with Transaction Context
Every Log from Every Process: Automatic Pattern Detection
All Logs for Services in Containers: ECS, Fargate …
45. From Monolith via Microservices to Serverless – and into the Mainframe
Dynatrace End-to-End through your Stack
Monolith
Serverless
Micro-
services
Legacy /
3rd-Party
46. Dynatrace RUM Validates User Behavior Before vs After!
How are Conversions, Bounce Rates, Interaction Behavior, JavaScript Errors, Crashes?
47. Dynatrace AI: When something fails, find out: WHERE, WHY and HOW FASTER
If you break things!
ChatOps with the AI
48. Dynatrace APIs: How to DevOps? Shift-Left? Self-Healing?
pushDynatraceDeploymentEvent
Pushes Deployment Info to Dynatrace Entities
validateBuildDynatraceWorker
Compares Builds and Approves/Rejects Pipeline
pushDynatraceDeploymentEvent
Pushes Deployment Info to Dynatrace Entities
validateBuildDynatraceWorker
Validates Production and Approves/Rejects Pipeline
handleDynatraceProblemNotification
Executes Auto-Remediating Actions, e.g: Rollback
Build 6
Build 7
Production
Production
Auto-Approve!
Auto-Reject!
Auto-Approve!
Auto-Reject!
https://github.com/Dynatrace/AWSDevOpsTutorial
49. • Signup through AWS Marketplace
• Run as SaaS or On-Premises
• Visit us at our booth
• Follow us @dynatrace
Try