Twilio deploys on average 30 times/day and maintains 99.999% availability. Conventional wisdom suggests that Agility and Reliability are mutually exclusive. In many domains where there are physical constraints, this may be true. However, with software, most of the overhead of testing and deployment can be removed through automation. And ironically, the more agile your deployments are, the more resilient your system will likely become. Why? Because it has to be. You can’t manually deploy something 30 times/day. You can’t manually test software 30 times/day. And when you remove the manual steps, you also remove many sources of error.
Jeff Lawson quote from the above talk:
Companies that win are companies that ship software.
Opensource software has historically been high-quality because of the process of openness, peer review, lack of business pressures that force shortcuts to be taken, etc. But lately, many OSS projects are also excellent examples of CI automation. Any more, we rarely worry about upgrading an OSS package, or even the OS on a production system. At some point, the concept of “stable” or “LTS” releases may fade as the reality will be the latest release is generally better and more stable than any previous release because the testing automation is also improving with the software itself.