SlideShare a Scribd company logo
1 of 52
CONTINUOUSLY DELIVERING
DISTRIBUTED SYSTEMS
Managing benefits and risks in a
volatile environment
solutions.hamburg
Daniel Löffelholz / @davololo / dloeffel@thoughtworks.com
WHAT
<code/>
Distributed system
= more moving parts
= more deployments
= more risk
3
Distributed system
= larger systems
= more scale / users
= more potential value
4
Distributed system
= more potential value & risk
5
6
Change
Stab
The Change-Train
WHY DOES TO NEED TO GO FAST?
7
• Opportunity Costs
• Validation & Iteration
• Less complex & less risks
Speed vs Stability
8
AGENDA
• What’s different?
• Path to Production
• Hardening the Artifact
9
MONOLITH
User
Admin
SERVICES
User
Admin
API
GATEWAY
WEB
UI
API
GATEWAY
PATH TO
PRODUCTION
13
PIPELINE FOR POKA-YOKE
LIVETESTCI
BUILD DEPLOY DEPLOY
CI/CD SERVER
LIVETESTCI
16
ARTIFACTS
LIVETESTCI
Build: 25
Build: 25
Build: 25Build: 25
DECLARATIVE PIPELINES
LIVETESTCI
Build: 25
Build: 25
Build: 25
Build: 25
CONFIGURATION MANAGEMENT
LIVETESTCI
Build: 25
Build: 25
Build: 25
DEPLOYMENT
LIVETESTCI
Build: 25
Build: 25
Build: 25
STACK & VALUE STREAM MAP
GoCD
Kubernetes
GIT
Invision
JIRA
Docker Registry
S PP P
Spring Config Server
0.5-5 Hrs 0.5-5 Days 40 Min
~1-5
Day
s
Value Add Non Value Add
FAN IN/OUT?
VCS
ProdStagingCI PrePro
d
INDEPENDENT EVOLUTION!
TESTVCS
ProdStagingCI PrePro
d
real integration only here
SPEED THROUGH
• Independent Service Evolution
• Minimize non-value added activities
• Maximizing automation
HARDENING THE
ARTIFACT
25
HARDENING THE ARTIFACT
CI STAGING PRE PROD PROD
CI STAGING PRE PROD PROD
ANATOMY
Providing Service
Consuming Service
Domain
1: UNIT
Providing ServiceConsuming Service
Domain
Unit
2: INTEGRATION
Providing ServiceConsuming Service
Domain
Unit
Integration
3: COMPONENT
Providing ServiceConsuming Service
Domain
Unit
Integration
Component
32
STAGING PRE PROD PROD
Unit Tests
Integration Tests
Component Tests
CI
33
STAGING PRE PROD PROD
Unit Tests
Integration Tests
Component Tests
CI
REAL INTEGRATION
34
3rd Party
REAL INTEGRATION & FAILURE INJECTION
35
3rd Party
UI TEST – SINGLE PAGE APP
36
UI Rendering
Integration
API Gateway /
BFF
API Gateway /
BFF
Mock Mock
App 1 App 2
Public API
37
PRE PROD PROD
Unit Tests
Integration Tests
Component Tests
CI
UI Integration
UI Rendering
End to End
Fault Injection
STAGING
3rd
Party
Mock
Unit Tests
Integration Tests
Component Tests
End to End
UI Integration
UI Rendering
Fault Injection
3rd
Party
Mock
3rd
Party
Sys
CI STAGING
PRE PROD PROD
INTEGRATION 3RD PARTY SYSTEMS
Consumer
Driven
Contract
Real Integration
SYNTHETIC MONITORING
API
Expected
Result
Input Action
Unit Tests
Integration Tests
Component Tests
End to End
UI Integration
UI Rendering
Fault Injection
3rd
Party
Mock
3rd
Party
Sys
CI STAGING PRE PROD
Real Integration
CDC
Synthetic Transactions
PROD
Unit Tests
Integration Tests
Component Tests
End to End
UI Integration
UI Rendering
Fault Injection
Real Integration
CDC
Synthetic Transactions
3rd
Party
Mock
3rd
Party
Sys
3rd
Party
Sys
CI STAGING PRE PROD
PROD
43
Increasing the likelihood of good
things
to
Lower the effects of bad things
Mean Time to Fail (MTFT)
To
Mean Time to Recover (MTTR)
44
QA IN PRODUCTION
Test Preprod ProdVCS
QA QA
SYNTHETIC INTEGRATION
Expected
Result
Input Action
?synthetic=1
v2
MONITORING
• White-Box Monitoring
• Traffic
• Latency
• Errors
• Saturation
• Black-Box Monitoring: Business KPIs
• Zero Error Policy
• Mix Alerting with Monitoring
• Appropriate complexity & abstraction level
CANARY RELEASING
48
80%
20%
v2
CHAOS ENGINEERING - FAULT INJECTION
49
API
Look for differenc
in steady state
Steady State +
Hypthesis
Action
ROLLBACK
50
• Backward compatible APIs
• API versioning
• Independent Database Evolution
TOLERANT READER & MAGNANIMOUS WRITER
be conservative in what you do, be liberal in
what you accept from others.
-- Jon Postel
&
LOWERING RISK
• Use each stage to lower risk
• Test appropriate and dedicated concerns
• Deploy as often as possible
• Accept reasonable risk
• Be able to recover & rollback
• Things will fail, so do QA in production
THANK YOU
Daniel Löffelholz
dloeffel@thoughtworks.com
@davololo

