There’s always been a big gap between the developers and operations, there was even a time that the developer would write their code and hand it to the operations to handle and deploy. But with advance of technology, usage of Docker, Kubernetes, cloud providers developers and operations are beginning to get closer and closer, sometimes to a point the back-end developer is dealing with all the infrastructure and there’s not even an operations team.
But is it good that the developer needs to know and understand all the nuances of AWS, GCP, Docker, Kubernetes, CI/CD, etc?
That is where the DevOps team comes in play.
DevOps is a team that unifies the knowledge of developers and operations, making it easier to fill the gap between those teams.
But how to they do this?
Creating an Internal Developer Platform, or IDP for short. An IDP is a layer between the developer and all those operation technologies making it so now they don’t even need to know how they work, they just consume them as services. That means now the developer can manage their K8S cluster, deploy their app on a CI/CD pipeline in a clod platform without the need to directly interact with them.
This is specially good for big companies, because it makes it easier to control and define patterns that all teams should use, add default monitoring layers, security layers, or K8S cluster configurations without the need for the developers to know all the details.
All of that means that now the developer isn’t waiting for the operations team to hand them a cluster or deploy their app. Now they can just interact with the services and do it themselves, but without the risk of adding security flaws, forgetting monitoring, etc. In other words, an IDP increases productivity of the whole company.
But why don’t we create a global IDP so everyone can use it?
As mentioned before, an IDP must be created specifically for the needs of a single company, with their monitoring systems, security patterns, cloud provider rules, etc. That is also why there is no single technology to use to create an IDP.
There are some technologies that are widely used nowadays, so I can recommend some tools to help get you started. If you use K8S for instance, maybe use the operator framework that helps you extend the K8S api to your specific needs. Also for cloud providers, an Infrastructure as Code (IAC) such as Terraform should be enough to define and create your resources. Also Go would be a great language of choice, because it is very easy to learn, has great performance, and most of the tools you’ll be using, like K8S or Docker, are written in Go.
Conclusion
This is just a simple article on my view of DevOps and Internal Developer Platforms, after some time working as a DevOps Software Engineer in a big company. I really think is something to keep in mind, and hope this article was useful to you.