# DevOps
| | **DevOps** is a methodology in the software development and IT industry. Used as a set of practices and tools, DevOps integrates and automates the work of software development (Dev) and IT operations (Ops) as a means for improving and shortening the systems development life cycle. |
|-|-|
> [!note]+ The Gist
> - Portmanteau of developer and operations
> - The practice of linking and integrating [[Programming|software development]] and [[Operations, IT, & Infrastructure|Operations/IT]]
> - Essentially an outgrowth of [[Agile Software Development]] and [[Lean]]
## Concepts & Principles
> DevOps represents a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach. DevOps emphasizes people (and culture), and seeks to improve collaboration between operations and development teams. DevOps implementations utilize technology— especially automation tools that can leverage an increasingly programmable and dynamic infrastructure from a life cycle perspective.
### 3 Different Definitions of DevOps
- The concepts and philosophy, the goals, the unification of ops and dev, attaining faster delivery of higher quality code
- The role of DevOps - DevOps Engineer
- [Understanding DevOps Roles and Responsibilities](https://www.fpcomplete.com/blog/understanding-devops-roles-and-responsibilities/)
- The tools and processes of DevOps - pipelines, monitoring, etc.
### People Over Process Over Tools
- Don't decide the tool and work backwards to what process and people are needed.
### Breakdown Traditional Silos and Competing Incentives between dev and ops
- dev (deliver features fast) and ops (stability - manage risk by fewer changes to prod)
- Kind of emerged as the unification of two otherwise competing demands - slow and stable IT operations vs quick and adaptive development.
- Don't just throw it over the wall - we are all responsible for the whole process - we share the goals of both speed of delivery of features plus stable production uptime.
- Avoid the black box nature of silos and non-collaborating teams that tends toward finger pointing and mistrust
#### Embedded, Cross-functional Teams
- E.g., embedding ops people on a dev team
- Greater collaboration among teams
### [[The Three Ways from Gene Kim]]
- Systems Thinking, Feedback Loops, & Continuous Experimentation
### [[CALMS DevOps Framework]]
### [[Chaos Engineering]] & [[Antifragility]]
### Andon Cords
### [[Kaizen]] From [[Lean]] which is from [[Agile Software Development]]
### Visible Ops
- non-fragile artifacts, repeatable builds, etc.
### More of a culture than a particular role/position, methodology or tool.
### Blameless [[Postmortem]]
### [[Knowledge Sharing]]
### Consensus-based DevOps
[How to achieve DevOps consensus: The what and how of DevOps · Raygun Blog](https://raygun.com/blog/what-is-devops/
## Best Practices
### Keep builds and deploys fast
### Each developer is responsible for their check-in through deployment to prod
### Public Static Pages and build statuses
- Like those build passing green light things on open source package pages
- Public status pages and public build success/verification/tests
- Have a slack channel that sends the deployment status at each stage.
- be public and honest about outages, and be open and clear with what went wrong with your customers
### Artifacts should be immutable.
- e.g., remove write access to the package in artifactory
- People need to have no doubts that the artifact is identical
- Deployments should go to a copy of production (staging)
- Deployments should be idempotent.
- Stop deploy if previous step fails.
### [[Shift Left]]
### Test fixtures are artifacts so they should be in version control and a repo
### Broken builds/own your build
- Don't check in broken builds, own your build when it breaks
### Automate deployments and builds
- Shouldn't depend on any person or machine to do a build or deployment
### Don't ignore broken tests
### Always easy, quick way for a dev to rollback any given deployment to handle issues on prod that often arise from a deployment
### Simple, trunk-based branching strategy (master/main) and minimize branching
- Trunk-based Development v
- [[Git]]
### Only build artifacts once.
### Agile style small, iterative changes
### Deployments should always self-validate. At least do a smoke test.
### Golden Image or foil ball
- The idea that the initial base/template image should be as minimal as possible and let your configuration management do as much configuring as possible and while using infrastructure as code.
### Automate tests
## DevOps ToolChain/Stages/Pipeline
https://en.wikipedia.org/wiki/DevOps\_toolchain
### [[Stages of DevOps]]
## [[DevOps Tools]]
## Areas
### [[+CI CD]]
### [[Project & Product Management, Ownership, Leadership, & Agile]]
### [[Virtualization]]
#### [[Containers]]
### [[Infrastructure as Code]]
### [[Configuration Management]]
### [[Orchestration]]
### [[Microservices]]
### [[Automation]]
#### [[Build Automation]]
### [[GitOps]]
### [[DevSecOps]]
#### [[Security]]
#### [[Passwords & Secrets Management]]
#### [[Security Testing]]
##### [[Shift Left]]
### [[Software Measurement]]
#### [[Observability]]
#### [[Monitoring]]
### [[Site Reliability Engineering]]
### [[Cloud]]
### [[Software Architecture]]
### [[Data and information visualization]]
#### [[Data Dashboard]]s
## Inbox
https://en.wikipedia.org/wiki/Software-defined\_data\_center
Developer Environment
- https://en.wikipedia.org/wiki/Release\_management
- https://en.wikipedia.org/wiki/Software-defined\_infrastructure
- https://en.wikipedia.org/wiki/Converged\_infrastructure
- https://en.wikipedia.org/wiki/Software\_maintenance
- https://en.wikipedia.org/wiki/Hyper-converged\_infrastructure
- https://en.wikipedia.org/wiki/Systems\_management
## Sources
- [DevOps capabilities | Cloud Architecture Center | Google Cloud](https://cloud.google.com/architecture/devops)
- Good overview of best practices
### Web
- continuousdeliver.com/blog
- arresteddevops - podcast
- theagileadmin.com
- devops.com
- kitchensoap
- devopsweekly.com
- devopscafe.org - podcast
### State of DevOps Report
- https://puppet.com/resources/report/2020-state-of-devops-report/
### Conferences
- Velocity
- DevOps Enterprise Summit
- DevOps Days
### Courses
- [LinkedIn Learning: DevOps Foundations](https://www.linkedin.com/learning/devops-foundations/)
- [DevOps deployment automation with Terraform, AWS and Docker](https://londonappdeveloper.thinkific.com/courses/devops-deployment-automation-terraform-aws-docker)
- [DevOps Learning Path - A Cloud Guru](https://learn.acloud.guru/learning-path/cloud-adjacent-devops)
- [DevOps Essentials - A Cloud Guru](https://learn.acloud.guru/course/a9b44e15-6b47-4fc7-b6f1-62af794bb825/overview)
### Books
- Visible Ops
- The DevOps Handbook
- Release It!
- Continuous Delivery
- Effective DevOps
- The Practice of Cloud System Administration
- The Phoenix Project
- Web Operations by John Alspaw
- Lean Software Development: An Agile Toolkit
- Leading the Transformation
- For directors, CEOs, etc.
### DevOps Roadmap
- https://roadmap.sh/devops
- [bregman-arie/devops-exercises: Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions](https://github.com/bregman-arie/devops-exercises)
### Videos
- [Continuous Delivery - YouTube](https://www.youtube.com/channel/UCCfqyGl3nq_V0bo64CjZh8g)
- [What is DevOps? REALLY understand it | DevOps vs SRE - YouTube](https://www.youtube.com/watch?v=0yWAtQ6wYNM)
- [TechWorld with Nana - YouTube](https://www.youtube.com/c/TechWorldwithNana)
### Funny
- [Guided DevOps Meditation - YouTube](https://www.youtube.com/watch?v=epcbx5HkCbM&t=3s)
### Interview Prep
- [bregman-arie/devops-exercises: Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions](https://github.com/bregman-arie/devops-exercises)
---
- [Learn DevOps Online | KodeKloud](https://kodekloud.com/)