The dream of every software is to have a lot of users. To achieve this dream, the software needs to scale. Implementing Docker helps making scaling easier. Modern software is composed by various moving "parts". Because docker is about encapsulation it makes it easier to move those parts around. This helps enormously when scaling software.
There are two main benefits when you use Docker for your software:
The good thing about Docker is, that you can run multiple Containers of the same type on a server. This enables you to use the resources of your server better. If you have for example a back end app container and one container that runs a worker process. Maybe during the day the back end app container needs a lot of resources because a lot of users visit your website. During the night there are far less users but the worker does all kinds of heavy lifting and needs a lot of resources.
With Docker you can have five back end app containers and one worker container running during the day and during the night you only run one back end app container but five worker containers.
This way the resources of your servers are always utilized at an optimum.
The day will come when your one server just is not up for the job anymore. You have multiple containers running on the server and it is always under very heavy load.
It's time to buy another server. And then you can move some of your containers onto the new server.
You could for example move all your back end app containers to the new server, making your back end app far more powerful and freeing up resources on the old server for the other parts of your system.
Our you put for example one back end app container on each server and one front end app container on each server. This would give you more availability. In case the hard disk on one server crashes, you still have the other server with all parts of your system. For sure your system will be way slower, but it will eventually be able to handle the load until you have replaced the broken server with a new one. And because you have only Docker containers provisioning a new server is fast and you should be up and running at full capacity in no time.
Remark: Not all software can be put on two servers and work out the box. But Docker really helps a lot when trying to get this kind of higher availability
Scaling software is about handling the moving "parts" of your system. Giving your "parts" more power or spreading your "parts" out on multiple servers to increase availability.
Because Docker is about bundling and encapsulation of these "parts" it makes it way easier to handle the "parts" of your system because everything that is needed for the part to run is in its container.
If every moving "part" of your system itself needs configuration and libraries in the right versions then handling these "parts" is unnecessarily complicated.
WunderPreview: Get a live preview environment for every new feature.
Works for every tech stack. 30 days free trial. No credit card required.