Nowadays, it’s all about availability. Both users and developers have high expectations of software and websites alike. Just think of the last time that a large outage dominated a company’s presence in the news. Here at Optis, we have noted an increased reliance on the ability to react quickly to any situation, which for our clients often translates into working in the cloud. Companies need to be more agile, both in their internal way of working and approach to customers.
Working in the cloud goes hand in hand with deploying more frequently and improving scalability, causing its own set of problems. Of course, modern problems require modern solutions. In this case, we are convinced that Infrastructure as Code (IaC) fits that bill by providing the benefits of code, automation and reproducibility to your organisation’s infrastructure. Joining us for an explanation of IaC, and what it could mean for your business, is Youri Declerck, software engineer at Optis.
At the infrastructure level, responsiveness is key. Large influxes of users during both expected and unexpected peak times need to be serviced quickly and correctly. Working with the cloud instead of on-premise hosting has eased this problem somewhat, but not entirely. Companies need to be responsive at all times, and manual deployments still require too much of that vital response time. Even worse, those hiccups are bound to repeat themselves, leading to frustration for both customers and employees, causing distrust in the longterm.
The keys to solving these responsiveness issues are reproducibility and automation, and that is where Infrastructure as Code comes in. As its name implies, IaC brings a code-centric way of working to your infrastructure. At its essence, that means managing your infrastructure through versioned configuration files. Combining the code of your applications and infrastructure turns your infrastructure workflow into a coding workflow, creating a single pipeline for everyone. Its high degree of cooperation and versioning also means adhering to the modern principles of DevOps.
Infrastructure as Code comes in all shapes and sizes. As the figure below shows, your choice will largely depend on the level of abstraction that is needed and the vendor of choice. Luckily, we have an equally large variety of specialists here at Optis, each with their own expertise. This means that we can serve our customers based on their specific needs, instead of evangelising one specific provider or tool. Not sure which particular one suits your needs the best? No worries: prioritising the match with your project is exactly why we keep our approach agnostic.
When we asked Youri this question, his answer was crystal clear: “as soon as someone wants to work in the cloud for real, bringing something into production instead of mere experimenting, they should use Infrastructure as Code.”
“Let’s say that someone makes a mistake, and they deleted all of your servers from your account. You would want the entirety of your services and infrastructure to be back online in under half an hour, right? Without IaC, reconfiguring and setting up everything would take you the better part of a day, if not multiple days. With IaC, it is just a matter of redeploying your configuration files.”
This is just one of the many advantages of using IaC. As mentioned, it is also about reproducibility and automation. Treating your infrastructure like code will enable you to deploy more often and with an increased sense of security. Here’s where it gets really interesting: you can use the tenets of reactive programming when designing this code.
We highly suggest checking out the previous Optis Tech Talk if you haven’t done so already for a detailed look at its benefits. Its principles can be used regardless of the language being used. To summarise: reactive programming is all about improving your responsiveness through elasticity and resilience. Those three aspects culminate in the principle of asynchronous communication, which makes your code message-driven.
The advantages are clear. Resilience and its lowered dependency on other systems will benefit the reproducibility of your code. Meanwhile, its elasticity (scalability on both ends) and responsiveness ensure that your automation keeps running smoothly.
By now, we hope that the advantages of treating your infrastructure as if it were code are self-evident. In today’s fast-paced IT environment, reproducibility and automation are key to your infrastructure. IaC ensures those key aspects by integrating the infrastructure and coding workflows into a single pipeline. According to our experts, it is not only recommended but pretty much essential if you want to take your cloud business seriously.
It gets even better when combining designing the code according to the principles of reactive programming. When used in tandem, these principles and design choices will blend seamlessly. This will benefit both the infrastructure and coding teams, ensuring that your newly created single pipeline keeps running smoothly.Finally, this convergence makes your IT department compliant with DevOps principles. To quote a certain Hannibal Smith: “I love it when a plan comes together!”
Be sure to stay tuned for more interesting Tech Talks, as we take a closer look at topics like Docker multi-arch builds and images, distributed logging in microservices, and Kubernetes clusters. Be sure to contact us with any specific questions or concerns you might have — we would love to help you out!