SlideShare une entreprise Scribd logo
1  sur  38
From Monolith to Observable
Microservices using DDD
Maria Gomez @mariascandella
Tech Principal
...
HOW?
What is Domain Driven Design?
It is an approach to building software that has complex and ever-
changing business requirements
Key Concepts
A sphere of knowledge, influence, or activity. What an organisation does, and the world it
does it in.
Domain
A system of abstractions describing selected aspects of a Domain. It is used to solve
problems related to that Domain
Subdomains
Key Concepts
A Language structured around the Subdomain and used by all team members.
Ubiquitous Language
An explicit boundary within which a Subdomain exists. Inside, all terms have a specific
meaning and are part of the Ubiquitous Language
Bounded Context
https://martinfowler.com/bliki/BoundedContext.html
Sales
Catalog
Support
Event Storming
Event Storming is a workshop format for
quickly exploring complex business
domains.
http://ziobrando.blogspot.com/2013/11/introducing-event-storming.html
By Henning Schwentner - Own work, CC BY-SA 4.0,
https://commons.wikimedia.org/w/index.php?curid=57766348
Key Concepts
Something happened, of interest to a domain expert
Domain Event
An external instruction to do something. It triggers a Domain Event.
Command
The portion of the system that receives commands and decides whether to execute them
or not, thus producing a domain event.
Aggregate
Ticket
sent by
email
Payment
confirmed
Ticket
bought
Order
created
Ticket
added to
cart
Seat
reserved
Show
selected
Choose
show
Choose
seat
Add
ticket to
cart
Move to
checkout
Insert
checkout
data
Process
paymentBuyer
Accountant
Customer
Service
Order
confirmation
sent by
email
Payment
confirmed
Order
held
Delivery
Method
added
Promo
added to
Order
Order
modified
Order
created
Move to
checkout
Add /
Remove
Articles
Use
Promo
code
Select
Delivery
Method
Insert
checkout
data
Process
payment
Promotion
Accountant
Customer
Service
Delivery
Address
Order
What to do when bounded contexts are identified?
1. Isolate them
2. Extract them into services
Bounded Context
High Cohesion
Loose Coupling
Represents Business Capability
Individual Tech Stacks & Persistence
Deploy independently
Isolate Failure
Individual Scalability
Microservices+ =
Order
confirmation
sent by
email
Payment
confirmed
Order
held
Delivery
Method
added
Promo
added to
Order
Order
modified
Order
created
Move to
checkout
Add /
Remove
Articles
Use
Promo
code
Select
Delivery
Method
Insert
checkout
data
Process
payment
Promotion
Accountant
Customer
Service
Delivery
Address
Order
Where to start?
● Pace of change
● Performance
● Security
● Team structure
● Dependencies (internal or external)
● Technology
Identify
Business Value
Warner Bros. [Public domain]
But, wait…
We’re not done yet!
Iceberg by Oleksandr Panasovskyi from the Noun Project
What to extract
Testing
Deployment
Operations
Security
Observability
“Observability is the ability to interrogate your system
and get accurate answers that improve your
understanding of it”
Tracing
MonitoringAlerts
Logging
No Logs by Sweet Farm from the Noun Project
Alert by ✦ Shmidt Sergey ✦ from the Noun Project
traceability by Timofey Rostilov from the Noun Project
Collector
Monitoring
Query UI
Transform
Logging
Log Structured Data
{
CreationTime: “2017-02-24T17:49:15”,
Id: “9fe0650565-3dac-425a-c83e38499c”,
Host: “WEBSRVR06”,
ServiceId: “MyShoppingCartService”,
ComponentId: “DynamoDBWriter”,
Message: “Body size exceeded 400kb limit”
….
….
}
Monitoring
● What’s relevant for each microservice and for the entire system?
● It could be not just single data points but a combination of things.
● Start with something simple and evolve as things get more complicated.
Allows you to make informed decisions
Semantic Monitoring
Monitoring
Overload!
Alerting
● Alerts should be actionable
Things that need immediate reaction
Alerting
● Alerts should be actionable
● Not all alerts need a human. Leverage automation!
Things that need immediate reaction
Tracing
Useful for debugging
POST /pay
TraceId
TraceId
TraceId TraceId
Tracing
Useful for debugging
POST /pay
TraceId
TraceId
TraceId TraceId
Tracing
system
Take Away
● Start by identifying business domains, DDD can help you on this.
● Don’t wait until having the perfect list of domains, they will change over time.
● Prioritize decoupling based on business value.
● Include operational concerns in your backlog (logging, monitoring, alerting & tracing)
○ Be intentional about things you log, monitor, and alert on
○ Proactively iterate and eliminate noise
○ Evaluate and use existing tools and libraries (ELK stack, OpenTracing, Honeycomb, Datadog, Opsgenie, etc)
Microservices is really not a free lunch!
Thanks!
Maria Gomez
@mariascandella

