Containers are now the de-facto standard of running modern applications on the Cloud. Containers can run every tier of an application. Containers provide a “fully baked” version of a functional component of an application thereby making it easy to deploy and execute the component. Without a baked container image, it would be hard to install and connect all the dependencies that an application requires. Apart from making deployment and execution simpler, containers provide other benefits like ease of scaling and capacity planning for application performance.
This article is to explore the idea that can containerization be applied to the very process of software development itself? Going back to the application paradigm – containers were created to “resolve” as many dependencies of a given component/application as possible and to provide a clear route to connecting to other components of the application. Applying the same paradigm to the process of software development, what are the dependencies on which the process relies on?
In the following illustration, you can see the dependencies of a containerized application. In order to execute, it will need all of the dependencies resolved. Creating an image and executing it as a container resolves all of these dependencies.
Now consider a similar illustration highlighting the various dependencies of a software development project:
If we were to containerize the very process of software development, we would have to quantize each dependency and provide some metric with which they can be “added” into a container. This would provide a client with an easy choice of what size of a container they would need depending on the size of the project. Not only that, but also multiple such software projects could be estimated using the container model. Choosing such a “dev process container” would allow the client to easily estimate both the cost and timeline of the project.
In the next part of this multi-part blog, let’s dive deeper into each of these dependencies and try to create the metric system referred above.