More Related Content

What's hot

Continuous mobile automation in build pipeline
Continuous mobile automation in build pipelineContinuous mobile automation in build pipeline
Continuous mobile automation in build pipelinedm l
 
OWASP Juice Shop 5.x and beyond
OWASP Juice Shop 5.x and beyondOWASP Juice Shop 5.x and beyond
OWASP Juice Shop 5.x and beyondBjörn Kimminich
 
Owasp Juice Shop: Achieving sustainability for open source projects
Owasp Juice Shop: Achieving sustainability for open source projectsOwasp Juice Shop: Achieving sustainability for open source projects
Owasp Juice Shop: Achieving sustainability for open source projectsBjörn Kimminich
 
Continuous Deployment To The Cloud
Continuous Deployment To The CloudContinuous Deployment To The Cloud
Continuous Deployment To The CloudMarcin Grzejszczak
 
Continuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestContinuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestMarcin Grzejszczak
 
Building a CI/CD Pipeline for PHP apps
Building a CI/CD Pipeline for PHP appsBuilding a CI/CD Pipeline for PHP apps
Building a CI/CD Pipeline for PHP appsJuan Manuel Torres
 
Agile + DevOps Keynote - The Evolution of a Continuous Integration Pipeline
Agile + DevOps Keynote - The Evolution of a Continuous Integration PipelineAgile + DevOps Keynote - The Evolution of a Continuous Integration Pipeline
Agile + DevOps Keynote - The Evolution of a Continuous Integration PipelineGreg Sypolt
 
GWT Quick Start
GWT Quick StartGWT Quick Start
GWT Quick StartGuo Albert
 
Exploring the GitHub Service Universe
Exploring the GitHub Service UniverseExploring the GitHub Service Universe
Exploring the GitHub Service UniverseBjörn Kimminich
 
Releasing with gradle (gradle summit 2014)
Releasing with gradle (gradle summit 2014)Releasing with gradle (gradle summit 2014)
Releasing with gradle (gradle summit 2014)Rene Gröschke
 
Rendra Toro - Model View Presenter
Rendra Toro - Model View PresenterRendra Toro - Model View Presenter
Rendra Toro - Model View PresenterDicoding
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Marcin Grzejszczak
 
Accelerating DevOps at the SF DevOps MeetUp
Accelerating DevOps at the SF DevOps MeetUpAccelerating DevOps at the SF DevOps MeetUp
Accelerating DevOps at the SF DevOps MeetUpjwi11iams
 
Declare, verify and execute microservice process flows with Baker
Declare, verify and execute microservice process flows with BakerDeclare, verify and execute microservice process flows with Baker
Declare, verify and execute microservice process flows with BakerNikola Kasev
 

What's hot (15)

Continuous mobile automation in build pipeline
Continuous mobile automation in build pipelineContinuous mobile automation in build pipeline
Continuous mobile automation in build pipeline
 
OWASP Juice Shop 5.x and beyond
OWASP Juice Shop 5.x and beyondOWASP Juice Shop 5.x and beyond
OWASP Juice Shop 5.x and beyond
 
Owasp Juice Shop: Achieving sustainability for open source projects
Owasp Juice Shop: Achieving sustainability for open source projectsOwasp Juice Shop: Achieving sustainability for open source projects
Owasp Juice Shop: Achieving sustainability for open source projects
 
Continuous Deployment To The Cloud
Continuous Deployment To The CloudContinuous Deployment To The Cloud
Continuous Deployment To The Cloud
 
Continuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestContinuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfest
 
Building a CI/CD Pipeline for PHP apps
Building a CI/CD Pipeline for PHP appsBuilding a CI/CD Pipeline for PHP apps
Building a CI/CD Pipeline for PHP apps
 
Agile + DevOps Keynote - The Evolution of a Continuous Integration Pipeline
Agile + DevOps Keynote - The Evolution of a Continuous Integration PipelineAgile + DevOps Keynote - The Evolution of a Continuous Integration Pipeline
Agile + DevOps Keynote - The Evolution of a Continuous Integration Pipeline
 
GWT Quick Start
GWT Quick StartGWT Quick Start
GWT Quick Start
 
Exploring the GitHub Service Universe
Exploring the GitHub Service UniverseExploring the GitHub Service Universe
Exploring the GitHub Service Universe
 
Releasing with gradle (gradle summit 2014)
Releasing with gradle (gradle summit 2014)Releasing with gradle (gradle summit 2014)
Releasing with gradle (gradle summit 2014)
 
Rendra Toro - Model View Presenter
Rendra Toro - Model View PresenterRendra Toro - Model View Presenter
Rendra Toro - Model View Presenter
 
DCVCS using GIT
DCVCS using GITDCVCS using GIT
DCVCS using GIT
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017
 
Accelerating DevOps at the SF DevOps MeetUp
Accelerating DevOps at the SF DevOps MeetUpAccelerating DevOps at the SF DevOps MeetUp
Accelerating DevOps at the SF DevOps MeetUp
 
Declare, verify and execute microservice process flows with Baker
Declare, verify and execute microservice process flows with BakerDeclare, verify and execute microservice process flows with Baker
Declare, verify and execute microservice process flows with Baker
 

Similar to Continuously Delivering Distributed Systems

Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopMichael Palotas
 
"Software Quality in the Service of Innovation in the Insurance Industry"
"Software Quality in the Service of Innovation in the Insurance Industry""Software Quality in the Service of Innovation in the Insurance Industry"
"Software Quality in the Service of Innovation in the Insurance Industry"Applitools
 
Transform Digital Business with DevOps
Transform Digital Business with DevOpsTransform Digital Business with DevOps
Transform Digital Business with DevOpsDaniel Oh
 
IBM DevOps Enabling continuous integration & delivery
IBM DevOps Enabling continuous integration & deliveryIBM DevOps Enabling continuous integration & delivery
IBM DevOps Enabling continuous integration & deliveryRoberto Pozzi
 
Test Automation NYC 2014
Test Automation NYC 2014Test Automation NYC 2014
Test Automation NYC 2014Kishore Bhatia
 
Continuous Integration and Delivery using TeamCity and Jenkins
Continuous Integration and Delivery using TeamCity and JenkinsContinuous Integration and Delivery using TeamCity and Jenkins
Continuous Integration and Delivery using TeamCity and JenkinsMahmoud Ali
 
OSMC 2016 | Application Performance Management with Open-Source-Tooling by Ma...
OSMC 2016 | Application Performance Management with Open-Source-Tooling by Ma...OSMC 2016 | Application Performance Management with Open-Source-Tooling by Ma...
OSMC 2016 | Application Performance Management with Open-Source-Tooling by Ma...NETWAYS
 
OSMC 2016 - Application Performance Management with Open-Source-Tooling by M...
OSMC 2016 -  Application Performance Management with Open-Source-Tooling by M...OSMC 2016 -  Application Performance Management with Open-Source-Tooling by M...
OSMC 2016 - Application Performance Management with Open-Source-Tooling by M...NETWAYS
 
