1 Minute: DevOps

DevOps is a practice that aims at unifying software development (Dev) and software operation (Ops). The main characteristic is automation and monitoring software construction, from integration, testing, releasing to deployment and infrastructure management.

Goals

The goals of DevOps span the entire delivery pipeline. They include:

  • Improved deployment frequency;
  • Faster time to market;
  • Lower failure rate of new releases;
  • Shortened lead time between fixes;
  • Faster mean time to recovery (in the event of a new release crashing or otherwise disabling the current system).

Toolchains

  1. Code — code development and review, source code management tools, code merging
  2. Build — continuous integration tools, build status
  3. Test — continuous testing tools that provide feedback on business risks
  4. Package — artifact repository, application pre-deployment staging
  5. Release — change management, release approvals, release automation
  6. Configure — infrastructure configuration and management, Infrastructure as Code tools
  7. Monitor — applications performance monitoring, end–user experience
    Some categories are more essential in a DevOps toolchain than others; especially continuous integration (e.g. Jenkins) and infrastructure as code (e.g. Puppet).

Cultural change

DevOps is more than just a tool or a process change; it inherently requires an organizational culture shift. This cultural change is especially difficult, because of the conflicting nature of departmental roles:

  • Operations — seeks organizational stability
  • Developers — seek change
  • Testers — seek risk reduction

Getting these groups to work cohesively is a critical challenge in enterprise DevOps adoption.