Contenu connexe

Tendances

Establishing a-quality-vulnerability-management-program
Establishing a-quality-vulnerability-management-programEstablishing a-quality-vulnerability-management-program
Establishing a-quality-vulnerability-management-programPriyanka Aash
 
Security Program Development for the Hipster Company
Security Program Development for the Hipster CompanySecurity Program Development for the Hipster Company
Security Program Development for the Hipster CompanyPriyanka Aash
 
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...More Than Monitoring: How Observability Takes You From Firefighting to Fire P...
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...DevOps.com
 
SplunkLive! Zurich 2018: MARVES GmbH
SplunkLive! Zurich 2018: MARVES GmbHSplunkLive! Zurich 2018: MARVES GmbH
SplunkLive! Zurich 2018: MARVES GmbHSplunk
 
Monitoring with Artificial Intelligence [Webinar]
Monitoring with Artificial Intelligence [Webinar]Monitoring with Artificial Intelligence [Webinar]
Monitoring with Artificial Intelligence [Webinar]Dynatrace
 
A Stratagem on Strategy: Rolling Security Testing into Product Testing
A Stratagem on Strategy: Rolling Security Testing into Product TestingA Stratagem on Strategy: Rolling Security Testing into Product Testing
A Stratagem on Strategy: Rolling Security Testing into Product TestingKevin Fealey
 
SACON - Incident Response Automation & Orchestration (Amit Modi)
SACON - Incident Response Automation & Orchestration (Amit Modi)SACON - Incident Response Automation & Orchestration (Amit Modi)
SACON - Incident Response Automation & Orchestration (Amit Modi)Priyanka Aash
 
Protecting National Critical Infrastructure Asiangames 2018
Protecting National Critical Infrastructure Asiangames 2018Protecting National Critical Infrastructure Asiangames 2018
Protecting National Critical Infrastructure Asiangames 2018Yusuf Hadiwinata Sutandar
 
CLOUD SECURITY ESSENTIALS 2.0 Full Stack Hacking & Recovery
CLOUD SECURITY ESSENTIALS 2.0 Full Stack Hacking & RecoveryCLOUD SECURITY ESSENTIALS 2.0 Full Stack Hacking & Recovery
CLOUD SECURITY ESSENTIALS 2.0 Full Stack Hacking & RecoveryPriyanka Aash
 
Best Practices for Driving Software Quality through a Federated Application S...
Best Practices for Driving Software Quality through a Federated Application S...Best Practices for Driving Software Quality through a Federated Application S...
Best Practices for Driving Software Quality through a Federated Application S...DevOps.com
 
Cloud Security Essentials 2.0 at RSA
Cloud Security Essentials 2.0 at RSACloud Security Essentials 2.0 at RSA
Cloud Security Essentials 2.0 at RSAShannon Lietz
 
Dynatrace Cloud-Native Workshop Slides
Dynatrace Cloud-Native Workshop SlidesDynatrace Cloud-Native Workshop Slides
Dynatrace Cloud-Native Workshop SlidesVMware Tanzu
 
Testing your PowerShell code with Pester - Florin Loghiade
Testing your PowerShell code with Pester - Florin LoghiadeTesting your PowerShell code with Pester - Florin Loghiade
Testing your PowerShell code with Pester - Florin LoghiadeITCamp
 
Secure Data Sharing in OpenShift Environments
Secure Data Sharing in OpenShift EnvironmentsSecure Data Sharing in OpenShift Environments
Secure Data Sharing in OpenShift EnvironmentsDevOps.com
 
How PagerDuty Achieved End-to-End Visibility with Splunk and AWS Webinar Deck
How PagerDuty Achieved End-to-End Visibility with Splunk and AWS Webinar DeckHow PagerDuty Achieved End-to-End Visibility with Splunk and AWS Webinar Deck
How PagerDuty Achieved End-to-End Visibility with Splunk and AWS Webinar DeckAmazon Web Services
 
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016Shannon Lietz
 
