Chapter 10. Software Engineering Practices for Infrastructure

The enabling idea of Infrastructure as Code is that the systems and devices used to run software can be treated as if they, themselves, are software. This makes it possible to use tools and working practices that have been proven in the software development world. This chapter examines specific software engineering practices that many teams have found to work well for developing and maintaining infrastructure.

The main theme of the software engineering practices covered in this chapter is building quality into the system. Quality is not a separate practice from development, a testing activity that happens after a system has been built. Quality must be an integral part of the way in which developers—including infrastructure developers—plan, design, implement, and deliver systems.

Some of the principles that support quality in developing software and infrastructure include:1

  • Start delivering working, useful code early.

  • Continue to deliver in small, useful increments.

  • Build only what is necessary at the moment.

  • Build each increment as simply as possible.

  • Ensure each change is well designed and implemented.

  • Get feedback on every change as early as possible.

  • Expect requirements will change as you and your users learn.

  • Assume everything you deliver will need to change as the system evolves.

This chapter explains how to use practices from continuous integration (CI) and continuous delivery (CD) to support ...

Get Infrastructure as Code now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.