RDz for DevOps Webcast Series: Implementing Continuous Integration with RDz
RDz for DevOps Webcast Series: Implementing Continuous Integration with RDzRDz for DevOps Webcast Series: Implementing Continuous Integration with RDz
RDz for DevOps Webcast Series: Implementing Continuous Integration with RDzSusan Yoskin
 
Service Virtualization: What Testers Need to Know
Service Virtualization: What Testers Need to KnowService Virtualization: What Testers Need to Know
Service Virtualization: What Testers Need to KnowTechWell
 
Continuous Integration for z using Test Data Management and Application D...
Continuous  Integration for z  using  Test Data Management  and Application D...Continuous  Integration for z  using  Test Data Management  and Application D...
Continuous Integration for z using Test Data Management and Application D...DevOps for Enterprise Systems
 
Our Journey To Continuous Delivery
Our Journey To Continuous DeliveryOur Journey To Continuous Delivery
Our Journey To Continuous DeliveryRobert Mircea
 
MuleSoft Meetup Adelaide 7th April 2021
MuleSoft Meetup Adelaide 7th April 2021MuleSoft Meetup Adelaide 7th April 2021
MuleSoft Meetup Adelaide 7th April 2021Nicholas Bowman
 
Enhancing Continuous Integration with pCloudy’s GitLab CI Integration.pdf
Enhancing Continuous Integration with pCloudy’s GitLab CI Integration.pdfEnhancing Continuous Integration with pCloudy’s GitLab CI Integration.pdf
Enhancing Continuous Integration with pCloudy’s GitLab CI Integration.pdfpcloudy2
 
New Continuous Release and Deployment Capabilities for CICS Customers v4
New Continuous Release and Deployment Capabilities for CICS Customers v4New Continuous Release and Deployment Capabilities for CICS Customers v4
New Continuous Release and Deployment Capabilities for CICS Customers v4Susan Yoskin
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasKJR
 
Continuous Deployment for Staging and Production Environments
Continuous Deployment for Staging and Production EnvironmentsContinuous Deployment for Staging and Production Environments
Continuous Deployment for Staging and Production EnvironmentsOlyaSurits
 
Continuous Delivery in the Enterprise - with IBM UrbanCode
Continuous Delivery in the Enterprise - with IBM UrbanCodeContinuous Delivery in the Enterprise - with IBM UrbanCode
Continuous Delivery in the Enterprise - with IBM UrbanCodeIBM UrbanCode Products
 

Similar to Continuously Delivering Distributed Systems (20)

Agile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery WorkshopAgile Bodensee - Testautomation & Continuous Delivery Workshop
Agile Bodensee - Testautomation & Continuous Delivery Workshop
 
"Software Quality in the Service of Innovation in the Insurance Industry"
"Software Quality in the Service of Innovation in the Insurance Industry""Software Quality in the Service of Innovation in the Insurance Industry"
"Software Quality in the Service of Innovation in the Insurance Industry"
 
Transform Digital Business with DevOps
Transform Digital Business with DevOpsTransform Digital Business with DevOps
Transform Digital Business with DevOps
 
IBM DevOps Enabling continuous integration & delivery
IBM DevOps Enabling continuous integration & deliveryIBM DevOps Enabling continuous integration & delivery
IBM DevOps Enabling continuous integration & delivery
 
Test Automation NYC 2014
Test Automation NYC 2014Test Automation NYC 2014
Test Automation NYC 2014
 
Continuous Integration and Delivery using TeamCity and Jenkins
Continuous Integration and Delivery using TeamCity and JenkinsContinuous Integration and Delivery using TeamCity and Jenkins
Continuous Integration and Delivery using TeamCity and Jenkins
 
TCE Automation
TCE AutomationTCE Automation
TCE Automation
 
OSMC 2016 | Application Performance Management with Open-Source-Tooling by Ma...
OSMC 2016 | Application Performance Management with Open-Source-Tooling by Ma...OSMC 2016 | Application Performance Management with Open-Source-Tooling by Ma...
OSMC 2016 | Application Performance Management with Open-Source-Tooling by Ma...
 
