July 20–24, 2015
Portland, OR

Using Docker to simplify distributed systems development

John Hugg (VoltDB)
4:10pm–4:50pm Thursday, 07/23/2015
Foundations Portland 256
Average rating: ****.
(4.17, 12 ratings)

Prerequisite Knowledge

Basic knowledge around Linux. Introductory concepts around distributed systems.


Setting up environments, starting processes, and monitoring processes on multiple machines is painful and error prone, even with tools like tmux. When setting up a distributed development environment, a lot of things can go wrong; for example, stale settings left from previous tests, incorrect configuration on some machines, executing the wrong command on some portion of the machines, using local file systems when you need them to be shared, or file collision on shared file systems when you need them to be separate. The are lots of opportunities for mistakes that slow down progress and sap the fun from programming.

Using Docker makes life much easier: it’s simpler and faster to build a Docker image that has the common tools needed to run and debug production-level code. With the isolation of the container, you can easily start a cluster of nodes on a single physical machine, eliminating many of the difficulties encountered in developing distributed systems.

This session is designed for developers tasked with building distributed systems. I will explore how using Docker to isolate processes in a clustered environment simplifies distributed system development and debugging processes.

Photo of John Hugg

John Hugg


John Hugg has spent his entire career working with databases and information management. In 2008, he was lured away from a Ph.D. program by Mike Stonebraker to work on what became VoltDB. As the first engineer on the product, John liaised with a team of academics at MIT, Yale, and Brown who were building H-Store, VoltDB’s research prototype. Then he helped build the world-class engineering team at VoltDB to continue development of the open source and commercial products.