Devops (Cams)
Devops (Cams)
DevOps is an understood set of practices and cultural values that has been proven to
help organizations of all sizes improve their software release cycles, software quality,
security, and ability to get rapid feedback on product development.
DevOps explained
• The old view of operations
• “Dev” side being the “makers” and
• “Ops” side being the “people that deal with the creation after its birth”
• The realization of the harm that has been done in the industry of those two being treated as siloed concerns
is the core driver behind DevOps.
• DevOps can be interpreted as an outgrowth of Agile
• Agile software development prescribes close collaboration of customers, product management, developers,
and (sometimes) QA to fill in the gaps and rapidly iterate towards a better product.
• DevOps says “yes, but service delivery and how the app and systems interact are a fundamental part of the
value proposition to the client as well, and so the product team needs to include those concerns as a top level
item.”
• DevOps at the conceptual level is simply extending Agile principles beyond the boundaries of
“the code” to include systems and operations.
Origins of DevOps
• Took place around 2009 during the convergence of numerous adjacent and
mutually reinforcing movements:
• 10+ Deploys Per Day: Dev and Ops Cooperation at Flickr presentation.
• The “Infrastructure as code" movement (Mark Burgess and Luke Kanies)
• The "Agile infrastructure" movement (Andrew Shafer)
• The Agile system administration movement (Patrick DeBois)
• The Lean Startup movement (Eric Ries).
• The continuous integration and release movement (Jez Humble).
• The widespread availability of cloud and platform as a service (PaaS)
Principles behind DevOps
The Three Ways
• Flow
• Feedback
• Continuous Experimentation and Learning
The First Way : Flow
• Creating the left to right business value flow (from business to customer).
• Emphasizes the performance of the entire system.
• The focus is on all business value streams that are enabled by IT.
• It begins when requirements are identified (e.g., by the business or IT), are built in Development, and then
transitioned into IT Operations, where the value is then delivered to the customer as a form of a service.
• The outcomes of putting the First Way into practice include
• Never passing a known defect to downstream work centers,
• Never allowing local optimization to create global degradation
• Always seeking to increase flow, and
• Always seeking to achieve profound understanding of the system
The Second Way : Feedback
• Creating the right to left feedback loops.
• Shorten and amplify feedback loops so necessary corrections can be
continually made.
• The outcomes of the Second Way include
• Understanding and responding to all customers, internal and external,
• Shortening and amplifying all feedback loops, and
• Embedding knowledge where we need it.
The Third Way : Continuous Experimentation
Manage work
Enter Text
Develop + Test 1
Write Code
Enter Text
Unit Testing
Version Control
Build
Build Verification
Release
Release
When all tests pass, the build is deployed to testing
environments for each stage in the release process
Cloud
Load Testing
3 Monitor + Learn
Feedback
Enter Text
Monitor
4
List of DevOps Practices
• Infrastructure as Code (IaC) • Availability Monitoring
• Capacity Management
• Continuous Integration • Change/Configuration Management
• Automated Testing • Feature Flags
• Automated Environment De-Provisioning
• Continuous Deployment • Self Service Environments
• Release Management • Automated Recovery (Rollback & Roll-Forward)
http://www.itproguy.com/devops-practices/
Benefits
• Faster time to market
• Reduced IT waste
• Better quality product
• Competitive advantage
• Higher customer satisfaction
• Reduced cost of development etc.
Faster time to market
• High performers are doing thousands of deployments per day.
• Amazon has gone on record that they are routinely performing over 23,000 deploys per day while
preserving –
• Reliability
• Stability
• Security
• High deployment rate = Business value
• How quickly the organization can go from idea to delivering value to customer
• How many experiments the organization can perform simultaneously
• High deployment rate = Rapid and constant experimentation
Reduced IT waste
• Enormous waste in IT value stream
• Long lead times
• Poor hand-offs
• Unplanned work
• Rework
Deploy frequency
Case Study : HP Laserjet Firmware
• 400 people distributed across 3 continents
• 10m+ lines of code
• 2 Software releases per year
• Majority of time spent on porting code to new product
Source: A Practical Approach to Large-Scale Agile Development: How HP Transformed LaserJet FutureSmart Firmware (Agile Software Development Series)
Problems
• 5% percent of dev time spent writing new features
• 10 to 15% of development time spent integrating code into
mainline
• 6 weeks to learn whether the checked in code worked
• One week to determine whether it integrated successfully
• Another day to reach the "integration build"
• Another day was spent running acceptance tests
• 6 weeks to complete full integration testing
Source: A Practical Approach to Large-Scale Agile Development: How HP Transformed LaserJet FutureSmart Firmware (Agile Software Development Series)
Improvements
• Architecture changes: Common code base.
Eliminated separate branches for all products,
putting all LaserJet models into trunk.
• Automated testing: Automated unit,
acceptance, and integration tests, which would
continually run against trunk.
• Stopping the line - All work stopped when
someone broke the build or the test suite.
Source: A Practical Approach to Large-Scale Agile Development: How HP Transformed LaserJet FutureSmart Firmware (Agile Software Development Series)
Results
• Overall development costs reduced
by ~40%
• Programs under development
increased by ~140%
• Development costs per program
reduced by 78%
• Resources driving innovation
increased by 5x
Source: A Practical Approach to Large-Scale Agile Development: How HP Transformed LaserJet FutureSmart Firmware (Agile Software Development Series)
Thanks to practices such as Continuous integration, Continuous Delivery and
DevOps, high performers are often now doing thousands of deployments daily.
Contoso App
1. Developers
6. Monitor and Improve
Azure
Two reasons that motivate people to ‘do’ anything:
•they're trying to make something better or to gain something (the carrot)
•they’re trying to avoid pain (the stick)
• The ability to create new, high-quality software applications and bring them to
market more quickly is the “X factor” that defines industry leaders.
• Remember it is not the strongest of the species that survive, nor the most
intelligent, but those most responsive to change. (Charles Darwin)
Get started with Continuous
Delivery
• Start small(It is like a marathon - Go slow, follow a routine and be
consistent)
• Get buy-in from devs and ops
• Implement Continuous Integration
• Reinforce best practices, and automate the deploy-to-production pipeline
• Adopt automation across the delivery process
• Build on your successes
Deployment pipeline
• Assembly and delivery line
Case Study : Microsoft Dev Division
• Over seven years, Microsoft Developer Division (DevDiv) embraced Agile.
• Achieved a 15x reduction in technical debt through solid engineering practices
• Trained everyone on Scrum, multidisciplinary teams and product ownership across
the division.
• Significantly focused on the flow of value to our customers.
• By the time they shipped VS2010, the product line achieved a level of customer
recognition that was unparalleled.
• DevOps Values – Fundamental DevOps values are effectively captured in the Agile Manifesto – with
perhaps one slight emendation to focus on the overall service or software fully delivered to the
customer instead of simply “working software.”
• DevOps Practices –Specific techniques used as part of implementing the above concepts and
processes. Continuous integration and continuous deployment, “Give your developers a pager and
put them on call,” using configuration management, metrics and monitoring schemes, a toolchain
approach to tooling… Even using virtualization and cloud computing is a common practice used to
accelerate change in the modern infrastructure world.
• DevOps Tools – Tools you’d use in the commission of these principles. In the DevOps world there’s
been an explosion of tools in release (jenkins, travis, teamcity), configuration management (puppet,
chef, ansible, cfengine), orchestration (zookeeper, noah, mesos), monitoring, virtualization and
containerization (AWS, OpenStack, vagrant, docker) and many more. While, as with Agile, it’s
incorrect to say a tool is “a DevOps tool” in the sense that it will magically bring you DevOps, there
are certainly specific tools being developed with the express goal of facilitating the above principles,
methods, and practices, and a holistic understanding of DevOps should incorporate this layer.
DevOps
• Part of a DevOps culture is learning from usage.
• A tacit assumption of Agile was that the Product Owner was omniscient and could groom the
backlog correctly.
• In contrast, when you run a high-reliability service, you can observe how customers are actually
using its capabilities in near real-time.
• Release frequently
• Experiment with improvements, measure, and ask customers how they perceive the changes.
• The data you collect becomes the basis for the next set of improvements you do.
• In this way, a DevOps product backlog is really a set of hypotheses that become experiments in
the running software and allow a cycle of continuous feedback.
“The good thing about cloud and mobile is you can develop very quickly. You
can scale fast if it works or just try something else if it doesn’t.”
Pascal Eymery, VP of strategy and businessdevelopment customer support at Airbus
As you prepare to build your business case, identify the area or areas of greatest
potential impact for your company, and go from there.
Ido Ben Moshe, VP at Zend
“The most valuable thing you do as a software developer is make that
connection between creation and use.”
Chris Hilton, Lead consultant at ThoughtWorks
“We’re in sales. Our job is to sell DevOps inside the organization and unless I
have the reporting and the data, I’ll get questions every week from CIOs that I
can’t answer.”