Faster Software Delivery With Docker

With "software delivery" we mean the process of releasing your new software to its users. In our web development world this basically means bringing all parts of the software to a server, so the user can access the software with her browser.

With Docker you have fast software delivery (like a bike delivery is the fastest in an urban area)
With Docker you can speed up your software delivery (Photo by Roman Koester on Unsplash)

With Docker the Software Delivery Usually Looks More or Less Like This:

  • The Docker image is build
  • (Eventually some automated tests are run in the Docker image to make sure everything is working)
  • The Docker image is copied to something called a Container Registry. It is a place where you can put all your Docker images for easier sharing.
  • The Docker image is fetched from the Container Registry and started on a server.
  • The old version of your Docker image that is currently running on the server is stopped.
  • So basically it is bundling up software, moving it to a server and starting it. We did something like this for decades.

    How Does Docker Make Software Delivery Better?

    Today's software consists of a lot of moving parts. This parts can be a back end app, a front end app, a database and all kinds of other components.

    All those parts need to run on a server. And all those parts can use different technologies and use different libraries from that server. If you update one of those libraries on the server to a new version (because your back end app needs the new version) it can happen, that this breaks your database (because your database needs the old version of the library and can not work with the new version)

    With Docker this problem is solved, because everything your software "parts" need is inside their container. The container does not care about the library on the server, it has its own version of the library inside. Encapsulation is the keyword here.

    Also a big Advantage: Easy Rollbacks in Case of Problems:

    So you have started the new version of your container on the server and have stopped the old version. Great.

    But it turns out that soon you get a lot of error in your log files and angry users are messaging you that "nothing is working anymore"!

    On a server without Docker this can be a nightmare because you have to bring the server in the exact state as it was before the last release. And you have to do it fast! This can be really really tricky and it will be very stressful.

    On a server with Docker you just stop the new version of your container and start the old version of your container again. Problem solved! (This assumes that you still have your old container lying around on your server)

    Conclusion

    Implementing Docker makes your software delivery easier and faster. It also makes deployments far easier to roll back. Removing stress from the product team and basically making deployments a non-event.

    Level up!

    WunderPreview: Get a live preview environment for every new feature.
    Works for every tech stack. 30 days free trial. No credit card required.

    Keep things moving with automated previews.

    Screenshot of WunderPreview Dashboard