TB Full‐day Tutorial 6/4/2013 8:30 AM "Continuous Delivery: Rapid and Reliable Releases with DevOps Practices" Presented by: Bob Aiello CM Best Practices Consulting Brought to you by: 340 Corporate Way, Suite 300, Orange Park, FL 32073 888‐268‐8770 ∙ 904‐278‐0524 ∙ [email protected]∙ www.sqe.com
126
Embed
Continuous Delivery: Rapid and Reliable Releases with DevOps Practices
DevOps is an emerging set of principles, methods, and practices that empower teams and organizations to rapidly deploy systems and application updates while maintaining—and even improving—quality. By lowering barriers between development, testing, and operations, DevOps practices can add tremendous business value to software projects and systems. Bob Aiello explains how to prepare for and implement continuous delivery—in both agile and non-agile environments—employing industry standard processes and automated frameworks. Bob shares DevOps best practices starting with its role early in the application lifecycle through release and application maintenance. He introduces the emerging “Infrastructure as Code” concept that automates server and system provisioning within cloud computing environments. Learn ways to overcome technical, process, and cultural challenges with DevOps. Take back a set of practical and proven practices—for automated application build, automated packaging, and automated deployment—that will put your organization on the path to rapid and reliable releases.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
TB Full‐day Tutorial 6/4/2013 8:30 AM
"Continuous Delivery: Rapid and Reliable Releases with
DevOps Practices"
Presented by:
Bob Aiello CM Best Practices Consulting
Brought to you by:
340 Corporate Way, Suite 300, Orange Park, FL 32073 888‐268‐8770 ∙ 904‐278‐0524 ∙ [email protected] ∙ www.sqe.com
Bob Aiello CM Best Practices Consulting
Editor-in-chief of CM Crossroads and author of Configuration Management Best Practices: Practical Methods that Work in the Real World, Bob Aiello is a consultant and software engineer specializing in software process improvement, including software configuration and release management. He has more than twenty-five years of experience as a technical manager at top New York City financial services firms, where he held company-wide responsibility for configuration management. Bob served as vice chair of the IEEE 828 Standards Working Group on CM Planning and a member of the IEEE Software and Systems Engineering Standards Committee (S2ESC) Management Board. Contact Bob at [email protected], via LinkedIn, or visit cmbestpractices.com.
Continuous Delivery (DevOps Best Practices)
1
Bob Aiello, Principal Consultant and Author of Configuration Management Best Practices : Practical Methods that Work in the Real World
• CM/DevOps Lead & Consultant for over 25 years• Editor-in-Chief at CM Crossroads• Author of CM Best Practices• IEEE Management Board • Tools and process agnostic• The guy called in the middle of the night when the release doesn’t work!
Goals of this Course• Understand Continuous Delivery• Configuration Management roots• Control Dependencies & Configuration• Continuous Integration • Build and Deployment Automation• Deployment Pipeline is an Art!
And Don't Forget • Delivery Ecosystem• Components & Dependencies• Test vs Verification & Validation (V&V)• Don't forget the Data• Establish IT governance and compliance
• Methodology for getting software from development to release• Focus on the Deployment Pipeline• Rapid incremental deployment• Minimize Risk• Many small deployments better than big bang
• “Bob-proof” your build• Implicit verification and validation• Avoid the possibility of mistakes• Each step should be easy to understand• One step should not break the stream• Use dashboards and reports to communicate status
• August 1st 2012 trading disaster• Related to NYSE systems upgrade• Resulted in a $440 million loss• Loss grew as customers left the firm• Knight Capital Group merged with GETCO holding company
• What if you were upgrading a life support system and your loved one was impacted• How do we ensure that there are no mistakes• Join me in Detroit in July
Deploying software manually Deploying to a production-like environment only after development is complete Manual configuration of production environment.
Aim of the Pipeline• Makes building, deploying, testing and releasing software visible to everyone involved• Improves feedback so that problems are identified, and so resolved, as early in the process as possible• Enables teams to deploy and release any version of their software to any environment at will through a fully automated process (p. 4)
• Deploying Software Manually• Deploying to Production-like environment only after Development is complete• Manual Configuration of Production Environments Continuous Deployment, p. 7 – 10
Agile Release Train (ART)Making each product a successful and routine event – an event that is indeed planned and eagerly anticipated yet one one that happens almost on autopilot
Dean Leffingwell’s Agile Software Requirements, p. 299
How Do We Implement?Are deployment pipelines practical?How do we figure out the details?Is it worth the time and effort?What are the benefits?What are the risks?
• There are always a few experts• They are not working when system glitch• Building a Knowledge Management System• But What if some people do not want to share? (caution silos ahead)
• Patrick Debois – DevOpsDays in 2009• Tools (actually toolchains) have brought together “the three layers of what you need for agile movement (principles, process and practices)”
• Easier to understand in the context of a lifecycle • Consisting of six core CM functions• Closely matches the job descriptions of the people doing the work• Can be tailored to your needs
• Builds are too complex to automate• Some folks do not want to see automation as being possible• You may have to shadow or ask to drive• Document the procedures and then
• Create a script for each stage of the build process• Use the right technology to deploy (find out what others are doing)• Use your operating systems native tools
• Control of every configuration item (e.g. source code, config, binaries, compile and runtime dependencies). • Much more than just checkin and checkout (version control)• Provides sanity to the development process (reduces cognitive complexity)
• Configuration items (CIs) include binaries, source code, config files and even documents• ISO 1007 notes end user function• Bob says, “anything where getting the wrong version would be bad”
• Code is locked down and can never be lost• Code is baselined marking specific milestones• Managing variants using branches• Code changed on a branch can be merged
• How do we establish source code management that adheres to these principles?• Better question is how does CM add value and help facilitate the development effort?
• Track changesets to workitem • Traceability to who made the change• Makes release notes a breeze to create• Ties back to requirements and test cases• Allows for ALM and workflow automation
• Automate provisioning, patching and configuration of operating system and application components• Systems integration framework• Scalable and extensible• Used in other deployment frameworkswww.puppetlabs.com www.opscode.com
• Security should be considered from the beginning• Security and quality are tightly coupled• Provision servers using standards• Control & Detect unauthorized changes
• Many ways to handle this• Configuration files (httpd.conf)• Properties files (.properties)• XML as configuration (server.xml)• Default as production (so you don't forget!)
• First step is to assess current practices - “As-Is”• Compare to industry standards and frameworks• Determine “To-Be” • Create a plan for improving your CM processes
• IT Governance needs to be in alignment with corporate governance• Financial reports needs to be accurate• Separation of controls• Security measures to prevent unauthorized access• Audit in place for intrusion detection
• Establishes the quality management system• ISO 90003 is the software standard in the 9000 family of standards • Uses ISO 12207 (or 15288) to specify lifecycle processes• ISO 10007 for CM• IEEE 828, EIA 649-A, Mil Std coming!
• Improve training and use case for source code management• Improvement build automation• Setup or improve continuous integration• Automate package and deployment• Create procedures for configuration audit
• Flexible technical background• Good knowledge of development• Knowledge of QA/Ops• Strong automation skills• Some systems administration• Ability to work across silos
• Strong technical background• Strong scripting skills• Diving deep into the tools including troubleshooting• Understands toolchains and finds flexible solutions• Process orientation – focus on traceability
Goals of this Course• Understand Continuous Delivery• Configuration Management roots• Control Dependencies & Configuration• Continuous Integration • Build and Deployment Automation• Deployment Pipeline is an Art!
And Don't Forget • Delivery Ecosystem• Components & Dependencies• Test vs Verification & Validation (V&V)• Don't forget the Data• Establish IT governance and compliance
• Methodology for getting software from development to release• Focus on the Deployment Pipeline• Rapid incremental deployment• Minimize Risk• Many small deployments better than big bang