From PM2 to Docker!

At the beginning of the project we didn’t need to have multiples environments, but as the project was growing, we felt the need of having a more “stable” environment where our product owners could test the application without being interrupted by a new version that was being deployed at that moment.

In the search of a tool or technique for having more Node.js process running in the same server but in different environments we found PM2, this a process manager for Node.js, so we developed a solution around PM2 to handle multiple environments. But there was an issue, we were not using PM2 the right way, and there were a lot of technical depth in that implementation, trying to add a new environment took us a lot of effort and time, so I knew that something was wrong. We needed to find a new solution to this, and here is where Docker saved the day.

I mentioned Docker a few times in the project, but no one gave the chance to try out that technology, so me as developer knew that Docker was made for this kind of scenarios, and also I knew all the benefits that Docker will bring to the project in a near future, so in order to prove that some time was taken in parallel of my the daily tasks, after some spikes, reading, watching, trying, and breaking, but in the name of science! the first version of the application was finally up and running on my local machine in a Docker Container with all the functionalities working.

So, after some discussions with my coworkers, technical lead, architect, and product owners, finally Docker was accepted and now with that, I needed to do a rework around our Build and Deploy process. The only “huge” change in the infrastructure was moving from Windows Server 2016 to RedHat.

This change marked an important milestone in the project, bringing a lot of new benefits in development, architecture, operations, and in the overall project positioning in a new place inside the company.

Some of those benefits are:

· Faster build and deployments.

· Standardized continuous delivery process.

· Less manipulation in the server.

· Applications on demand, easier deploy of a new environment.

· A new whole world of possibilities.

Thanks for reading, that was my first big achievement in my first job at IBM as a developer.