How much can Docker simplify development?
Introduction In this article, I’ll share my thoughts and discuss situations in development when not having Docker on the project created problems. What is Docker? Docker is software for automating the deployment and management of applications in containerized environments. It enables development without detailed environment customization and allows efficient, time-efficient deployment of applications, infrastructure, databases, […]
Technologies
Introduction
In this article, I’ll share my thoughts and discuss situations in development when not having Docker on the project created problems.
What is Docker?
Docker is software for automating the deployment and management of applications in containerized environments. It enables development without detailed environment customization and allows efficient, time-efficient deployment of applications, infrastructure, databases, and more.
About the hierarchy of systems with Docker
It’s worth starting with the basics of this tool. Containerization does not equal virtualization.
In the past, virtualization (partitioning into subsystems) was used to manage and distribute computer resources more efficiently. This encapsulated the systems on a single server from each other and made it cheaper to rent servers because multiple applications could now be hosted on a single computer.
The next step of “evolution” in this area is containers. It allowed virtual machines on servers or servers themselves to be divided into smaller containers for programs. Docker uses fewer resources than traditional virtual machines.
To understand it, you can build such a hierarchy. One server (computer) can be configured into several virtual machines, and each of the virtual machines can be from one or more containers. It all rests on the resources of the server (RAM, storage capacity, the number of processors and their cores) or removal of the layer of virtual machines.
Of course, the word Linux has almost become a household name when it comes to servers.
Effectiveness and application
This is a common situation when a developer is working on several active projects and databases at the same time.
Docker completely removes the inconvenience of having to change the version of the base, language, tool, whatever. And you don’t need to fix system compatibility issues. A maximally useful and convenient tool for infrastructure deployment.
Apart from the other pluses, it brings standardization. It will be much easier for another developer or when migrating to a new server to deploy a Docker image in a short time. This eliminates the “worked on my computer” problem.
The deployment process itself is not a one-time operation, and it would not be efficient to spend time on it every time and not use automation tools. Docker, though, is just one of the tools that can help you organize CI/CD for your project.
Benefits:
- Isolation of dependencies
- Consistency and portability
- Rapid deployment and scaling
- Efficient resource utilization
- Easy configuration
- Security
- Efficient use of CI/CD
- Environment Replicability
A story from personal experience
I was onboarding a large project. It used microservice architecture and the main language was TypeScript. There were several front-end applications, about 10 back-end applications, several databases, and more than 15 custom modules with common functions and services.
Problems appeared almost immediately. Docker containers were used only for databases. On some applications, when compiling TypeScript to JavaScript code or loading packages, I got errors related to the local environment.
This problem arose as a result of the fact that the developers who were already on the project had been working with the current code base for a long time and had already encountered these problems before or used more “suitable” OS for development.
As a result – several days were spent on solving the problems.
Conclusion
Docker is a useful tool that will do more good than it takes time to learn it. It is a good weapon in the arsenal of developers, system administrators, and testers. These advantages make Docker a useful and effective tool.
If you’d like to find out more about how Swan Software Solutions can help your company with its technology needs, schedule a free assessment.