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.
-
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
- DevOps is NOT:
-
Build automation
-
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
-
Continuous Delivery (CD)
- the practice of continuously maintaining code in a deployable state
-
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
-
Infrastructure as Code (IaC)
- manage and provision infrastructure via code and automation:
- server
- instance
- environment
- container ...
- manage and provision infrastructure via code and automation:
-
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:
-
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: