ARD03: Software deployment and maintenance
Status
Accepted
Context
Deploying software is hard, in so many ways. We need a consistent, well-understood and documented methodology for deploying server components, such that it can be done in a reliable, repeatable, secure, trustworthy manner.
Decision
Use Docker for deploying all components other they the base operating system. Install the simplest, smallest, secure operating system distribution possible. Put Docker on top of that, and everything else in the hands of docker.unless there is a very strong and compelling reason not to do that.
Rationale
- Docker is becoming, or may well have long since become the de facto standard for deploying and configuring software packages.
- It is very well documented and relatively easy to understand. The learning curve for using it on the mainline path is surprisingly easy.
- Nearly every software package we might want to use, and certainly all those that have already been deployed in ‘the lab’, are readily available.
- Maintaining software packages — docker images — is done by the people that do that best. We have very little to do to install, configure, and maintain it on our servers. I not awary of any alternative that comes close to providing an ecosystem that comes close to Docker’s. Essentially, it’s a no-brainer.
Consequences
- Work is minimized, trust is maximized, and maintenance is about as easy as it can get.