DevOps Underground - DevOps Higher Maturity Levels
DevOps Underground - DevOps Higher Maturity LevelsDevOps Underground - DevOps Higher Maturity Levels
DevOps Underground - DevOps Higher Maturity Levelskloia
 

Tendances (20)

Microevent
MicroeventMicroevent
Microevent
 
Establishing a-quality-vulnerability-management-program
Establishing a-quality-vulnerability-management-programEstablishing a-quality-vulnerability-management-program
Establishing a-quality-vulnerability-management-program
 
Security Program Development for the Hipster Company
Security Program Development for the Hipster CompanySecurity Program Development for the Hipster Company
Security Program Development for the Hipster Company
 
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...More Than Monitoring: How Observability Takes You From Firefighting to Fire P...
More Than Monitoring: How Observability Takes You From Firefighting to Fire P...
 
SplunkLive! Zurich 2018: MARVES GmbH
SplunkLive! Zurich 2018: MARVES GmbHSplunkLive! Zurich 2018: MARVES GmbH
SplunkLive! Zurich 2018: MARVES GmbH
 
Monitoring with Artificial Intelligence [Webinar]
Monitoring with Artificial Intelligence [Webinar]Monitoring with Artificial Intelligence [Webinar]
Monitoring with Artificial Intelligence [Webinar]
 
A Stratagem on Strategy: Rolling Security Testing into Product Testing
A Stratagem on Strategy: Rolling Security Testing into Product TestingA Stratagem on Strategy: Rolling Security Testing into Product Testing
A Stratagem on Strategy: Rolling Security Testing into Product Testing
 
SACON - Incident Response Automation & Orchestration (Amit Modi)
SACON - Incident Response Automation & Orchestration (Amit Modi)SACON - Incident Response Automation & Orchestration (Amit Modi)
SACON - Incident Response Automation & Orchestration (Amit Modi)
 
Extreme DevOps in Fintech
Extreme DevOps in FintechExtreme DevOps in Fintech
Extreme DevOps in Fintech
 
Protecting National Critical Infrastructure Asiangames 2018
Protecting National Critical Infrastructure Asiangames 2018Protecting National Critical Infrastructure Asiangames 2018
Protecting National Critical Infrastructure Asiangames 2018
 
CLOUD SECURITY ESSENTIALS 2.0 Full Stack Hacking & Recovery
CLOUD SECURITY ESSENTIALS 2.0 Full Stack Hacking & RecoveryCLOUD SECURITY ESSENTIALS 2.0 Full Stack Hacking & Recovery
CLOUD SECURITY ESSENTIALS 2.0 Full Stack Hacking & Recovery
 
Best Practices for Driving Software Quality through a Federated Application S...
Best Practices for Driving Software Quality through a Federated Application S...Best Practices for Driving Software Quality through a Federated Application S...
Best Practices for Driving Software Quality through a Federated Application S...
 
Check Point and Cisco: Securing the Private Cloud
Check Point and Cisco: Securing the Private CloudCheck Point and Cisco: Securing the Private Cloud
Check Point and Cisco: Securing the Private Cloud
 
Cloud Security Essentials 2.0 at RSA
Cloud Security Essentials 2.0 at RSACloud Security Essentials 2.0 at RSA
Cloud Security Essentials 2.0 at RSA
 
Dynatrace Cloud-Native Workshop Slides
Dynatrace Cloud-Native Workshop SlidesDynatrace Cloud-Native Workshop Slides
Dynatrace Cloud-Native Workshop Slides
 
Testing your PowerShell code with Pester - Florin Loghiade
Testing your PowerShell code with Pester - Florin LoghiadeTesting your PowerShell code with Pester - Florin Loghiade
Testing your PowerShell code with Pester - Florin Loghiade
 
Secure Data Sharing in OpenShift Environments
Secure Data Sharing in OpenShift EnvironmentsSecure Data Sharing in OpenShift Environments
Secure Data Sharing in OpenShift Environments
 
How PagerDuty Achieved End-to-End Visibility with Splunk and AWS Webinar Deck
How PagerDuty Achieved End-to-End Visibility with Splunk and AWS Webinar DeckHow PagerDuty Achieved End-to-End Visibility with Splunk and AWS Webinar Deck
How PagerDuty Achieved End-to-End Visibility with Splunk and AWS Webinar Deck
 
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016
A Throwaway Deck for Cloud Security Essentials 2.0 delivered at RSA 2016
 
