devops - a gentle introduction
TRANSCRIPT
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
Cyclic vs. continuous delivery
Cyclic delivery of earlier times
continuous delivery of modern times
weeks/months/years
hours/days!
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
Blue-green deployments
source: http://martinfowler.com/bliki/BlueGreenDeployment.html
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
Canary testing
source: http://media.cagle.com/96/2014/05/14/148486_600.jpg
Using birds in coal mines to detect
leakage of dangerous gases
A/B testing
Source: http://blog.christianposta.com/images/abtesting.png
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)
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:*
Automated deployment mechanism: Tools
Shell Scripts
Puppet
Redhat Kickstart
Solaris Jumpstart
Chef
Debian Preseed
Infrastructure configuration management
Apache ZooKeeper
Puppet
Noah
Chef
Environment virtualisation
Vagrant
Xen
VeeWee
KVM
Deployment automation Capistrano
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
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
[email protected] @GSamarthyam
www.codeops.tech slideshare.net/sgganesh
+91 98801 64463 bit.ly/sgganesh
IMAGE CREDITS
▸ https://assets.ashleypoole.co.uk/img/2016/02/dev-ops-principles.jpg
▸ http://siliconangle.com/files/2013/01/devops.jpg
▸ https://s-media-cache-ak0.pinimg.com/736x/db/94/70/db9470b9a02d379ca9f8d43a60d70bbd.jpg
▸ http://mediacom.com/media/1081/system-thinking-1.jpg?mode=crop&width=1920&height=1080&upscale=false&rnd=130830729460000000
▸ https://media.licdn.com/mpr/mpr/shrinknp_400_400/AAEAAQAAAAAAAAleAAAAJGJhYmZkZjk3LWZiNzktNDMxNC04OGI2LWVlNzRiY2RjOGI1OA.jpg
▸ http://1u88jj3r4db2x4txp44yqfj1.wpengine.netdna-cdn.com/wp-content/uploads/2015/10/gears-930x620.jpg
▸ http://www.edutopia.org/sites/default/files/styles/share_image/public/slates/johnson-celebration-of-learning-Thinkstock.gif?itok=m_aDCkEr
▸ http://pmtips.net/wp-content/uploads/2012/02/build-collaborate-engage.jpg
▸ http://vignette4.wikia.nocookie.net/lps2012/images/5/5d/Minka_made_a_big_mess.png/revision/latest?cb=20150206001314
▸ http://cdn29.elitedaily.com/content/uploads/2015/11/06084613/Stocksy_txpb051b385uAX000_Small_1805183.jpg
▸ http://photos1.meetupstatic.com/photos/event/d/3/5/6/600_330714102.jpeg
▸ http://cdn02.mindtheproduct.com/wp-content/uploads/2016/01/457-image-for-devops-part-of-blog_old-way_1200x400.png
▸ http://cdn02.mindtheproduct.com/wp-content/uploads/2016/01/457-image-for-devops-part-of-blog_new-way_560x560.png