What are the challenges around containers?
CH: Container technology solves many critical challenges for enterprises. These include bridging the DevOps divide and helping organizations bring quality applications to production more rapidly than before. The biggest challenge, however, is that as container technology approaches mainstream adoption, administrators expect it to provide many of the enterprise features that are available in virtualized environments – not least persistent storage.
While containers can do a great job of encapsulating application logic, they do not offer a viable solution for storing application data across the lifecycle of the container. Ephemeral (or local) storage is not enough, and the growing number of stateful applications under development requires container data to be available beyond the life of the container that houses them.
What are the key principles to cloud native storage?
CH: Cloud native storage should be application centric, application platform agnostic, API driven and self managed. It should also be natively secure, agile and consistently available.
In addition, here at StorageOS, we believe cloud native storage resources should be declared and composed just like all other resources required by applications and services. This allows storage resources and services to be deployed and provisioned as part of application instantiation through orchestrators. Finally, a native storage platform should offer deterministic performance in complex distributed environments and scale efficiently using a minimum of compute resources.
How does StorageOS’ platform work with Kubernetes?
CH: When Kubernetes 1.7 was released earlier this year, it included native support for StorageOS volumes. This allows users to declare storage resources as part of composable Kubernetes application deployments. StorageOS within Kubernetes also supports dynamic provisioning using storage classes and persistent volumes and volume claims.
StorageOS can use volume labels from Kubernetes to define and enforce data placement and data services. Some use cases include data placement in specific cloud geographies and the use of specific encryption keys or replication policies based on a simple label definition.
How do stateful applications work and why is it challenging to use them in containerized environments?
CH: A stateful application saves client activity data from one session to use in the next. That data is called the application’s “state,” which mostly consists of login information, user preferences and user security protocols but it also extends to critical database metadata.
Issues occur for stateful applications running in certain containerized environments, as these states must be brought into the container when the application starts up and must still persist somewhere when containers stop and start. Some container technology is not designed to store this persistent data and if IT teams try to use it to do so, it can cause performance or usability issues and can even break a container’s portability on hardware.
What are the main benefits that StorageOS can bring to users?
CH: StorageOS is a software solution that delivers application-centric and platform agnostic storage for containers and clouds. It transforms commodity server or cloud-based storage into enterprise-class storage to run persistent workloads in containers.
StorageOS delivers deterministic performance for stateful applications with end-to-end security and infrastructure independence.
Deployed as a single container, StorageOS gives developers the ability to self-provision and auto-scale storage with their applications while maintaining the compliance and operational control required by enterprises. StorageOS also reduces deployment costs, improves time to market and increases agility. This enables enterprises to take cloud environments into production and scale to meet their business needs.
StorageOS is particularly well suited to providing highly available, performant block storage to SQL databases. It also brings enterprise-grade features to NoSQL databases, CI/CD pipelines and other stateful apps, such as snapshots and policy-driven storage.
As StorageOS is agnostic to the underlying storage provider, it can be implemented in any part of the enterprise IT lifecycle, whether on-prem, with public cloud providers or in a hybrid environment. It enables enterprises to move data between data centers or cloud providers, and removes proprietary lock-in to vendor-specific hardware.
How beneficial are stateful containerized applications for developers and DevOps teams?
CH: Without stateful containerized applications, it is tricky to guarantee high performance and deterministic performance for applications. Administrators may have to accept the reduced performance of remote storage (NAS) or the vendor lock-in of managed services, or else they have to manually manage storage by scheduling containers to dedicated hosts, which reduces portability and increases the monitoring burden.
By running stateful containerized applications, an orchestrator (such as Kubernetes) can manage storage resources, scheduling and failover consistently and in a completely automated fashion. This enables developers and DevOps to manage the entire application lifecycle, including scaling up or out, within a single framework.
How important is storage when it comes to modernizing traditional applications?
CH: Modernized traditional apps need modern storage. Existing storage options simply cannot keep up. Enterprises want flexibility and performance. That’s why they are moving to containers and cloud.
But in doing so, they also need to ensure it’s not risky and they are still utilizing existing resources – after all, they’ve already spent the money. So as enterprises move traditional apps to modernized systems, with flexibility, agility and performance – a shift is needed in storage design and delivery. It needs to be cloud native. CNCF defines cloud native as horizontally scalable, built to handle failures (so no single point of failure), resilient and survivable. In other words, it should be self healing, with minimal operator overhead – everything should be API-driven, automatable and decoupled from the underlying platform and hardware. Cloud native storage is needed as for anyone wanting to modernize their traditional apps.