OSMC 2016 - Application Performance Management with Open-Source-Tooling by M...
OSMC 2016 -  Application Performance Management with Open-Source-Tooling by M...OSMC 2016 -  Application Performance Management with Open-Source-Tooling by M...
OSMC 2016 - Application Performance Management with Open-Source-Tooling by M...
 
RDz for DevOps Webcast Series: Implementing Continuous Integration with RDz
RDz for DevOps Webcast Series: Implementing Continuous Integration with RDzRDz for DevOps Webcast Series: Implementing Continuous Integration with RDz
RDz for DevOps Webcast Series: Implementing Continuous Integration with RDz
 
Service Virtualization: What Testers Need to Know
Service Virtualization: What Testers Need to KnowService Virtualization: What Testers Need to Know
Service Virtualization: What Testers Need to Know
 
Continuous Integration for z using Test Data Management and Application D...
Continuous  Integration for z  using  Test Data Management  and Application D...Continuous  Integration for z  using  Test Data Management  and Application D...
Continuous Integration for z using Test Data Management and Application D...
 
Our Journey To Continuous Delivery
Our Journey To Continuous DeliveryOur Journey To Continuous Delivery
Our Journey To Continuous Delivery
 
Twelve factor-app
Twelve factor-appTwelve factor-app
Twelve factor-app
 
MuleSoft Meetup Adelaide 7th April 2021
MuleSoft Meetup Adelaide 7th April 2021MuleSoft Meetup Adelaide 7th April 2021
MuleSoft Meetup Adelaide 7th April 2021
 
Enhancing Continuous Integration with pCloudy’s GitLab CI Integration.pdf
Enhancing Continuous Integration with pCloudy’s GitLab CI Integration.pdfEnhancing Continuous Integration with pCloudy’s GitLab CI Integration.pdf
Enhancing Continuous Integration with pCloudy’s GitLab CI Integration.pdf
 
New Continuous Release and Deployment Capabilities for CICS Customers v4
New Continuous Release and Deployment Capabilities for CICS Customers v4New Continuous Release and Deployment Capabilities for CICS Customers v4
New Continuous Release and Deployment Capabilities for CICS Customers v4
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael Palotas
 
Continuous Deployment for Staging and Production Environments
Continuous Deployment for Staging and Production EnvironmentsContinuous Deployment for Staging and Production Environments
Continuous Deployment for Staging and Production Environments
 
Continuous Delivery in the Enterprise - with IBM UrbanCode
Continuous Delivery in the Enterprise - with IBM UrbanCodeContinuous Delivery in the Enterprise - with IBM UrbanCode
Continuous Delivery in the Enterprise - with IBM UrbanCode
 

Recently uploaded

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Recently uploaded (20)

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

Continuously Delivering Distributed Systems

