Nowadays there are many different solutions for Infrastructure as Code. It is crucial for us to make the provisioning of our customers' infrastructure as efficient, reproducible and automated as possible. That's why we work with Terraform. What are the advantages in our opinion?
What is Infrastructure as Code?
Infrastructure as Code means, that by creating simple code, cloud infrastructures can be configured and automated processes (e.g. provisioning) can be implemented in the environments without having to select individual components in a console. The advantages lie in the fact that the configuration files created can be reused several times, which significantly reduces the time required, allows high standardization and higher quality.
Modularity & Standardization
- Division of the configuration files into modules: This makes it possible to structure projects differently depending on their characteristics.
- High degree of standardization: Complex constructs can be reused without manual reconfiguration. The Terraform user only has to hand over a few variables to a module, for example if someone requires the same infrastructure in a different region.
- Automatic processes: If, for example, a database is configured, the associated monitoring is also set up without additional effort.
- Cross-provider, flexible model: There is a constantly growing number of supported providers that can be provisioned using Terraform (including AWS, Azure and Google Cloud Platform). The corresponding modules are dynamically loaded and communicate with the various cloud providers. This means that it is not necessary to invest time into learning new tools.
Traceability of the set-up
- Version control: Terraform allows us to make changes to the infrastructure reproducible through version control.
- Error reduction: Thanks to a review process using GitLab, we can reduce errors because each change must be approved by a second person.
- Simple documentation and traceability: The infrastructure code can be divided into individual components that are tailored to individual planning. The HCL (HashiCorp Configuration Language) format is also easy to read.
Automation of processes
- Elimination of manual intervention: Terraform does not necessarily have to be operated by a person, as the processes can be automated to a large extent.
- This allows fast troubleshooting: Test runs can be started periodically to check the infrastructure for config drift and to find quick ways to fix it. (A config drift can occur if a change is made outside of Terraform and no longer matches its configuration.)
- Consistent code quality: With a CI-CD pipeline and automated testing, you can also ensure that the code quality meets the set standards.
How does Terraform stand out from other solutions like CloudFormation?
Terraform comes with its own Domain Specific Language (DSL), which is very readable, automatically validated and formatted. The only disadvantage is that you have to take up another programming language - but it is relatively easy and quick to internalize. For comparison: CloudFormation (tool from AWS) templates are described in YAML. This language is well suited for simple configurations, but loses clarity with increasing complexity.
The AWS provider on Terraform is also open source, so new services are often available on Terraform faster than on AWS CloudFormation. This means that we are always up to date with our customer projects.
What does this mean for you as a customer?
Thanks to the modular, open structure and flexibility of the tool, we are even faster and more flexible in delivering new set-ups. In addition, we make sure that possible human errors are reduced to a minimum - this ensures that the systems are much more stable and your application is highly available.