Chapter 5. Design Principles For Infrastructure as Code

A good system design leads to an implementation that is effective in meeting the needs of its users, and that is easy to continuously evolve with those needs. This chapter discusses how to do this in the context of infrastructure implemented through code.

Traditional approaches to infrastructure architecture assume that an initial design, once implemented, won’t change much which, as explained in Chapter 1, is a misconception. Many people aspire to treat designing software systems like designing a bridge or a building.1 The idea is that a design can anticipate and meet all potential future needs. The result is most often overly complex systems that are difficult to change in unexpected ways and so need to be completely replaced a few years later.

Software, including infrastructure defined as code, is much easier to change than a bridge or skyscraper. The difficulties that ...

Get Infrastructure as Code, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.