Docker
Billed as the solution to the ‘it works on my machine’ problem for building your project infrastructure, Docker is now the go-to tool for containerised infrastructure. Docker’s concept of storing build configuration in the project codebase (Dockerfiles) gives you more understanding of your project infrastructure, as this configuration can now be included in the project source control.
The declarative nature of Dockerfiles, and the high quality, up-to-date documentation of the Docker ecosystem makes for an easy-to-learn, simple, and reliable build tool, as well as runtime which scales well with an increasing load. With the Docker for Desktop application bundling the base Docker engine plus docker-machine, swarm, and Kubernetes support, the setup speed from nothing to a full containerised infrastructure is much lower than during Docker’s initial release a few years ago.
As a result, it’s almost trivial to set up a small-scale replica of your production infrastructure on a developer’s laptop. Although your mileage may vary depending on your application’s resource needs – some simply don’t fit on a single laptop. This brings you the previously hard-to-achieve ability to test your fully integrated system locally. Here, it can be much more easily poked and prodded to reproduce the issues and complex behaviours distributed systems exhibit.
Containers are also being used to run jobs that finish in a finite time – batch processes, build jobs and other similar tasks – as people are realising the full potential of having a portable runtime format that can be run on a platform, such as Kubernetes. GitHub Actions uses this capability, along with community-managed base image ecosystem, to deliver a highly customisable continuous integration service where you don’t need to worry about a tool’s availability. You can just build them into your build step’s base image.
Even enterprise engineering solutions can leverage Docker now. A full enterprise level version of Docker is available with all the support you’d expect to come with an enterprise-level product.
Simply put, if you haven’t yet used or at least tried Docker on a project, there are very few reasons not to. The lower level building blocks of Docker are also being open sourced and ownership is being transferred to the community. The container standard is here to stay, regardless of what the future may hold for Docker as a brand and company.