DevOps Underground - DevOps Higher Maturity Levels
DevOps Underground - DevOps Higher Maturity LevelsDevOps Underground - DevOps Higher Maturity Levels
DevOps Underground - DevOps Higher Maturity Levels
 

Similaire à From Monolith to Observable Microservices using DDD

Log Analytics for Distributed Microservices
Log Analytics for Distributed MicroservicesLog Analytics for Distributed Microservices
Log Analytics for Distributed MicroservicesKai Wähner
 
The Essentials Of Project Management
The Essentials Of Project ManagementThe Essentials Of Project Management
The Essentials Of Project ManagementLaura Arrigo
 
Secure Your DevOps Pipeline Best Practices Meetup 08022024.pptx
Secure Your DevOps Pipeline Best Practices Meetup 08022024.pptxSecure Your DevOps Pipeline Best Practices Meetup 08022024.pptx
Secure Your DevOps Pipeline Best Practices Meetup 08022024.pptxlior mazor
 
SCS DevSecOps Seminar - State of DevSecOps
SCS DevSecOps Seminar - State of DevSecOpsSCS DevSecOps Seminar - State of DevSecOps
SCS DevSecOps Seminar - State of DevSecOpsStefan Streichsbier
 
Sukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud ManagementSukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud ManagementSukumar Nayak
 
Brighttalk understanding the promise of sde - final
Brighttalk   understanding the promise of sde - finalBrighttalk   understanding the promise of sde - final
Brighttalk understanding the promise of sde - finalAndrew White
 
Welcome to the Metrics
Welcome to the MetricsWelcome to the Metrics
Welcome to the MetricsVMware Tanzu
 
Microservices Architecture for e-Commerce
Microservices Architecture for e-CommerceMicroservices Architecture for e-Commerce
Microservices Architecture for e-CommerceDivante
 
Top10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome AppsTop10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome AppsCasey Lee
 
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...Mobodexter
 
EasySOA business case and real world use case 20130220
EasySOA business case and real world use case 20130220EasySOA business case and real world use case 20130220
EasySOA business case and real world use case 20130220Marc Dutoo
 
Note This project is broken up into Windows and Mac version.pdf
Note This project is broken up into Windows and Mac version.pdfNote This project is broken up into Windows and Mac version.pdf
Note This project is broken up into Windows and Mac version.pdfsagaraccura
 
This project is broken up into Windows and Mac versions lis.pdf
This project is broken up into Windows and Mac versions lis.pdfThis project is broken up into Windows and Mac versions lis.pdf
This project is broken up into Windows and Mac versions lis.pdfadinathfashion1
 
Platform governance, gestire un ecosistema di microservizi a livello enterprise
Platform governance, gestire un ecosistema di microservizi a livello enterprisePlatform governance, gestire un ecosistema di microservizi a livello enterprise
Platform governance, gestire un ecosistema di microservizi a livello enterpriseGiulio Roggero
 
Software Analytics: Towards Software Mining that Matters (2014)
Software Analytics:Towards Software Mining that Matters (2014)Software Analytics:Towards Software Mining that Matters (2014)
Software Analytics: Towards Software Mining that Matters (2014)Tao Xie
 
QCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentQCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentAmbassador Labs
 
How a Time Series Database Contributes to a Decentralized Cloud Object Storag...
How a Time Series Database Contributes to a Decentralized Cloud Object Storag...How a Time Series Database Contributes to a Decentralized Cloud Object Storag...
How a Time Series Database Contributes to a Decentralized Cloud Object Storag...InfluxData
 
Discussing strategies for building the next gen data centre
Discussing strategies for building the next gen data centreDiscussing strategies for building the next gen data centre
Discussing strategies for building the next gen data centreICT-Partners
 
Global IoT Cloud Services Survey-Aug-20160527
Global IoT Cloud Services Survey-Aug-20160527Global IoT Cloud Services Survey-Aug-20160527
Global IoT Cloud Services Survey-Aug-20160527August Lin
 

Similaire à From Monolith to Observable Microservices using DDD (20)

Log Analytics for Distributed Microservices
Log Analytics for Distributed MicroservicesLog Analytics for Distributed Microservices
Log Analytics for Distributed Microservices
 
The Essentials Of Project Management
The Essentials Of Project ManagementThe Essentials Of Project Management
The Essentials Of Project Management
 
