ActiveTextbook with Docker Containers
I’d like to discuss a topic that’s not directly relevant to end users but is very important to businesses hosting and maintaining ActiveTextbook. Specifically, I’ll be talking about hosting and updating ActiveTextbook server software with Docker containers.
Docker is a containerization technology that has taken off in the last few years. The original ground work was laid by Google, but popularized by Docker Inc in 2013. Containerization is a standard way to package server side applications. Packaging all applications in the same manner allows for a efficient workflows and numerous other benefits:
- simple installs
- isolation
- reproducibility
- scalability
Simple Installs
Although ActiveTextbook is available as a cloud platform, we frequently deploy licensed copies on premises. Docker defines a very simple workflow for downloading and installing containerized ActiveTextbook.
Isolated
Since we install on premises, we frequently run into cases where our Customer’s preinstalled software may conflict with the software that is required to run ActiveTextbook. Containerization solves this problem since containers are completely isolated from each other and the host operating system.
Reproducible
One of the persistent thorny issues in software development is ensuring that software, as tested, gets delivered in to the customer. This problem is well solved with Docker containers. Once a container is built (similar to compiling source code) it transitions through the development process, from development to quality assurance and finally to customer (or production). Since it’s the same artifact at each stage we can be sure that we are deploying a correct version.
Scalable
Containers from inception were designed to be scalable. ActiveTextbook itself is horizontally scalable due to it’s design. Containers make it infinitely more flexible to scale, especially with support of such features as Amazon’s Autoscaling groups and zero downtime rolling updates.
Containerization is a fascinating new technology that has many benefits over traditional deployments. It allows to standardize application roll outs as well as ease runtime maintenance. All of this translates to lower costs and better uptime.