During my interviews with backend engineer candidates, I have consistently noticed a lack of familiarity with the infrastructure as code (IaC) approach. Surprisingly, only a small percentage of individuals actually apply this approach in their work. It seems that in many companies, infrastructure deployment is handled by specialized departments, such as DevOps engineers.

This observation has prompted me to wonder about the reasons behind this phenomenon.

In my experience, the development of microservice architecture and infrastructure go hand in hand. It's hard to imagine these tasks being handled by separate teams.

Infrastructure as code (IaC) is a methodology that involves creating, managing, and automating infrastructure using code. One of its key advantages is idempotence, which means that the same operation will always produce the same result. This ensures that the deployment command installs the same configuration regardless of the initial state of the system. By implementing IaC, we can eliminate the influence of human error and create identical test and production environments. This is crucial for maintaining high-quality application development processes.

Using IaC in development is widely recognized for its importance. Those who do not implement this approach in practice often face limitations due to a lack of competence or resources. However, I would highly recommend utilizing IaC, even in companies with just one developer.

I would like to go into a little more detail. Who should still be engaged in infrastructure - backend developers or DevOps engineers? In our company, this functionality is performed by developers and this gives many advantages.

I tried to give examples that infrastructure can be handled not only by DevOps engineers but also by ordinary backend developers. And there are certain advantages to this. Someone may disagree with all the points since a person immersed only in DevOps will understand the problem more deeply. But like many issues in development, who will be responsible for the infrastructure of the project has its advantages and disadvantages. There is no silver bullet. As a result, it does not matter who does this work in your company, if you adhere to the IaC approach, the processes are optimally configured, and the time from setting the task to rolling out to production is not burdened with unnecessary meetings and approvals. I managed to work on different projects and at the moment I see a large community of developers who are independently engaged in IaC.

The lead image for this article was generated by HackerNoon's AI Image Generator via the prompt "Infrastructure as code"