DevOps

DevOps Introduction II

Michael L. Collard, Ph.D.

Department of Computer Science, The University of Akron

Notice

  • Unless specified, 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 into Safari Books Online

Release Process

  • Release of a system or an updated version to the customers
  • One of the most sensitive steps in software development, whether internal or external
  • Releasing a new version -> possible of incompatibilities or failures -> customer unhappiness
  • Release plans must be carefully created and are often done manually

Release Planning Step 1

Define and agree on release and deployment plans with customers/stakeholders

  • Features to be included in the new release
  • Ensure that operations (including help desk and support) are aware of schedules
  • Ensure that resource requirements are met
  • Ensure that additional training is available

Release Planning Step 2

Ensure that each release package consists of a set of related assets and service components that are compatible with each other

  • Programs, libraries, etc. have dependencies
  • Changes may introduce incompatibilities
  • Managing dependencies is a significant part of what DevOps does

Release Planning Step 3

Ensure that the integrity of a release package and its constituent components is maintained throughout the transition activities and recorded accurately in the configuration management system.

  • Ensure that the old versions of a component are not (accidentally) included in the release
  • Records are kept of the components of the deployment (important for tracking down errors)

Release Planning Step 4

Ensure that all release and deployment packages can be tracked, installed, tested, verified, and uninstalled or rolled back if appropriate

  • rolled back - return to old version (uninstall new version, re-install old version)
  • Reasons include code errors, inadequate resources, expired licenses

Release

  • manual
  • labor-intensive, time-consuming, error-prone
  • automated
  • little labor involved, minimum time to run, not prone to errors of procedure
  • can be labor-intensive to develop
  • iterate to improve

Upgrade Failures

XebiaLabs Survey

  • 2013 survey 130 responses
  • 7.5% "not reliable"
  • 57.5% "needs improvement"
  • Challenges:
  • 49% "too much inconsistency across environments and applications"
  • 32.5% "too many errors"
  • 29.2% of deployments relied on custom scripting
  • 35.8% deployments were partially manual

CA Technologies Survey

  • 2013 survey, 1,300 respondents, companies over $100 million in revenue
  • Benefits from the adoption of DevOps
  • 53% increased frequency of deployment
  • 41% anticipating increased frequency
  • 42% improved quality of deployed applications
  • 49% anticipate improved quality

Reasons for Poor Coordination

  • Developers complete all coding and testing
  • The developed system needs to move into the operating environment:
  • Only appropriate access is permitted
  • Compatible with all other systems
  • Sufficient resources
  • Up-to-date data
  • Generated data is in a format usable by other systems
  • Help desk and support are trained
  • Operations personnel are trained for troubleshooting
  • Timing with personnel resources

Operation Responsibilities I (redux)

  • Analyze system logs and identify potential issues with computer systems
  • Introduce and integrate new technologies into existing datacenter 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 (redux)

  • 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 Personnel

  • Each item requires a deep level of understanding to perform well
  • Problem: "Finding and keeping qualified personnel”
  • The DevOps approach is to reduce the need for dedicated operations personnel:
  • Automate many tasks formerly done by operations
  • Have developers assume a portion of the remainder
  • Implications? In terms of background?