More on this book
Kindle Notes & Highlights
At its most fundamental level, DevOps is about breaking down silos and removing bottlenecks and risks that screw up an organization’s Development to Operations delivery lifecycle. The goal is to enable change to flow quickly and reliably from specification through to running features in a customer-facing environment.
operationalism
“DevOps is not a technology problem. DevOps is a business problem,” Damon Edwards
It is impossible to understand the operational requirements of a system until at least the design is complete, or in many cases until it is deployed and in active use.
In a DevOps environment, developers and sysadmins share the responsibility for meeting uptime requirements, so much so that both share oncall duties.
There is no concept of “them,” as in “hand off to them”; there is only “us”—the team working on the product.
mandating that operations, development, and business departments work together,
The Three Ways of DevOps”
The third way involves creating a culture where everyone is encouraged to try new things.
Another principle of DevOps is that small batches are better.
Velocity is how many times you ship in a month. High velocity and low latency are realized through releasing small batches.
Collect measurements on the length, frequency, and failure rate of the steps.
Find the steps that are the most error prone, unreliable, or slow. Replace them, improve them, or eliminate them. The two biggest inefficiencies are rework (fixing mistakes) and redundant work (duplicate effort that can be consolidated).
The most beneficial place to put energy into improvement is at the bottleneck.
Making all of this happen requires a culture of innovation and a willingness to take risks.
adherence to some of the basic Agile principles is definitely required.
DevOps can be viewed as system administration reinvented by sysadmins who finally had management support to do it the right way.
Site Reliability Engineer (SRE)
Relationships • Integration • Automation • Continuous improvement
“People over process over tools.” Once the right people are performing the right process consistently, only then does one create a tool to automate the function.
One of the key defining principles of DevOps is the focus on people and process over writing a script and then figuring out who should run it and when.
DevOps strives for simplicity and repeatability. Configurations and scripts are handled as source code and kept under version control.
Treat your processes like applications and build error handling into them.
Game Day Exercises: Sometimes known as “fire drills,
Striving for perfection discourages innovation, but too much innovation means taking on too much risk.
Google’s Error Budgets
Common Technical DevOps Practices
Release engineering is the process of taking software in source form, building it, packaging it, testing it, and deploying it into the field.
Ideally, get development and operations under one management team, the same vice president, or something similar. Also try to colocate
As fear of change increases, innovation declines.
The two major strategies for configuration are called convergent orchestration and direct orchestration. Convergent orchestration takes a description of how the environment should be configured, and the configuration management system then makes individual changes that lead to the entire system converging on that desired state. If
Baked versus Fried Configuration management
Different Files for Different Environments
The problem with using environment-specific packages is that these files have, essentially, bypassed the testing process. For that reason it is best to keep the use of this mechanism to an absolute minimum, preferably restricting it to files that are low risk or files that can be tested other ways, such as via pre-submit checks.
Infrastructure as Code
The canary process is a special form of the rolling upgrade that is more appropriate when large numbers of elements need to be upgraded.
Canarying is an insurance policy against accidental bad releases, not a way to detect bad releases.
Blue-Green Deployment
Feature toggling is one way to implement the general principle of decoupling deployment and release. Deployment is putting a package into an environment. Release is making a feature available to users.
“Gatekeeper”
dark launches:
database views.
This decouples software upgrades from schema changes. Now when the schema changes, each view’s code must change to provide the same abstraction to the new schema. The change in schema and the upgrade of view code happen atomically, enabling smooth upgrades.
McHenry Technique.
Progressive improvement beats delayed perfection. —Mark Twain
We should not make changes to the system; rather, we should instruct the automation to make those changes.
modern system administrators must be software developers.