Secure Your DevOps Pipeline Best Practices Meetup 08022024.pptx
Secure Your DevOps Pipeline Best Practices Meetup 08022024.pptxSecure Your DevOps Pipeline Best Practices Meetup 08022024.pptx
Secure Your DevOps Pipeline Best Practices Meetup 08022024.pptx
 
SCS DevSecOps Seminar - State of DevSecOps
SCS DevSecOps Seminar - State of DevSecOpsSCS DevSecOps Seminar - State of DevSecOps
SCS DevSecOps Seminar - State of DevSecOps
 
Sukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud ManagementSukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud Management
 
Brighttalk understanding the promise of sde - final
Brighttalk   understanding the promise of sde - finalBrighttalk   understanding the promise of sde - final
Brighttalk understanding the promise of sde - final
 
Welcome to the Metrics
Welcome to the MetricsWelcome to the Metrics
Welcome to the Metrics
 
Microservices Architecture for e-Commerce
Microservices Architecture for e-CommerceMicroservices Architecture for e-Commerce
Microservices Architecture for e-Commerce
 
Top10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome AppsTop10 Characteristics of Awesome Apps
Top10 Characteristics of Awesome Apps
 
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...
Top 10 Software to Detect & Prevent Security Vulnerabilities from BlackHat US...
 
EasySOA business case and real world use case 20130220
EasySOA business case and real world use case 20130220EasySOA business case and real world use case 20130220
EasySOA business case and real world use case 20130220
 
Note This project is broken up into Windows and Mac version.pdf
Note This project is broken up into Windows and Mac version.pdfNote This project is broken up into Windows and Mac version.pdf
Note This project is broken up into Windows and Mac version.pdf
 
This project is broken up into Windows and Mac versions lis.pdf
This project is broken up into Windows and Mac versions lis.pdfThis project is broken up into Windows and Mac versions lis.pdf
This project is broken up into Windows and Mac versions lis.pdf
 
Platform governance, gestire un ecosistema di microservizi a livello enterprise
Platform governance, gestire un ecosistema di microservizi a livello enterprisePlatform governance, gestire un ecosistema di microservizi a livello enterprise
Platform governance, gestire un ecosistema di microservizi a livello enterprise
 
Software Analytics: Towards Software Mining that Matters (2014)
Software Analytics:Towards Software Mining that Matters (2014)Software Analytics:Towards Software Mining that Matters (2014)
Software Analytics: Towards Software Mining that Matters (2014)
 
QCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentQCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented Development
 
Best DevOps and ML tools
Best DevOps and ML toolsBest DevOps and ML tools
Best DevOps and ML tools
 
How a Time Series Database Contributes to a Decentralized Cloud Object Storag...
How a Time Series Database Contributes to a Decentralized Cloud Object Storag...How a Time Series Database Contributes to a Decentralized Cloud Object Storag...
How a Time Series Database Contributes to a Decentralized Cloud Object Storag...
 
Discussing strategies for building the next gen data centre
Discussing strategies for building the next gen data centreDiscussing strategies for building the next gen data centre
Discussing strategies for building the next gen data centre
 
Global IoT Cloud Services Survey-Aug-20160527
Global IoT Cloud Services Survey-Aug-20160527Global IoT Cloud Services Survey-Aug-20160527
Global IoT Cloud Services Survey-Aug-20160527
 

Plus de Maria Gomez

CQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspectiveCQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspectiveMaria Gomez
 
Splitting the monolith using Domain Driven Design
Splitting the monolith using Domain Driven Design Splitting the monolith using Domain Driven Design
Splitting the monolith using Domain Driven Design Maria Gomez
 
Effective team onboarding
Effective team onboardingEffective team onboarding
Effective team onboardingMaria Gomez
 
Security in agile teams
Security in agile teamsSecurity in agile teams
Security in agile teamsMaria Gomez
 
Security in agile teams
Security in agile teamsSecurity in agile teams
Security in agile teamsMaria Gomez
 
Observable Microservices
Observable MicroservicesObservable Microservices
Observable MicroservicesMaria Gomez
 
Splitting the Monolith
Splitting the MonolithSplitting the Monolith
Splitting the MonolithMaria Gomez
 
Taller de Refactorización (Campus Party Quito 2014)
Taller de Refactorización (Campus Party Quito 2014)Taller de Refactorización (Campus Party Quito 2014)
Taller de Refactorización (Campus Party Quito 2014)Maria Gomez
 
