Like any other software lifecycle, infrastructure-as-code solutions can mature over time. But how do we know where we are in our maturity and the steps to take to improve? This post introduces a maturity model that you can use for infrastructure-as-code. It also explores how you can use composition and reusability to improve your solutions and make them more testable.