A Technology I Underestimated

Last summer 2023 when I was working as a Backend Engineer Intern, I was first introduced to a technology that initially caused me frustration, but I later came to appreciate as I utilize it in my senior capstone project.

First lets talk Containerization. This software deployment process is important for reasons like portability, efficiency, faster delivery, flexibility, easier management etc.

“Containerization is the packaging of software code with just the operating system (OS) libraries and dependencies required to run the code to create a single lightweight executable—called a container—that runs consistently on any infrastructure.” (IBM)

In other words, containerization is like using a shipping container for software. 🚢 It can move and run the same way anywhere. As software engineers, we like to make our lives easier, not complicated. Well, at least we try to. Anything that streamlines development and deployment processes without compromising quality or security is a welcome change. Now introducing our friend: Docker

Docker is a platform that allows developers to build, test and deploy applications quickly using containers that run virtually anywhere.

Now up until this point, most of us have experienced developing full-stack applications. Remember that time you had like 10 different folder paths, going into your backend, starting up that server. Going into your frontend and starting that server. And going into any other microservice running on some other server. It quickly becomes a terminal tedium especially with large projects. Well what if I told you one simple command could start up all those servers? Docker does exactly that with docker compose up

Here’s an example from my capstone project:

As you can see, I am able to run my frontend, backend and my database servers all at once without having to manually enter each of their associated folders. Now imagine you’re at a large company where production has numerous servers, microservices, databases and other dependencies. It becomes clear that containers seem ideal to manage such levels of complexities. Docker is truly an excellent tool for organizing modern applications at scale. Overall, I wish I appreciated and knew about Docker sooner, but I am grateful to have been exposed to it last summer, and I look forward to learning more about it throughout our capstone project.

Sources:

“What Is Containerization?” IBM, www.ibm.com/topics/containerization.