Refactoring workshop (Campus Party Quito 2014)
Refactoring workshop (Campus Party Quito 2014)Refactoring workshop (Campus Party Quito 2014)
Refactoring workshop (Campus Party Quito 2014)Maria Gomez
 
Project Management - Report
Project Management - ReportProject Management - Report
Project Management - ReportMaria Gomez
 
Principles of New Media - Essay
Principles of New Media - EssayPrinciples of New Media - Essay
Principles of New Media - EssayMaria Gomez
 
Project Management - Risk management
Project Management - Risk managementProject Management - Risk management
Project Management - Risk managementMaria Gomez
 
Responsive Environments - MoodMixer Presentation
Responsive Environments - MoodMixer PresentationResponsive Environments - MoodMixer Presentation
Responsive Environments - MoodMixer PresentationMaria Gomez
 
Responsive Environments - Critical report
Responsive Environments - Critical reportResponsive Environments - Critical report
Responsive Environments - Critical reportMaria Gomez
 
New Media Management - Gantt chart
New Media Management - Gantt chartNew Media Management - Gantt chart
New Media Management - Gantt chartMaria Gomez
 
New Media Management - Project plan
New Media Management - Project planNew Media Management - Project plan
New Media Management - Project planMaria Gomez
 
New Media Management - Presentation
New Media Management - PresentationNew Media Management - Presentation
New Media Management - PresentationMaria Gomez
 
New Media Management - Report
New Media Management - ReportNew Media Management - Report
New Media Management - ReportMaria Gomez
 

Plus de Maria Gomez (18)

CQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspectiveCQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspective
 
Splitting the monolith using Domain Driven Design
Splitting the monolith using Domain Driven Design Splitting the monolith using Domain Driven Design
Splitting the monolith using Domain Driven Design
 
Effective team onboarding
Effective team onboardingEffective team onboarding
Effective team onboarding
 
Security in agile teams
Security in agile teamsSecurity in agile teams
Security in agile teams
 
Security in agile teams
Security in agile teamsSecurity in agile teams
Security in agile teams
 
Observable Microservices
Observable MicroservicesObservable Microservices
Observable Microservices
 
Splitting the Monolith
Splitting the MonolithSplitting the Monolith
Splitting the Monolith
 
Taller de Refactorización (Campus Party Quito 2014)
Taller de Refactorización (Campus Party Quito 2014)Taller de Refactorización (Campus Party Quito 2014)
Taller de Refactorización (Campus Party Quito 2014)
 
Refactoring workshop (Campus Party Quito 2014)
Refactoring workshop (Campus Party Quito 2014)Refactoring workshop (Campus Party Quito 2014)
Refactoring workshop (Campus Party Quito 2014)
 
Project Management - Report
Project Management - ReportProject Management - Report
Project Management - Report
 
Principles of New Media - Essay
Principles of New Media - EssayPrinciples of New Media - Essay
Principles of New Media - Essay
 
Project Management - Risk management
Project Management - Risk managementProject Management - Risk management
Project Management - Risk management
 
Responsive Environments - MoodMixer Presentation
Responsive Environments - MoodMixer PresentationResponsive Environments - MoodMixer Presentation
Responsive Environments - MoodMixer Presentation
 
Responsive Environments - Critical report
Responsive Environments - Critical reportResponsive Environments - Critical report
Responsive Environments - Critical report
 
New Media Management - Gantt chart
New Media Management - Gantt chartNew Media Management - Gantt chart
New Media Management - Gantt chart
 
New Media Management - Project plan
New Media Management - Project planNew Media Management - Project plan
New Media Management - Project plan
 
New Media Management - Presentation
New Media Management - PresentationNew Media Management - Presentation
New Media Management - Presentation
 
New Media Management - Report
New Media Management - ReportNew Media Management - Report
New Media Management - Report
 

Dernier

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 

Dernier (20)

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 

From Monolith to Observable Microservices using DDD

