The Rise of Devops

Modern Software Engineering Flow

  • Developers: work on local computers
  • Source Code Management: often on a remote service (Github)
  • Rapid deployment: multiple deployments per day
  • Continuous integration: As soon as code is checked in it is merged
  • Automated Testing: Unit, Integration and all kinds of tests
  • Deployment: Staging

History of System Adminstration (or Operations)

  • Old models:
    • development
    • quality assurance (test())
    • operations
    • New release every 6-12 months
  • Stage 1: blurring line between dev and qa
    • test driven development
    • test automation
    • developers responsibility
    • New release every 1-6 months
  • Stage 2: blurring line between dev qa and ops
    • Devops: New discipline that straddles or merges development and operations
    • Continuous integration and deployment
    • Feature switches
    • Cloud
    • What’s a release?
  • Keys:
    • coordination between development and operations
    • focus on business value
    • pervasive automation
    • blurred lines
  • Key responsibility is to keep service running
    • Reliability (uptime)
    • Scalability (number of users or transactions)
    • Flexibility (rapid iteration)
    • Cost (Cloud services)
  • How come now?
    • Scale in terms of servers and services
    • Geographic decentralization of servers
    • Automation is absolutely required
    • Automation is done with code (programming)
    • Software Engineering that is crucial although user never sees it

What is Devops

  • Infrastructure management is automated as much as possible
  • CI (Continuous integration) very typical
  • All about automating all infrastructure operations
  • Eliminate (minimize) manual shell commands to configure, deploy, etc
  • Follows software engineering practices
    • Source code control
    • Testing
    • Code Reviews
    • Building and using tools
  • Everything is “programmed” (scripts)
    • Provisioning a server
    • De-provisioning a server
    • Updating software for an individual service
    • Rollback of anything
    • Backups and recovery
    • Switching between data centers
    • Monitoring and management
  • Using SSH is a sign of incomplete automation