A number of colleagues and I are currently reading Kief Morris’ excellent book on Infrastructure as Code (link below). Here’s a short summary of the first two chapters.
Transitioning from “The Iron Age” of managing your hardware resources yourself, to “The Cloud Age” where you instead buy usage of virtualized resources as needed, Kief tries to frame our thinking in assuming that “systems are unreliable” why we need to “Make everything reproducible”, focus on creating “disposable things” that “Minimize variation” and that we can “repeat any action”.
Kief claims that stability comes from making changes and that neither prioritizing speed over quality nor prioritizing quality over speed leads to happiness, but that we must prioritize them together.
“If it’s worth documenting, it’s worth automating” is another claim, elaborated with: If you can script a task, script it. If it’s too hard to script, dig deeper. Maybe there’s a technique or tool that can help. As a side note, the author of this article has had good experiences with interweaving manual tasks in automation scripts temporarily, until they can be fully automated.
- Define everything as Code
- Continuously test and deliver all work in progress
- Build small simple pieces that can change independently
- Minimize variation