DevOps is a merger of Development and Operations.
It can variously be viewed as a reaction to or an extension of Agile development.
1 Motivation
Tension between Incremental Development and Traditional Operations
- Incremental development promises the availability of multiple useful versions of the software.
- Agile development suggests that these increments will be available with only short time intervals (on the order of a few weeks) between them.
- This multiples the amount of work required to systems test and deploy software
- Tasks traditionally performed by a group separate (“siloed”) from the developers.
(figure from Atlassian)
DevOps attempts to merge development
- plan
- build
- continuous integration
with operations
- continuous deployment
- monitor
- operate
3.2 Chef
Systems administration tasks organized into “cookbooks” and “recipes”.
- Linux, Windows, cloud-friendly (AWS)
- Configurations are procedural in Ruby DSL
- Master-client
4 Pipelines
Automation of continuous deployment is usually organized into pipelines.
- An assembly line of smaller stages.
- Does not seem to map well onto GitLab stages because build product do not persist (unless marked as artifacts)
- Instead must be rebuilt at each stage.
5 Monitoring
- Identify appropriate metrics
- Continuously collected
- Real-time analytics & reporting
Identifies both operational problems and provides feedback to Agile planning.
5.1 Elastic-Logstash-Kibana (ELK)
Elastic-Logstash-Kibana (ELK)
- E: search & analytics engine
- L: server-side logging
- K: visualization
Provide for capture & visualization of properties such as
- log files
- cloud data
- availability
- network traffic
© 2015-2021, Old Dominion Univ.