Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
Rate it:
Open Preview
Kindle Notes & Highlights
4%
Flag icon
The time from deciding that you need to make a change to having it in production is known as the cycle time, and it is a vital metric for any project.
8%
Flag icon
Delivering fast is also important because it allows you to verify whether your features and bugfixes really are useful. The decision maker behind the creation of an application, who we’ll call the customer, makes hypotheses about which features and bugfixes will be useful to users. However, until they are in the hands of users who vote by choosing to use the software, they remain hypotheses. It is therefore vital to minimize cycle time so that an effective feedback loop can be established.
8%
Flag icon
Quality does not equal perfection—as Voltaire said, “The perfect is the enemy of the good,”—but our goal should always be to deliver software of sufficient quality to bring value to its users.
8%
Flag icon
If releases are frequent, the delta between releases will be small. This significantly reduces the risk associated with releasing and makes it much easier to roll back.
8%
Flag icon
A working software application can be usefully decomposed into four components: executable code, configuration, host environment, and data.
8%
Flag icon
They are as comprehensive as possible—that is to say, they cover more than 75% or so of the codebase, so that when they pass, we have a good level of confidence that the application works.
10%
Flag icon
The repeatability and reliability derive from two principles: automate almost everything, and keep everything you need to build, deploy, test, and release your application in version control.
10%
Flag icon
Clearly, hardware cannot be kept in version control; but, particularly with the advent of cheap virtualization technology and tools like Puppet, the provisioning process can also be fully automated.
Sugan
Wrong
11%
Flag icon
It should be possible for a new team member to sit down at a new workstation, check out the project’s revision control repository, and run a single command to build and deploy the application to any accessible environment, including the local development workstation.
11%
Flag icon
There are two other corollaries of “Build quality in.” Firstly, testing is not a phase, and certainly not one to begin after the development phase. If testing is left to the end, it will be too late. There will be no time to fix the defects. Secondly, testing is also not the domain, purely or even principally, of testers. Everybody on the delivery team is responsible for the quality of the application all the time.
11%
Flag icon
Ultimately the team succeeds or fails as a team, not as individuals.