Companies are facing pressure to quickly scale their infrastructure while maintaining control and cost efficiency. Using manual methods to manage infrastructure often leads to bottlenecks, inconsistencies, and rising costs. To address these issues, many organisations are turning to Infrastructure as Code (IaC). This method helps them be more agile while scaling smoothly and staying in control.
We’ve sat down with Mykola Orlov, Head of Development and Operations Office at ELEKS, to discuss Infrastructure as a Code, best implementation practices, and how to avoid common pitfalls.
There’s a well-known concept: "pets vs. cattle." When you treat your machines like pets, you care about them individually. But when you treat them like cattle, you operate at scale, and if one "cow" goes down, it's not a big deal. Infrastructure as Code is a practical implementation of that concept.
It allows you to manage large numbers of servers in a scalable and repeatable way. If one server fails, it's not a tragedy — you simply recreate it. Infrastructure as Code describes your infrastructure in code, rather than manually configuring everything. This brings several advantages:
This applies to different components: VMs, networks, storage, firewalls, etc.
I'm not sure there are many companies just starting with IaC these days, as it's already become quite standard. However, mistakes are common; they are the same as in scripting or in configuration management.
Common issues include:
These aren’t unique to IaC, but they definitely show up in this context too.
Well, it definitely helps. But there’s a catch. You need to invest time upfront to describe your infrastructure in code. This might slow things down initially, but in the long run, it pays off.
At first, you're spending a lot of time writing and testing your configurations. But once the infrastructure is described, your ability to respond and scale increases dramatically. For example, something that used to take several days can be done in 30 minutes or less. So, it helps in the long term and that’s what makes it powerful in the long run.
It’s easier to answer where it’s not effective. The investment might not be justified for smaller-scale, short-lived proof-of-concept projects where there's only one environment and no expected changes. But in long-term projects, where there are multiple environments (dev, QA, stage), and where changes and scaling are likely, then IaC is absolutely worth it. So, ideally, we should assess at the beginning of a project, but in practice, that decision is often made early on by the DevOps experts or the architecture team during the design phase.
Well, first of all, read the documentation. This concept has been around for quite a while, and many people have already gone through the trial and error. There are well-established best practices.
So, my advice is:
I would recommend starting with the tooling. The most universal solution is Terraform, since it’s cloud-agnostic. Terraform has great official documentation, and that’s where I’d suggest starting.
Infrastructure as Code (IaC) works with all major cloud services, including AWS, Microsoft Azure, Google Cloud Platform (GCP), IBM Cloud, and Oracle Cloud. Tools like Terraform, Pulumi, and Ansible allow you to manage infrastructure across different platforms. These tools are designed to work with any cloud, making it easy to create and manage resources using a single configuration language.
Infrastructure as Code describes your infrastructure in code, rather than configuring everything manually, offering better visibility into the changes made, seamless recovery of deleted items, and easier scalability. Additionally, it helps strike the right balance between quickly implementing changes and maintaining control over infrastructure.
The breadth of knowledge and understanding that ELEKS has within its walls allows us to leverage that expertise to make superior deliverables for our customers. When you work with ELEKS, you are working with the top 1% of the aptitude and engineering excellence of the whole country.
Right from the start, we really liked ELEKS’ commitment and engagement. They came to us with their best people to try to understand our context, our business idea, and developed the first prototype with us. They were very professional and very customer oriented. I think, without ELEKS it probably would not have been possible to have such a successful product in such a short period of time.
ELEKS has been involved in the development of a number of our consumer-facing websites and mobile applications that allow our customers to easily track their shipments, get the information they need as well as stay in touch with us. We’ve appreciated the level of ELEKS’ expertise, responsiveness and attention to details.