The Journey to
Continuous
Delivery
2 Dec. 2020
Presented By &
Introduction
It's an initiative for gathering people
interested in Agile, eXtreme
Programming (aka: XP), Scrum,
Coding, etc.
The Idea of XP Days was found at
November 2019 and since that we
have conducted lots of knowledge
sharing meetups and webinars.
Agile Arena is an Agile Consulting and Training company. We
specialize in agile adoption and transformation for companies
and teams through:
• Designing their agile adoption programs
• Executing our programs and guiding the team through their
journey to sustainable agility .
• We also provide training for teams and individuals to help
them coping with the agility trend in the market.
This Webinar
is Held By:
Hesham Amin
Principal Developer
Class Ltd.
Presented By &
AGENDA
 Challenges of building software.
 Why is software delivery painful. While it shouldn't
 Agile as a continuous experimentation process
 Continuous delivery and feedback loops
 Principals of Continuous delivery
 Implementation of Continuous delivery
 Impact on software architecture
 Impact on teams
 Discussion
Presented By &
Challenges of Software
Development
Presented By &
Uncertainty
Presented By &
Uncertainty
 “Software is easy to make, except when you want it to do something new. And then, of
course, there is a corollary: The only software that's worth making is software that does
something new.” Scott Rosenberg, Dreaming in Code
 A startup is a human institution designed to create a new product or service
under conditions of extreme uncertainty.” Eric Ries
 Unlike when building a house, when it comes to software it's almost impossible to know
what you want. And even if you did know, it would be impossible to know how long each
part would take to do. Patrick Gleeson, Working with Coders: A Guide to Software Development for the
Perplexed Non-Techie
Presented By &
Uncertainty
Continuous Delivery
End Uncertainty Means Uncertainty
Presented By &
Mindset change
Experimentation!
Presented By &
The scientific method
The scientific method
Hypothesis
Design an experiment
Carry on the experiment
Evaluat
e
Presented By &
Fast Feedback
Presented By &
Delayed delivery of value
Tim
e
Valu
e
R1
R2
R3
R4
Lost
value
Presented By &
Execution Challenges
 Humans make mistakes!
 Deployment “drama”
 Long Cycle time
 Not enough experimentation
 Lack of innovation
 Non value-adding activities
Presented By &
What is Continuous Delivery
The ability to get changes of all types into
production, or into the hands of users, safely
and quickly in a sustainable way.
Presented By &
Agile manifesto
 Working software over comprehensive documentation
 Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
 Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the
shorter timescale.
 Working software is the primary measure of progress.
Presented By &
How quick?
 Mean time between deployments:
 11.6 Seconds
 Max. deployments in a single hour:
 1079
 Mean number of hosts simultaneously
receiving a deployment
 1000

 30 Deployments per day
 200+ People
 10000 deployments in 2011
Presented By &
Continuous Delivery is a...
 Holistic approach to SW development
 The whole value chain
 Shortest path from business idea to customer value
Presented By &
Feedback cycles
Pairing
TDD
Continuous
Integration
Production
monitoring
Presented By &
Principles of Continuous Delivery
 Build quality in.
 Work in small batches
 Computers perform repetitive tasks, people
solve problems
 Relentlessly pursue continuous improvement
 Everyone is responsible
Presented By &
https://puppet.com/resources/report/2020-state-of-devops-report/
Presented By &
Implementation of Continuous Delivery
 Repeatable, reliable process for releasing software
 Computers perform repetitive tasks, people solve problems
 Automate almost everything
 Static analysis
 Test
 Infra
 Deployment
Presented By &
Implementation of Continuous Delivery
 Keep (Almost) Everything under source control
 Trunk based development
 Trunk is always deployable
 Check in to trunk at least daily
Trunk
Feature
/ Task
Presented By &
Implementation of Continuous Delivery
 If it hearts, do it more often
 “If releasing is hard, people will always find a reason not to release.”
 Gereon Hermkes, Scaling Done Right: How to Achieve Business Agility with Scrum@Scale and Make the
Competition Irrelevant
 Everybody is responsible for the release process
 Visibility
Presented By &
Process - Deployment pipeline
VCS
TDD
CI Build
+ automated tests
Artifact
repo
Acceptance
testing
(automated)
Component
Performance
Testing
Production
+ APM
System
Performance
Testing
Manual Testing
Staging
Presented By &
Presented By &
Impact on Architecture
 Quality attributes: meet cross functional requirements
 Availability:
 Rolling deployment
 Stateless when possible
 DB replicas
 Deployability
 Asynchronous architecture
 Caching & invalidation
Presented By &
Impact on Architecture
 Don’t break your clients. Including internal clients
 API versions
 Consumer driven contract testing
 Try to avoid orchestrated deployments
Presented By &
Impact on Architecture
 Configurations are stored on the environment
 Environment variables
 Parameters / secrets store
 Observability
 Logs
 Metrics
 APM
Presented By &
Patterns of Continuous Delivery
 Expand/Contract:
 Add new stuff first then remove old versions:
 New static content
 New API version
 Expanded DB schema
 Then deprecate old ones
 Blue-Green deployments
 Also a great test for DR
 Deployment != Release
 Feature toggles
 Canary releasing:
 Slowly rolling out the change to a small subset of users before rolling it out to the entire
infrastructure and making it available to everybody
Presented By &
Team structure
 Narrow focused teams with clear responsibilities
 Features / not layers
 Cross-team collaboration is usually harder
 You build it – you own it/run it.
