Infrastructure supports applications.
Being able to trust software is critical to success in engineering.
What if every time you typed the
ls command in a terminal a random action happened?
You would never trust
ls and would find a different way to list files in a directory.
We need to be able to trust our infrastructure. This chapter is aimed at opening up the ideologies on trusting and verifying infrastructure. The practices we will describe are designed to increase confidence in infrastructure for applications and engineers.
The practice of testing software is quite common in the software engineering space today. The practice of testing infrastructure, however, is virtually undefined.
This means that of all lessons in this book, this should be the most exciting! There is room for engineers, like you, to make a fantastic impact in this space.
Testing software is the practice of proving that something works, that it doesn’t fail, and that those conditions remain true in a variety of edge cases. So if we apply the same paradigm to testing infrastructure, our goals for testing are as follows:
Prove the infrastructure works as intended.
Prove the infrastructure isn’t failing.
Prove that both conditions are true in a variety of edge cases.
Measuring whether or not infrastructure is working requires us to first define what working means. By now you should feel comfortable with the idea of representing infrastructure and engineering ...