Editor's Notes

  1. Few people create different functionality and want to give the users a great experience
  2. Every change to anything can potentially break things More moving parts: more risks Larger systems – more live users – more things to loose More deployments: more chances to break Developing software in a non breaking way Traditionally different people dev vs ops Tension fast delivery <-> stability large systems often justified by large amount of users
  3. Every change to anything can potentially break things More moving parts: more risks Larger systems – more live users – more things to loose More deployments: more chances to break Developing software in a non breaking way Traditionally different people dev vs ops Tension fast delivery <-> stability large systems often justified by large amount of users
  4. Every change to anything can potentially break things More moving parts: more risks Larger systems – more live users – more things to loose More deployments: more chances to break Developing software in a non breaking way Traditionally different people dev vs ops Tension fast delivery <-> stability large systems often justified by large amount of users
  5. The change train is inevitable Its coming or you business is dying Old way: comprehensive testing & low releases Old wary of perceiving operations Roles like Deployment Manager Misconception: even higher risk The reason for DevOps
  6. Opportunity Costs = missed out value you would have gained if you took an action (e.g. releasing the feature) Time is money – benjamin franklin Validation of you Assumption and Value Propositions More deployments = Smaller deployments = less risk & more often practiced Shape it
  7. Value Proposition How we were remaning speed while managing risk Remain speed Minimize risk Disrupting business without disrupting users > how am I making sure my stuff works in prod (incompatblity but other aspects aswell)
  8. How to bring things into live How make sure it works How to realize its not working -> because you cant prevent all problems you better make sure yall notice when shit goes down
  9. Its size and complexity impose big amout of complexity onto us: Slow Loading / Deploy times Test times Side Effects Higher time to market Becomes ‘bad’ legacy Non replacability / ugradability Higher integration cost
  10. Loosely coupled serivces Much more volatile Different lifecycles. Some change very often some change not at all anymore
  11. Dependency management Integration not on compile team, but on run time
  12. first topic I want to discuss how a pipeline should look like, whats the main requirements on new CD systems and a few patterns
  13. Value stream mapping, artifact flows through the pipeline on the live. Lean Poka-yoke [poka joke] is a Japanese term that means "mistake-proofing" or “inadvertent error prevention”. Lean manufactoring Lower the risk of an error or make it obv that it wont reach the customer Each stage provides increasing confidence, usually at the cost of extra time. Early stages can find most problems yielding faster feedback, while later stages provide slower and more through probing.  These can include performance, security, or usability issues. The pipeline is connecting all roles from dev, ops, qa, ux, security champion etc Keep it as lean as possible: master branch development (don’t want to get that complexity) Cross functional team is end to end responsible
  14. Ochestrates the build, test and deploy actions Pipeline and Artifacts as first class citizen Only build packages/artifacts once Gocd Lambdacd jenkins2
  15. Value stream mapping
  16. Only build packages/artifacts once -> Docker, rkt, s3, artifactory No semantic verisoning -> build number Communitate with references of Along with the build it also needs instructions to deploy it No track of incomabilities – manually manage it
  17. Pipeline as code Setting up pipeline is part of the task Pipeline needs to be part of the code Scripts need to live in the repo https://blog.spinnaker.io/codifying-your-spinnaker-pipelines-ea8e9164998f https://medium.com/@pavanbelagatti/declarative-continuous-deployment-pipelines-9d30807f7d0d https://dzone.com/articles/declarative-continuous-deployment-pipelines https://github.com/spinnaker/dcd-spec https://www.gocd.org/2017/07/10/gocd-vs-spinnaker/
  18. https://www.upguard.com/blog/articles/declarative-vs.-imperative-models-for-configuration-management Env Variable Injection Spring Cloud Configuration Server Netflix Archaius Zookeeper Hashicorp Consul Etcd
  19. No snowflake servers: Abstraction layer over deployment actions spinnaker Kubernetes Apache Mesos Docker Swarm Creating and destroying environments should be abstracted Deploy the same way to every environment—including development. This way, we test the deployment process many, many times before it gets to production, and again, we can eliminate it as the source of any problems. Stateless services & services need to keep the code
  20. Waiting transportation lean manufactoring waiting, testing, merging, dead code -> no branch, direct deploy
  21. No independance, Distributed monilith (deployment wise)
  22. a single service should be as independent as possible - independent evolutiuon - independent deployment Independent evolution, no lockstep Brings speed but also more risks Independent value -> Independent evolution Avoid locksteps (explicit or implicit) Small changes (Speed) keep it simple (deployment coordination/ dist monlith) Problems: integration later
  23. Also assync Deploying, testing, merging, waiting Automate everything above
  24. Make it work! Integration not on build time, but Whats different: Higher lever of automation More integrational aspects
  25. Find more and easier mistakes in ealier stages Loosely coupleing, no lockstep deployment independent evolution. -> enables speed Cone of risk: harden the software through the journey - With different kinds of tests and responsibilities On more and more realistic environments Less mocks though the pipeline
  26. Difference is: amount of interface/network code in comp to domain logic is higher Key difference when looking at the differences: Interfaces and network connections are more prominent and need activly taken care of. And are also part of the own product. Test responsilibity separate
  27. Key difference when looking at the differences: Interfaces and network connections are more prominent and need activly taken care of. And are also part of the own product. Test responsilibity separate
  28. By instantiating the full microservice in-memory using in-memory test doubles and datastores it is possible to write component tests that do not touch the network whatsoever. This can lead to faster test execution times and minimises the number of moving parts reducing build complexity. However, it also means that the artifact being tested has to be altered for testing purposes to allow it to start up in a 'test' mode. Dependency injection frameworks can help to achieve this by wiring the application differently based on configuration provided at start-up time.
  29. Like regular single service development – maybe with more emphasizes on interfaces
  30. Real machines (or virtual ones) Containerization Integration Configuratio Rendering (against many devices?) Technical 3rd party systems
  31. Containerization works? Service Discovery DNS Configuration management DB connection Integration with mocked 3rd party systems
  32. Test harness = more control over data Even though its timeing out or giving an errornous response I want to have it working
  33. Two Concerns: - Tests Basic Integration (End to End) - Tests UI Functionality / Rendering (UI) - API Gateway? Mock it - Limited end to end testing Test the test (prerequisites) UI tests -> blocking operation? Takes long time Rolling updates help -> should work in production idempotent testing test snapshots create tests data flexible
  34. Test State: First Integration on the cluster Running Services against each other (only SCS) Test Harnesses for 3rd P systems UI Tests: Test Connection
  35. - You’ve tested that your part works on similar tech like production Now testing: Real Integration Monitoring Constant Running Realisitic Environment Comparing a test and production environment to each another is like comparing a zoo to nature [..]. They may have similarities but the differences are plentiful. 3rd Stage: Real Integration with 3rd P Systems CDCs Test Monitoring - Synthetic Transactions http://www.gartner.com/id=2272416 https://blog.appdynamics.com/product/synthetic-vs-real-user-monitoring-a-response-to-gartner/ Chaos Monkey?
  36. Json stream processing -> not visible until life China data example
  37. Generate Traffic Monitor errors Assert on Returns Monitor no errors / alerting Smoke Tests
  38. - You’ve tested that your part works on similar tech like production Now testing: Real Integration Monitoring Constant Running Realisitic Environment Comparing a test and production environment to each another is like comparing a zoo to nature [..]. They may have similarities but the differences are plentiful. 3rd Stage: Real Integration with 3rd P Systems CDCs Test Monitoring - Synthetic Transactions http://www.gartner.com/id=2272416 https://blog.appdynamics.com/product/synthetic-vs-real-user-monitoring-a-response-to-gartner/ Chaos Monkey?
  39. We still don’t know if the new version works with the systems deployed in live. They could be month old potentially. That’s why we deploy as often as possible (multiple times a day) to avoid release management. It might be safer to activly track compatible versions and test on configurations, but
  40. Optimism does not scale Ask what questions
  41. Self healing systems http://blog.fosketts.net/2011/07/06/defining-failure-mttr-mttf-mtbf/ https://assertible.com/blog/testing-and-monitoring-in-production-your-qa-is-incomplete-without-it#plan-to-recover-from-failures,-not-prevent-them
  42. Things always go wrong in production, but this doesn’t have to be a bad thing. richer understanding of the real issues learn new ways to improve its quality. Monitoring Alerting http://www.neotys.com/blog/7-ways-to-build-a-robust-testing-in-production-practice/
  43. Either integrating syntehtically Or running testcases in prod
  44. White box help you to identify problems before they have impact (and help debugging) Black box: sometimes the last resort (otto story) The rules that catch real incidents most often should be as simple, predictable, and reliable as possible. Data collection, aggregation, and alerting configuration that is rarely exercised (e.g., less than once a quarter for some SRE teams) should be up for removal.
  45. - Router can be internal or external - Reducing risks
  46. First attempt: shortening circuits Mutation testing Chaos monkey Gracefully degradation If something happens: am I able to see it? Chaos Engineering http://principlesofchaos.org/ Start by defining ‘steady state’ as some measurable output of a system that indicates normal behavior. Hypothesize that this steady state will continue in both the control group and the experimental group. Introduce variables that reflect real world events like servers that crash, hard drives that malfunction, network connections that are severed, etc. Try to disprove the hypothesis by looking for a difference in steady state between the control group and the experimental group. Vary Real-world Events Chaos variables reflect real-world events.  Prioritize events either by potential impact or estimated frequency.  Consider events that correspond to hardware failures like servers dying,software failures like malformed responses, and non-failure events like a spike in traffic or a scaling event.  Any event capable of disrupting steady state is a potential variable in a Chaos experiment.
  47. Database compatible Independent Databse Evolution A writer that can anticipate and forgive some of the mistakes that readers that are less tolerant will inevitably commit
  48. Reader: Only read what you need Ignore other fields Writer: Never introduce breaking changes