DevOps is a set of practices intended to
reduce the time between committing a
change to a system and the change being
placed into normal production, while
ensuring high quality.
Source: DevOps: A Software Architect's Perspective, Len Bass, Ingo Weber, Liming Zhu, Addison-Wesley Professional, 2015
DevOps - Drivers
Evolution of agile
and lean methods
Need for quicker
releases to realise
business needs
Wider availability of
virtualization &
cloud-based
platforms
Increased
availability of data
centre automation &
configuration
management tools
Agile and DevOps
• Agile focuses on bridging the gap between user
requirements and realising them and testing it. So it
bridges the gap between user requirements and
development + testing.
• DevOps focuses on bridging the gap between the
developers and the operations people. So, in
addition to users functional and non-functional
requirements, devops focuses on operational and
business readiness
DevOps principles
• Systems thinking - looking at how the entire system
works instead of silos (like development teams, IT
operations team, etc)
• Amplify feedback loops
• A culture of continual experimentation and learning
The deployment pipeline
Source: “Continuous Delivery: Reliable Software Releases Through Build, Test, and and Deployment Automation”, Jez Humble, David Farley, Addison Wesley, 2010
DevOps processes
• Treat operators as first class citizens
• Make Dev more responsible for incident handling
• Enforce deployment practices uniformly across
both dev and ops
• Use continuous deployment
• Develop infrastructure code using same processes
as application code
Source: DevOps: A Software Architect's Perspective, Len Bass, Ingo Weber, Liming Zhu, Addison-Wesley Professional, 2015
Deployment strategies
• Two basic all of nothing strategies
• Blue/Green (Red/Black) – leave N instances with
version A as they are, allocate and provision N
instances with version B and then switch to version B
and release instances with version A.
• Rolling Upgrade – allocate one instance, provision it
with version B, release one version A instance.
Repeat N times.
• Partial strategies are canary testing and A/B testing.
Source: DevOps: A Software Architect's Perspective, Len Bass, Ingo Weber, Liming Zhu, Addison-Wesley Professional, 2015
Rolling upgrade
Source: DevOps: A Software Architect's Perspective, Len Bass, Ingo Weber, Liming Zhu, Addison-Wesley Professional, 2015
Feature toggles
• Develop version B with new code under control of
feature toggle
• Install each instance of version B with the new code
toggled off.
• When all of the instances of version A have been
replaced with instances of version B, activate new code
through toggling the feature.
Source: DevOps: A Software Architect's Perspective, Len Bass, Ingo Weber, Liming Zhu, Addison-Wesley Professional, 2015
Key idea: differentiate between
installing a new version and
activating a new version
Canary testing
• Canaries are a small number of instances of a new
version placed in production in order to perform live
testing in a production environment.
• Canaries are observed closely to determine whether the
new version introduces any logical or performance
problems. If not, roll out new version globally. If so, roll
back canaries.
Source: DevOps: A Software Architect's Perspective, Len Bass, Ingo Weber, Liming Zhu, Addison-Wesley Professional, 2015
Rollback or roll forward?
• When newly deployed feature has bugs or other
problems (e.g., performance), what to do?
• Roll back (undo the deployment)
• Roll forward (replace the feature with new feature /
fixed version)
THE MOST POWERFUL TOOL
WE HAVE AS DEVELOPERS
IS AUTOMATION
Scott Hanselman
Deployment tools
• “Bake” machine images
• “Recipes” for standard configurations
• DevOps engineers manage the recipes
• “Infrastructure as code” approach
• Scripts are managed with similar processes as
source code (e.g., versioned in configuration
management systems)
Server snowflakes
• Server configurations can be different. This makes
reproducing the problem in the production
environment difficult in the production environment.
source: http://www.livescience.com/images/i/000/009/284/original/ig35_snowflakes_13_02.jpg?interpolation=lanczos-none&downsize=660:*
DevOps: Challenges
• How to integrate security audits on continually
changing codebases?
• How to run static analysers - they take quite a bit of
time to run and can delay builds?
• How to deal with culture change in the org
(developers and operators - both will resist)
DevOps and related topics
• Continuous integration focuses on integrating code
changes by developers so that the main branch is
up-to-date
• Continuous delivery focuses on taking the results of
continuous integration builds and put them into
production
• DevOps and Cloud technologies are intricately
connected though DevOps practices can be used
independently of the cloud
DevOps benefits
• Quicker delivery - shorter time from need to
realisation
• Better quality
• Increased organisational effectiveness
DEPLOYMENT CELEBRATIONS SHOULD
BE ABOUT THE VALUE OF THE NEW
FEATURES, NOT JOYFUL RELIEF THAT
NOTHING WENT HORRIBLY WRONG
Rebecca Parsons
DEVOPS IS NOT A GOAL, BUT A
NEVER-ENDING PROCESS OF
CONTINUAL IMPROVEMENT
Jez Humble
FROM CONCEPT TO CASH
➤ Lean Software Development
book provides the foundation for
DevOps; its principles are:
➤ Eliminate waste
➤ Amplify learning
➤ Decide as late as possible
➤ Deliver as fast as possible
➤ Empower the team
➤ Build quality in
➤ See the whole
➤ Read it to perform value stream
mapping for DevOps“Implementing Lean Software Development: From Concept to Cash”, Mary
Poppendieck, Tom Poppendieck, Addison-Wesley Professional, 2006
https://amzn.com/0321437381
A BROAD PERSPECTIVE
➤ DevOps is more than bringing
in DevOps engineers or using
tools
➤ This book provides an overall
perspective of DevOps by
covering its history and covers
foundational concepts
➤ Covers four pillars of effective
DevOps: Collaboration,
Affinity, Tools, and Scaling
➤ Has interesting case studies,
clears misconceptions, and
helps troubleshoot
Effective DevOps: Building a Culture of Collaboration, Affinity, and Tooling at
Scale, Jennifer Davis, Katherine Daniels, O'Reilly Media, 2016
https://amzn.com/1491926309
CD DISTILLED
➤ An early book on Continuous
Delivery
➤ Released before DevOps
became a buzzword - but it
covers dev ops concepts in its
essence
➤ Book divided into three parts:
Foundation, The Deployment
Pipeline, and The Delivery
Ecosystem
➤ Written based on the practical
experience of authors and covers
important aspects such as
feature toggles; hence must read“Continuous Delivery: Reliable Software Releases Through Build, Test, and and
Deployment Automation”, Jez Humble, David Farley, Addison Wesley, 2010
http://www.amazon.in/dp/0321601912
WHY DEVOPS?
➤ From the authors of the
popular “The Visible Ops
Handbook”
➤ This book shows why DevOps
and how it helps business win
➤ It tells the story of an IT
manager who has to rescue an
IT project in crisis
➤ Written in a fiction style, so
easy to read
➤ An important read for
managers for effective adoption
of DevOps practices“The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win”,
Gene Kim, Kevin Behr, George Spafford, IT Revolution Press, 2013
https://amzn.com/0988262592
ARCHITECT’S PERSPECTIVE
➤ Most books on DevOps talk
about tools, process and
technology perspective
➤ This book is a take on an
architect’s perspective on
DevOps
➤ Covers deployment
pipeline, cross-cutting
concerns (monitoring,
security, …), and case
studies
➤ A bit-dry (written in more of
an academic style)
DevOps: A Software Architect's Perspective, Len Bass, Ingo Weber, Liming Zhu,
Addison-Wesley Professional, 2015
https://amzn.com/0134049845