Maksym Yemelyanov - stock.adobe.
Modern business success depends on both the speed and efficiency of data-centric initiatives. Data offers a strategic advantage, and empowering developers with the right tools and data is essential to keep pace with business demands.
As a result, businesses are quickly recognizing the advantages of containers over virtual machines for modernizing ITOps and DevOps practices. In a recent research survey of IT storage administrators, Enterprise Storage Group (ESG) found that 41% were using containers for production applications and another 33% were using containers for test/dev activities.
People often compare containers to VMs, although containers are smaller and require less overhead. It's tempting to think the two application environments require the same infrastructure, especially the same storage infrastructure. In reality, containers are quite different from VMs. Understanding how those differences affect IT infrastructure design is imperative if the goal is to maximize the value of the container-based application environment.
Key differences between containers vs. VMs
Unlike VMs, containers are ephemeral. They start up and shut down automatically. But like VMs, containers need access to persistent storage to achieve their full potential in production environments. Without persistent storage, data "dies" when a container shuts down. An enterprise-level storage infrastructure for container-based applications must, at a minimum, offer capable persistent storage. But that's just the beginning. To flourish, a container environment requires a storage ecosystem that supports the lightweight, mobile and ephemeral nature of containers.
Advantages of containers over virtual machines
Designing a storage ecosystem that emphasizes the advantages of containers vs. VMs starts with identifying the key aspects of containers that are different from VMs:
- A container's lighter weight means greater mobility. Containers are designed for mobility, unlike VMs that can be moved but are designed to be predominately stationary. Containers are, therefore, more likely to use public cloud services for deployment and move across hybrid cloud and multi-cloud environments.
In an ESG research study of container-based application environments, 70% of participants said they preferred a combination of the public cloud and a private data center for container-based apps. In a separate survey of storage administrators who support container environments, more than a third said managing container storage across a hybrid or multi-cloud environment was one of their biggest persistent storage-related challenges. For VMs, movement to and from the cloud is a possibility. For container-based environments, that kind of portability is the expectation.
- A container's ephemeral nature demands higher performance. Another advantage of containers over virtual machines is their ephemeral nature. There's an immediacy to containers. They must spin up quickly and retire just as fast. Short-lived, accelerated application environments can't be slowed by traditional IT processes.
For example, there's no time to submit a trouble ticket to have the storage administrator manually provision a volume. Containers must automatically provision resources and, in most cases, a lot of resources: Refactoring many of today's applications could result in hundreds, if not thousands, of microservices running simultaneously. The supporting storage environment must be able to handle high volumes of requests for new storage resources quickly and consistently.
This requirement not only heightens the demand for good storage performance with containers, but it also means the storage infrastructure must be better at delivering data services, such as provisioning new volumes. In an ESG study, more than a third of storage administrators supporting container environments identified storage performance as one of their biggest persistent storage-related challenges, and almost a third identified the speed of provisioning storage as a top challenge.
Storage capabilities you'll need
Given those characteristics, it's important to focus on several storage infrastructure capabilities to get the most out of container-based applications. When architecting an enterprise storage infrastructure to support containers, look for the following four characteristics:
- The ability to deliver a consistent, standardized and abstracted storage environment. While most implementations of Kubernetes offer commonalities, the remaining variations can add complexity. Developers need a standardized abstraction layer between the various iterations of Kubernetes (or other container orchestration frameworks) so that those iterations can easily and seamlessly talk to each other. One way to deliver this necessary standardization is the Container Storage Interface (CSI) open source project, which offers a standardized mechanism for storage across different container orchestration systems, including Kubernetes, Mesos and Docker. When considering storage options, look for ones that offer a CSI driver for container environments.
- Consistent management, monitoring and control across hybrid cloud environments. Standardizing can ease the burden on the development community, but administrators need to establish consistent storage features and management across the entire hybrid or multi-cloud container-based application environment. Options that don't span hybrid cloud boundaries either limit the mobility advantages of containers or introduce unnecessary management complexity. Prioritize storage technologies that provide a single storage endpoint with a consistent set of tools and a consistent user experience for both on- and off-premises workloads.
- Next-generation performance. At a minimum, any storage environment supporting container-based applications should use flash. NVMe-based storage architectures and those designed to support storage-class memory can also boost overall storage performance. However, performance requirements go beyond the ability to serve high levels of read and write requests at low latencies. The storage environment must be prepared to handle the potential for thousands of microservices to spin up simultaneously.
When evaluating storage technology for containers, consider all aspects of storage performance: latency, bandwidth, the ability to provide and perform data services, and scalability. The storage technology must deliver data fast, and it must also be able to stand up and deliver data services fast. IT must be able to quickly and efficiently attach persistent storage to those microservices, and the storage must be able to scale its performance as demands increase.
- Scale and hardware flexibility. The time and effort required to manually provision storage isn't practical for containers. Application development teams need a scalable, expedited approach, especially when moving new applications or microservices into production. The environment should be able to scale storage resources easily, with little to no administrator intervention. The goal is to ensure developers don't have to wait hours, days or weeks to have requests fulfilled and to accelerate development.
The container storage environment should work across multiple hardware types and generations. Integrating new technology, scaling performance or adding capacity shouldn't require a rip and replace of the hardware. These environments must be able to scale up and down with as much flexibility as possible.
When considering the advantages of containers over virtual machines, it's important to be creative. Architecting a storage infrastructure environment to enable your application developers, IT organization and business to maximize the potential of container-based applications will require a different approach. Focus on storage flexibility, consistency and performance to achieve the best results.