DevOps

Michael L. Collard, Ph.D.

Department of Computer Science, The University of Akron

Notice

Some of the following notes are from the book Len Bass, Liming Zhu, Ingo M. Weber, DevOps: A Software Architect’s Perspective ISBN-13: 978-0134049847. For some images and quotes, you must log in to Safari Books Online

Software Lifecycle

Software Development Overview

End (?) of the Process

After the code is finished and tested…

  • Must put in a form for deployment
  • Must then install and deploy into an existing system
  • Must use the software in operation
  • So what is operations?

Operation Responsibilities I

  • Analyze system logs and identify potential issues with computer systems
  • Introduce and integrate new technologies into existing data-center environments
  • Perform routine audits of systems and software
  • Perform backups
  • Apply operating system updates, patches, and configuration changes
  • Install and configure new hardware and software
  • Add, remove, or update user account information; reset passwords, etc.

Operation Responsibilities II

  • Answer technical queries and assist users
  • Ensure security
  • Document the configuration of the system
  • Troubleshoot reported problems
  • Optimize system performance
  • Ensure that the network infrastructure is up and running
  • Configure, add, and delete file systems
  • Maintain knowledge of volume management tools

Operation Job Descriptions

  • Help desk and support staff
  • System administrators
  • Software operator (description, not job title)
  • Will use the term operator to refer to system administrators and software operators

What is DevOps?

  • A compound of "development" and "operations"
  • Became more important as integration of applications and platforms became more tightly controlled
  • Lack of a single platform, e.g., Win32

DevOps

  • Way of thinking
  • Job title
  • Set of tools
  • Automation
  • An outgrowth of Agile development

What has changed?

  • Benefits of agile development also useful for operations
  • Changes in operating environments are occurring more frequently due to security and cost considerations
  • Difficult to predict how the software will perform at scale
  • Continual delivery

DevOps: Wikipedia

DevOps (a clipped compound of "development" and "operations") is a software development methodology that combines software development (Dev) with information technology operations (Ops). The goal of DevOps is to shorten the systems development life cycle while delivering features, fixes, and updates frequently in close alignment with business objectives.

Academics and practitioners have not developed a unique definition for the term "DevOps".

DevOps: Textbook

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.

  • DevOps is an integral part of modern development practices
  • "on the rise" Gartner Hype Cycle since 2013

DevOps: Relation to Others

Toolchains

  • Coding
  • Building
  • Testing
  • Packaging
  • Releasing
  • Configuring
  • Monitoring

Book Definition (cont)

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

Implications

  • Quality of deployed change
  • Quality of delivery mechanism
  • Important time periods
  • Goal oriented
  • Not restricted to just development and testing

Quality of deployed change

  • Quality of deployed change to a system is important
  • Typically, this is code and related artifacts (e.g., build files)
  • Suitability for use by stakeholders (users, developers, system admins):
  • Availability, security, reliability, etc.

Achieving High Quality of Change

  • Automated test cases that are passed before the change goes into production
  • Test the change in production with a limited set of users
  • Close monitoring of newly deployed code for a period of time *
  • Typically, these methods are used in combination

Quality of delivery mechanism

  • Not only the change but how users get the change must be of high quality
  • Reliable
  • Repeatable
  • If the delivery mechanism fails, the time required for change increases
  • If there are errors in the delivery of the change, the quality of the deployed systems suffers (reduced availability or reliability)

Important time periods

  • Developer commits newly developed code
  • End of basic development
  • Beginning of the path to deployment
  • Deployment of code into production
  • Distinction made between production code undergoing live testing and close monitoring

Goal oriented

  • Does not specify what practices or tools are used to implement the goals
  • DevOps Practice - Practice intended to reduce the time from a developer commit to deployment into production
  • Can involve agile methods, tools, etc., but does not have to
  • Agile is an influence on the quality and time reduction of DevOps

Not restricted to just development and testing

  • Needs to be involved in requirements
  • Does not end with production

DevOps Practices

  • Treat Ops as first-class citizens from the point of view of requirements
  • Make Dev more responsible for relevant incident handling
  • Enforce the deployment process used by all
  • Use continuous deployment (CD)
  • Develop infrastructure code (e.g., deployment scripts) with the same set of practices as application code

Treat Ops as first-class citizens from the point of view of requirements

  • Operations possibly include requirements for logging, monitoring, etc.
  • E.g., logging messages should make sense to an operator
  • Involving operations in requirements development helps to ensure that these requirements are considered

Make Dev more responsible for relevant incident handling

  • Scenario: Error occurs during operation. Instead of isolation in operations, include development
  • Try to shorten the time between error observation and repair
  • Commonly, Dev has primary responsibility during new deployment, Ops has responsibility after that

Enforce the deployment process used by all

  • All deployments must be of high quality with a defined and (hopefully) automated process
  • Ad-hoc deployments can cause issues later on
  • Normal deployment process should include traceability of components to an artifact

Use continuous deployment (CD)

  • Shorten the time between developer commit and deployment of the code
  • Emphasize automated tests to increase code quality

Principle

Develop infrastructure code (e.g., deployment scripts) with the same set of practices as application code

  • We try to develop application code to ensure high quality
  • However, often deployment code is not handled with the same practices to ensure quality
  • Applying what we have learned about the quality of application code helps control the quality of these specifications

Figure 1.1 DevOps life-cycle processes

Deployment Example: Netflix

Why DevOps?

  • A response to the problem of slow releases
  • Longer a release takes, the less advantage to be gained
  • Ideally, want a continuous release, i.e., continuous delivery or continuous deployment
  • Will use the term continuous deployment, and often just deployment