Notes de l'éditeur

  1. Hi everyone, thank you for coming to this talk. Before I start let me introduce myself, my name is Maria Gomez, I’m the Head of Technology in ThoughtWorks Spain and I have spent the last 4 years helping organizations on their transformation journey. This talk has experiences and learnings that I gathered over that period, so I hope what I’ll say resonates with you, either because you already lived a similar situation or because you’re in the middle of one. We are going to be talking microservices about two different angles: first how to use DDD to decide how to break down the monolith and second, some operational concerns you should look at for this new microservices. So let’s start
  2. We have a monolith that is not working for us anymore so we would like to break it down into smaller pieces that are autonomous and that allows us to deliver value to our customers faster. That's the dream. But this is a very naïve scenario, in reality things a bit more complex
  3. Because organizations, have very complex systems and they have delivery pressure. There was probably a initiative or two trying to separate part of the system that failed and ended up in a slightly worse place. There are decisions that were taken that seemed right at the time but now they are giving us a lot of coupling and accidental complexity and etc etc. And untangling this into the nice small autonomous microservices doesn’t look that easy anymore. We don’t know where to start, we don’t know how to keep or even better increase the confidence in our system. And, the biggest of all, we don’t know how to talk to the business to make them understand that we need to do something about this and we need time. Does this picture sound familiar to any of you?
  4. There are various antipatterns in here: DB integration, Chatty services, Lack of deployment independency, Decisions being taken by technical teams without understanding the business impact, and that can lead to badly define services that can’t be truly autonomous. So what I do is to help teams take a step back and allow them to use Domain Driven Design techniques as a way of learning more about the business processes and therefore being able to untangle the different business capabilities. And, in time, extract them intro microservices.
  5. So, how can DDD help us?
  6. Domain Driven Design, in a nutshell, is an approach to building software that has complex and ever-changing business requirements. And the emphasis here is on the “business” requirements.
  7. There are many books in the subject, some of them more theoretical, some of them more practical. But, regardless it’s a topic that has been around for some time and that it’s again getting a lot of traction
  8. Domain: finance, health, retail, etc Subdomain: payments, applications, etc
  9. A Customer may not represent the same thing in Payments than in Credit Card applications, for instance.
  10. Your bounded context should look like this. We are within the ecommerce domain for instance, and we have a Sales and a Support subdomains. They both have Customer and Product as entities but in each subdomain the meaning of them would be different, they may have different attributes and perform different actions. A Customer in the Sale context would contain some financial information whereas in the Support context may be able to interact with their open tickets. The power of DDD is that it allows you to draw this boundaries and create specialization within them, so you can have a team (product and Tech) specialized in Sales that evolves that space more or less autonomously.
  11. Bringing that over to our monolith problem, we can use DDD to identify our own subdomains and bounded context, focus on isolate them in the monolith and then extract them into their own microservice. There are many ways of doing this. I’m going to show you a couple that I have used in the past. Regardless of the how, the most important thing to identify contexts and create this common language is to involve people from all the organization in these exercises (product owners, infrastructure people, developers, etc).
  12. That’s when you can do another exercise a bit more complex, Event Storming. Created by Alberto Brandolini The basic idea is to bring together software developers and domain experts and learn from each other. You use stickies and walls and that helps making this learning easier.
  13. These few concepts are used in Event Storming and are also part of the Domain Driven Design vocabulary Command: Domain: User has added an article to their basket Add item to basket Aggregate: Basket
  14. Cinema website. Customers go and buy tickets for their shows. Event storming talks about getting people from different parts of the organization interested on this buying a cinema ticket flow and start talking about the process. Like what we said before, PO, developers, Subject Matter Experts, etc If you’re lucky, like in this example, you know what’s the first thing that happened at the last one, so the group needs to fill the gaps. The process could start at either end of the flow, what’s the first event that happened, or what’s the last one
  15. Another example, something that I did quite recently. This team is in charge of the whole checkout process for an online retailer and we run this exercise to start exploring the different subdomains within checkout. I’ve simplified the flow quite a lot, but in essence this is what you do
  16. We identified multiple subdomains. The boundaries were a bit fuzzy at the end, and that’s fine because we knew we were not going to get it right the first time and this is an exercise we will keep running every so often to keep validating our assumptions and the boundaries.
  17. But in a nutshell, if you have identified subdomains, you just need to isolate them within the monolith (I can’t stress that enough, make it the context independent inside your monolith, remove all database integrations) and only them, extract it into a service
  18. Because….
  19. So, if we go back to the retail example, we looked at the different context identified and obviously we couldn’t tackle them all at the same time, we needed to find a way of prioritize them and choose one. In this case, we knew that the business wanted to improve the delivery experience that the customer had and wanted to experiment with a few things, so the Delivery context was the chosen one to start working on. But there may be many dimensions to decide where to start
  20. So, now, you have a new set of tools you can use to untangle your complex system and extract business domains into microservices 
  21. With this, we now have a framework to identify subdomains and extract them into services based on the business value they provide.
  22. This is where problems can start, when we underestimate what’s needed for creating new services
  23. We’ve just looked at the tip of the iceberg, what to extract, which is very complex but there are tons of other things under the surface we need to take care of as we start creating new services. And these are the areas people get wrong time and time again. Microservices or any distributed architecture, may reduce the complexity of your code, but it will increase the complexity of something else. Your system will be complex, just in a different way. Testing, deployment and operations are just three of those things and each of them have enough material for another 1 hour talk. Actually we’ve seen them covered in some of the talks during today. The advantage you have is that by applying DDD you now understand much better your domain and business needs and will be able to make better decisions to solve all the concerns below the surface. For the rest of this talk, we’re focusing on Operations, and more specifically on a concept called Observability
  24. It encompasses any question you might want to ask your system, not limited to errors or anomalies. Why is observability so important now? Because our systems are increasingly complex, so it’s not enough to react to failures gracefully. It’s also important to be able to understand and ask questions that give insights on to what our system is up to. Not just of the software that we built but the ones someone else did and we use, like DBs or 3rd party software, or the monolith we still are going live with for some time.  And when we start creating new services, we need to keep observability as a first class citizen and design the services to be observable.
  25. What does that mean? Well, it means we should have an strategy for Logging, Monitoring, Alerting and Tracing
  26. Logging is your building block for everything else. And having to access production boxes to copy the application.log is not scalable when you’re having multiple services. So, the most common approach to organize logs is to apply the Log aggregation pattern, which should be quite standard by now.  We have multiple services in different tech stacks writing logs. A collector collects this logs, transform them into a structure that can be easily consumed by other systems, like a visualization or monitoring tool We should set up our new services so the logs can be collected. Building this infrastructure is something that you should be doing from the first microservices you decide to create. ELK stack is pretty standard right now for instance
  27. The library used for logging or the specific implementation is the concern of individual teams. As an architect you should care about what it is logged not how. Make sure the data is logged in a structure format, so you can search by various dimensions, transformed them in the way you need them, etc and in short, use them in a good way
  28. The goal of monitoring is to have enough information to help you make decisions See trends, observe the system over time, confirm your hypothesis. When a new functionality is deployed in production you should be able to assess how it affects the system as a whole and then act accordingly. Probably the tool you’re using to query your logs has Dashboard capabilities, Kibana has it for instance. You could start with that and evolves if the tool is unsufficient.
  29. Example of things you may want to monitor: in the retail we talked about before, we wanted to monitor the behavior of the new Delivery service, and our data points were the response times of the new service and the conversion rate in general (our hypothesis was that by decoupling this we were not affecting sale). With DDD we understood the impact that Delivery has in the rest of the checkout process and be able to make better decisions in terms of monitoring. For example, For the last one we used a technique called semantic monitoring. We automated some user flows and run then in production round the clock. We tag those transactions so they don’t mess with other metrics and obviously they didn’t trigger a real sale, but they gave us information that we needed. You can also do this type of monitoring with some of the analytics tools out there.
  30. Regardless you want all of that data in a single place that can be accessible by everyone in the team, not just developers or POs
  31. Make sure you don’t end up with a dashboard full of things and noise, cos then it’s not as useful. So, review what you’re monitoring frequently to remove noise or unnecessary metrics
  32. Each tool you use will allow you to configure templates for alerts. Kibana, Opsgenie, Prometheus, etc
  33. Autoscaling is a great example. If you’re using a cloud provider for your infra then that should be easy enough to set up
  34. If you need to investigate an error in production, you need to be able to track the request as it flew through your system. And most likely the place where it happens is not the most obvious one. This is a very simple example, but in real life some of this integration may be asynchronous, some of these service may not fail gracefully or given you proper information. The most obvious thing is to set up your services in a way that they attach a TraceId to every request that come through them. However, this may not be enough. Sometime having to trace this manually is very time consuming. So, you may want to look into a distributed tracing tool for your services
  35. This tool will take care of attaching the traceId and to send the information to a centralized place where it can be visualize. What the services use for implementing tracing is not as important as the protocol. OpenTracing for instance, it’s an standard more and more adopted so probably that’s something you’d like to have a look at. Most current tools accept it (Datadog, Dynatrace, Zipkin, etc).
  36. Service templates to bootstrap microservices over shared libraries. Service mesh if required.