We participated in Red Hat Open Tour 2022 Tallinn a while back. Johan Wennerberg, who is a Solution Architect for Red Hat Nordics in Stockholm, gave a presentation titled "Gain robust repeatability as self.service, by automating your automation". Among other things he discussed the importance and use-cases of Cloud infrastructure standardization and automation. Here I willsummarize his views on standardization and automation and explain how they tie in with our focus on quality in the Cloud infrastructure and elsewhere.
Johan started his presentation from the key topic of standardization, which is the basis for gaining the advantages from automation. So, standardize the components you automate, as well as the automation processes. In industrial automation everything is standardized and you won't be seeing manual ad hoc steps there; the same principle should apply for IT automation as well.
Johan listed the benefits of standardization and automation:
- Efficient operation / maintenance
- Policy / Governance
- Audit / Reporting
- Middleware / Application platform
- Backup and observability
- Operating system
All of the above produce predictability and are very spot on.
How does Cloud infrastructure standardization and automation tie in with quality?
Now I want to look at this from our viewpoint, which is quality in the Cloud. You can use version control systems along with infrastructure as code tools to improve the quality of your Cloud infrastructure. The tool can also help you automate your Cloud to a high degree. When using IaC you are actually implicitly standardizing your infrastructure because automation in most cases creates standardization. If you deviate from the standards you actually do more work. This is because you'd need to parameterize your code. Or, in the worst case, you would have to hard fork your codebase tos support multiple scenarios. Both cases end up in maintenance troubles down the line.
That said, if you focus on Cloud infrastructure standardization and automation you improve the quality of your IaC code and Cloud:
- The whole team knows the tools, applications and Cloud resources you're using. When you're peer reviewing you review not only code, but the practical implications of the change.
- The components you're using are standardized and tested in real environments. When you deploy a component you can be certain that it works well. This is because it has already been tested elsewhere. You means less extra testing effort on your part.
- It helps you build common patterns around the standardized application and toolset, even when full automation is not possible.
Standardization should be organization-wide to avoid each team ending up with different solutions to the same or similar challenges.
Importance of discipline in standardization
You need a lot of discipline to not cut corners when standardizing and automating your Cloud infrastructure. This is particularly true when operating in multiple environments. For example, you need to ensure that the stakeholders in those environments understand why standardizing makes sense. Moreover you need convince them that your way makes most sense to them. You should emphasize that other options would be more costly in time and money. More importantly alternatives would produce lower quality results.
You also need discipline to avoid copy-and-paste reuse of your IaC code. While copy-and-paste is often the quickest solution, it causes issues down the line: with copy-and-paste you're violation the DRY principle. In practice you end up implementing fixes and feature in multiple places. Instead, you should modularize code while maintaining high degree of standardization.