Stateful Enterprise Applications with Docker


Today Docker announced its acquisition of the file syncing project Infinit. This move underscores one of the most important issues around adopting containers in production: managing state. Just like the acquisition of Socketplane led to improvements in networking plug-ins, we see this as a great step for stateful containers that will help the entire Docker ecosystem.

True to Docker’s philosophy of “batteries included but removable,” this move makes the transition from development to production smoother for stateful applications by leveraging the same integration interface. Until now, most production deployments have involved stateless containers, and having default, out-of-the box support will enable customers to deploy stateful containers in production.

There are three types of stateful architectures emerging for distributed applications, and while they all leverage the Docker volume plug-in, they are quite different:




Connector-based systems: These are solutions like Flocker and Rexray for legacy storage architectures. They take physical OS volumes and map them 1:1 into a container.

Key-value based systems: These are filesystems like Torus, Facebook Haystack, or Infinit and are built on top of key value systems. This type of storage solution is good for file streaming and non-critical workloads bound by web access latencies, but is not suitable for transactional, low-latency, or data-consistency-dependant applications. Enterprise storage is an incredibly hard problem to solve, and this type of system cannot be used to implement scheduler-converged data placement, container-granular snapshots, tiering, low-latency access, and so on.

Container data services: These are cloud-native and container-granular data service solutions built on top of a enterprise-grade distributed block storage systems like Portworx. We have built our solution from the ground up for workloads like databases, queues, and filer applications — with cloud native architectures in mind. Our container storage solution is built with the founding principles of ease of use, devops-led programmability, and integration with any container scheduler. Its development team comes with serious storage chops. And data correctness, availability, integrity, and performance are at its core. It is storage for all container workloads and schedulers — supporting devops workflows to highly available replicated volumes across a large production cluster and across any cloud. We don’t automate and manage OS volumes or put data in a key value system. We store data just like a purpose-built distributed block storage system would.

These are three extremely different architectures and approaches to the same problem. Ultimately, your choice of the storage technology matters a lot and depends on your applications and usage — and if you are in production or development.

As you can see from Docker’s announcements in this area, all of us in the ecosystem are committed to empowering IT to address stateful containers. See how our customers are using Portworx in production today by trying out our developer edition.



Goutham Rao
Co-Founder and CTO