Distributed Systems of Microservices Using Docker and Serfnode

We review container technology and the challenge of service discovery in micro service architectures and introduce Serf node, a fully decentralized open source solution to the service discovery problem, based on the Serf project. Serf node is a non-intrusive Docker image that composes one or more arbitrary Docker containers. The new images can be deployed into a cluster of Serf nodes, where it advertises itself and provides service discovery mechanisms, monitoring, and self-healing. The resulting cluster is a homogeneous and complete graph, with no master node. We survey existing solutions to the service discovery problem and compare them to Serf node. As an example of the extensibility of Serf node, we show the construction of a file system synchronization solution between Docker containers using Git.