When Docker containers were first introduced, they were mainly used for running stateless applications. Now, as containers are increasingly used to host production workloads, interest is growing in using containers to deploy stateful applications, which can persist data that is accessible beyond the lifetime of a container. This interest is being driven by several factors, including a desire for operational consistency across containerized and non-containerized workloads; the need to support long-running applications as they are rehosted in containers, and interest in implementing databases as a service using orchestrated containers as a foundation.
With the general availability of the Container Storage Interface (CSI) specification, users will have a broad and uniform choice of CSI-compatible storage products to implement storage for stateful containerized applications. With storage systems supporting CSI, persisting data for a single application instance in a container that runs on only one host is straightforward. However, running containers at scale requires automation, and to meet performance and reliability SLAs for containerized applications, orchestration platforms automatically schedule containers on different hosts based on business-driven policies. When containers are orchestrated in this manner, the relationship between containers and underlying storage resources must be carefully managed to coordinate their binding.
In traditional storage approaches, storage systems have relationships with the hosts rather than with the applications directly. By contrast, containers provide a clear line of abstraction between the environment that an application runs in and the underlying host OS. This separation of abstraction will require re-engineering of data services. A new generation of container native storage solutions are designed to manage data exclusively for containerized applications. Some of these integrate distributed storage management with container orchestration platforms so that container scheduling is optimized for data locality. This integration enables advanced data management to be performed at the granularity of containerized applications.
As the containerization of stateful applications becomes more common, users must consider a variety of possible approaches for providing storage persistence to containerized applications. This document and selection tool (Gartner subscription required) helps I&O technical professionals choose the best type of storage for deploying stateful applications in containers, based on different use cases and operational requirements. Containers can be used for hosting stateful workloads such as databases, but to fully exploit the agility benefits of cloud native infrastructure, I&O technical professionals will also have to embrace new application-centric data management processes.