Presented By &
No end
state
Presented By &
https://heshamamin.com/
@heshamamin
https://www.linkedin.com/in/heshamaamin/
https://www.facebook.com/HeshamAminSW/
https://www.youtube.com/c/HeshamAmin
Presented By &Continuous Delivery
DISCUSSION

The Journey to Continuous Delivery

  • 1.
  • 2.
    Presented By & Introduction It'san initiative for gathering people interested in Agile, eXtreme Programming (aka: XP), Scrum, Coding, etc. The Idea of XP Days was found at November 2019 and since that we have conducted lots of knowledge sharing meetups and webinars. Agile Arena is an Agile Consulting and Training company. We specialize in agile adoption and transformation for companies and teams through: • Designing their agile adoption programs • Executing our programs and guiding the team through their journey to sustainable agility . • We also provide training for teams and individuals to help them coping with the agility trend in the market.
  • 3.
    This Webinar is HeldBy: Hesham Amin Principal Developer Class Ltd.
  • 4.
    Presented By & AGENDA Challenges of building software.  Why is software delivery painful. While it shouldn't  Agile as a continuous experimentation process  Continuous delivery and feedback loops  Principals of Continuous delivery  Implementation of Continuous delivery  Impact on software architecture  Impact on teams  Discussion
  • 5.
    Presented By & Challengesof Software Development
  • 6.
  • 7.
    Presented By & Uncertainty “Software is easy to make, except when you want it to do something new. And then, of course, there is a corollary: The only software that's worth making is software that does something new.” Scott Rosenberg, Dreaming in Code  A startup is a human institution designed to create a new product or service under conditions of extreme uncertainty.” Eric Ries  Unlike when building a house, when it comes to software it's almost impossible to know what you want. And even if you did know, it would be impossible to know how long each part would take to do. Patrick Gleeson, Working with Coders: A Guide to Software Development for the Perplexed Non-Techie
  • 8.
    Presented By & Uncertainty ContinuousDelivery End Uncertainty Means Uncertainty
  • 9.
    Presented By & Mindsetchange Experimentation!
  • 10.
    Presented By & Thescientific method The scientific method Hypothesis Design an experiment Carry on the experiment Evaluat e
  • 11.
  • 12.
    Presented By & Delayeddelivery of value Tim e Valu e R1 R2 R3 R4 Lost value
  • 13.
    Presented By & ExecutionChallenges  Humans make mistakes!  Deployment “drama”  Long Cycle time  Not enough experimentation  Lack of innovation  Non value-adding activities
  • 14.
    Presented By & Whatis Continuous Delivery The ability to get changes of all types into production, or into the hands of users, safely and quickly in a sustainable way.
  • 15.
    Presented By & Agilemanifesto  Working software over comprehensive documentation  Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.  Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.  Working software is the primary measure of progress.
  • 16.
    Presented By & Howquick?  Mean time between deployments:  11.6 Seconds  Max. deployments in a single hour:  1079  Mean number of hosts simultaneously receiving a deployment  1000   30 Deployments per day  200+ People  10000 deployments in 2011
  • 17.
    Presented By & ContinuousDelivery is a...  Holistic approach to SW development  The whole value chain  Shortest path from business idea to customer value
  • 18.
    Presented By & Feedbackcycles Pairing TDD Continuous Integration Production monitoring
  • 19.
    Presented By & Principlesof Continuous Delivery  Build quality in.  Work in small batches  Computers perform repetitive tasks, people solve problems  Relentlessly pursue continuous improvement  Everyone is responsible
  • 20.
  • 21.
    Presented By & Implementationof Continuous Delivery  Repeatable, reliable process for releasing software  Computers perform repetitive tasks, people solve problems  Automate almost everything  Static analysis  Test  Infra  Deployment
  • 22.
    Presented By & Implementationof Continuous Delivery  Keep (Almost) Everything under source control  Trunk based development  Trunk is always deployable  Check in to trunk at least daily Trunk Feature / Task
  • 23.
    Presented By & Implementationof Continuous Delivery  If it hearts, do it more often  “If releasing is hard, people will always find a reason not to release.”  Gereon Hermkes, Scaling Done Right: How to Achieve Business Agility with Scrum@Scale and Make the Competition Irrelevant  Everybody is responsible for the release process  Visibility
  • 24.
    Presented By & Process- Deployment pipeline VCS TDD CI Build + automated tests Artifact repo Acceptance testing (automated) Component Performance Testing Production + APM System Performance Testing Manual Testing Staging
  • 25.
  • 26.
    Presented By & Impacton Architecture  Quality attributes: meet cross functional requirements  Availability:  Rolling deployment  Stateless when possible  DB replicas  Deployability  Asynchronous architecture  Caching & invalidation
  • 27.
    Presented By & Impacton Architecture  Don’t break your clients. Including internal clients  API versions  Consumer driven contract testing  Try to avoid orchestrated deployments
  • 28.
    Presented By & Impacton Architecture  Configurations are stored on the environment  Environment variables  Parameters / secrets store  Observability  Logs  Metrics  APM
  • 29.
    Presented By & Patternsof Continuous Delivery  Expand/Contract:  Add new stuff first then remove old versions:  New static content  New API version  Expanded DB schema  Then deprecate old ones  Blue-Green deployments  Also a great test for DR  Deployment != Release  Feature toggles  Canary releasing:  Slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody
  • 30.
    Presented By & Teamstructure  Narrow focused teams with clear responsibilities  Features / not layers  Cross-team collaboration is usually harder  You build it – you own it/run it.
  • 31.
  • 32.
  • 33.
    Presented By &ContinuousDelivery DISCUSSION