At the first time I study DevOps, I am overwhelmed by the myriad number of terminologies, buzzwords and tools in DevOps world. So, this is a note to make clear-cut definitions of each terminology as well as related tools.

  1. DevOps

    • DevOps is NOT:
      • tools like k8s, ansible, jenkins ...
      • a standard
      • a product
      • a job title
    • DevOps is a Culture of collaboration between developments and operations people.
    • Goals: Dev and Ops share the same goals:
      • fast time to market (code finished -> to users)
      • few production failures
      • immediate recovery from failures
  2. Build automation

    • Automate the process of preparing code for deployment:
      • compile
      • lint
      • minify
      • transform
      • UT ...
    • Tools:
  3. Continuous Integration (CI)

    • the practice of frequently merging code changes done by dev
    • should be automated:
      • Dev commit
      • CI server sees that change => automatically perform buid, run UT
      • Notify Dev if any issue happened
    • benefit:
      • early issue detection
      • avoid scramble to integrate just before deadline
      • frequent release
      • continuous testing
    • Tools
  4. Continuous Delivery (CD)

    • the practice of continuously maintaining code in a deployable state
  5. Continuous Deployment

    • the practice of frequently deploying small code changes to production
    • how:
      • automated deployment
      • automated roll back if issues happend
      • no one scares of deployment, even if deployment does cause a problem
  6. Infrastructure as Code (IaC)

    • manage and provision infrastructure via code and automation:
      • server
      • instance
      • environment
      • container ...
  7. Configuration Management

    • maintain and change the state of infrastructure in a consistent, maintainable and stable way. Manage your config somewhere outside of the infrastructure.
    • example: upgrade a software package on a clusters:
      • define a new version of software package in a config file/tool => auto roll out the change to all servers
    • Tools:
  8. Orchestration

    • automation that supports processes and workflow such as provisioning resources
    • how:
      • not need to control the detail of infrastructure
      • simply signals what needs to be done and the orchestra tools performs it.
    • example: a customer requests more resources for a web service:
      • instead of manually create new VMs, Ops use an orchestration tool to request 5 more nodes.
      • autoscale and autoshrink
    • Tools: