First off, What is Infrastructure as Code (IAC)? IAC can be thought as a way of reducing manual touch points for managing your infrastructure. In other words, it’s an automated approach to your infrastructure. There’s a lot of ways to do this but what may end up happening is reducing the need for a large DevOps team. You don’t realize the benefits of IAC with smaller applications. In this case, managing the infrastructure through a cloud provider’s web console is likely good enough.
However, when your small application grows, so does the number of services that it uses. Therefore, managing the same infrastructure grows more complex. What adds to this complexity is from using multiple environments, such as dev, staging, QA, and production.
When IAC Isn’t Needed
Before we dive into why IAC is needed, let’s go over why you wouldn’t need it. If you’ve launched proof of concept (POC) in the past year, it’s probably streamlined with limited functionality. As a result, your POC or any other smaller application demands little resources for managing its infrastructure. Your team can easily maintain and scale your infrastructure through the user interface console of a cloud service provider, such as AWS. You can also manage it through the cloud service provider’s command line interface as well as through bash or similar scripts. These manual approaches are definitely manageable. However, keep in mind that they require in house developer expertise to keep your apps up and running.
Use IAC If You’re Facing These Challenges
If you’ve passed the POC or initial stages of your app, this is when you really start to experience the advantages of IAC. See if your dev team has ever raised the following issues:
- Our team has trouble understanding/agreeing on our current infrastructure’s setup and configuration.
- We deploy code all the time but spend an unhealthy amount of time figuring out the order of the infrastructure’s deployment.
- We spend a lot of time copying and reusing our code in different projects and environments.
- Developers dedicate a good chunk of time spinning up dev environments and killing them for testing purposes.
- We make a lot of mistakes provisioning and managing our infrastructure.
- The infrastructure setup is manually configured and takes a lot of time to confirm that it’s live and working.
- Our team spends too much time setting up the infrastructure and not enough building out core functionality.
- Developers are tired of manual methods to track and manage infrastructure changes.
- Our regulatory compliance for the infrastructure is to pray that QA and UAT pass.
- The wrong people have access to our protected environments.
If your team is checking off several of the bullet points, then it’s probably time to consider and implement IAC. Obviously, some of these issues are more serious than others. The litmus test for IAC is whether your team can manage all aspects of your infrastructure without automation.
So, check with your team to confirm whether it’s time for IAC and with a migration expert to get started.
Tools for IAC
If you’re already thinking, we need IAC, the first thing you’ll need to consider is the breadth of the implementation. Do you need a full or partial implementation? With full, you’re changing every part of your infrastructure to be managed by code. With partial, you implement IAC on the core services that would benefit the most. IAC is not a one size fits all approach and certainly depends on your organizational needs.
Once you’ve confirmed the breadth, now let’s look at depth. Are you looking for a configuration-based or code-based tool? A configuration-based tool is as simple as it sounds; you set it up with limited code and apply standardized configurations to manage the infrastructure. Code based tools are more complex but allow more control of the breadth and depth of your IAC.
Beyond the tool type, you’ll find providers such as AWS offer differing IAC offerings, such as CDK, templates, and serverless frameworks. You’ll find the equivalent implementations through other providers like Azure, GCP, and Terraform. Consult a migration expert to determine which tool is most compatible with your tech stack.
The Bottom Line
If your team is spending too much time fighting with your infrastructure, it’s time to help them out. Take an IAC approach to your infrastructure and free them up for core development work. Let’s discuss your infrastructure and how IAC can help!