StorageOS Briefing Note
Docker and container technology is experiencing rapid adoption by DevOps teams. But its move into the production data center is hindered by the lack of stateful, durable, highly available storage solutions.
What are Containers?
DevOps is an organizational change that empowers teams to work closer together and deliver applications or application updates quicker. Containers are a component of the DevOps process used to pre-package the delivery of these applications and enables the rapid deployment and the horizontal scalability which allows organizations to quickly respond to a sudden increase in user demand. Companies like Google, NetFlix, Amazon and the New York Times use containers to improve security and automate the provisioning of systems or instances.
To date most Docker containers are stateless, meaning they are temporary use cases that don’t maintain data. Examples include Web Servers and Web Balancers. Of course these stateless instances need access to data so most organizations will build a traditional legacy database cluster as a backend. Essentially, that limits just how “agile” the organization can be.
Problems with Container Storage Architectures
The goal of most organizations, and Docker itself, is to evolve the environment so it is fully deployable in production. That goal will require stateful storage. Containers by their nature do not support the production requirements for a stateful storage architecture that can support databases, user data and logs.
While there are storage solutions coming to market most don’t typically have enterprise features like snapshots, replication and high availability that is expected for production workloads. There are also gateway products that will connect containers to legacy storage systems that have these features, these solutions don’t always have the API functionality to fully support DevOps, which requires a fully programmatically controlled solution. Additionally if the storage is network-based, it does not scale in the same fashion as the DevOps environment scales, which may make it more difficult to ensure resources are available in lock step with each other.
What is StorageOS Delivering?
StorageOS is a full enterprise storage array available through a software container on a pay-as-you-go basis. It delivers the solution as a set of containers running as a pre-packaged environment or in a native container environment. The software can run on a commodity x86 server, as a VM on a Hypervisor like VMware, Hyper-V, KVM or Xenserver, or in a cloud instance like Amazon, Google, Azure, or in a native Docker cluster.
IT can install a pair of StorageOS containers on each node, specifically designed to have an extremely small footprint. They then provide a virtualization layer that allows the organization to connect to physical or cloud based disk on the backend and a front end data presentation layer that provides data locality to the individual containers using the system. The connection can be native container environments like Docker or Kubernetes, but StorageOS also supports legacy protocols like iSCSI. They also provide a control plane that offers rules based management for services like snapshots, replication, encryption, deduplication, and data mobility.
There are a number of ways to use StorageOS. The obvious use case is as a storage solution for containers that need to be stateful. Another use is to enable secure cloud mobility, allowing for the movement of an application to and from the cloud as well as between clouds.
Containers technology in general and Docker in specific is at the top of many organizations’ project wish list. The challenge is to provide a storage environment that enables stateful containers so adoption can move beyond web servers and web balancers. There are storage solutions available, but they are all connections to the past. StorageOS represents a connection to the future and is something the organizations pursuing the agile IT path should consider.