Traditional storage solutions were designed to present storage to hypervisors or operating system instances, and were not built to work with cloud native architectures and patterns. But times have changed. We previously defined eight principles for cloud native storage. These storage principles are needed based on the convergence of several technology strategies that are driving how applications are developed and deployed, and the requirement that today’s storage needs to support cloud native applications and particularly stateful apps. Market needs call for a fundamental shift in storage design and delivery is needed.
Today we outline the eight principles of cloud native storage and how StorageOS stacks up against these.
StorageOS and the 8 Principles of Cloud Native Storage
1. Application Centric – storage should be presented to and consumed by applications and not by operating systems or hypervisors.
StorageOS is application-centric ensuring storage is presented to and consumed by applications as they move between platforms and cloud. Storage resources are declared and composed just like all other resources required by applications and services, allowing storage resources and services to be deployed and provisioned as part of application instantiation through orchestrators.
2. Platform Agnostic – storage should run anywhere and not have proprietary dependencies that lock an application to a particular platform or a cloud provider.
StorageOS runs anywhere without proprietary dependencies that lock an application to a particular platform or cloud provider. It can be implemented in any part of the enterprise IT lifecycle, whether on-prem, public cloud 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.
StorageOS scales out in a distributed topology and scales up based on application requirements.
3. Declarative and Composable – storage resources should be declared and composed just like all other resources required by applications and services.
Provisioning storage directly to the application (rather than the operating system) allows storage to be declared and composed as part of application instantiation through orchestrators such as Kubernetes. This enables developers to deploy and provision storage resources and services alongside CPU, networking and other application resources.
Containers mount virtual volumes from the storage pool managed by StorageOS. StorageOS transparently redirects reads and writes to the appropriate volume, so the container is unaware of whether it is accessing local storage or remote storage, even on nodes with no local storage.
4. API Driven and Self-Managed – storage resources and services should be easy to provision, consume, move and manage via an API.
Storage needs to tightly integrate with containers and orchestration platforms using APIs to minimize operator overhead. StorageOS includes all the necessary API endpoints for integration into Docker and Kubernetes. It runs in user space alongside other applications and does not have any proprietary kernel dependencies.
StorageOS volumes can be used as a storage provider to a Docker, Docker Swarm or Kubernetes cluster. Orchestrators, such as Kubernetes, have native plugin integration that use the API to allow applications to create StorageOS volumes specifying size and storage features required. These storage resources can be consumed, moved and self-managed with the API and plugins.
5. Agile – storage should dynamically react to changes in the environment.
StorageOS thin provisions requested storage and presents the virtual volume through a cluster wide global volume namespace. The cluster wide volume namespace allows containers to be restarted on different nodes while continuing to access storage volumes consistently and transparently.
Volumes are dynamically provisioned instantly, with no delay and mountable on any node immediately, without having to detach and reattach physical volumes.
6. Natively Secure – storage should integrate and provide inline security features.
StorageOS does not depend on secondary products to secure application data. It secures data with inline encryption for data in transit or at rest. By providing encryption, StorageOS delivers a secure environment for public cloud infrastructure for the enterprise removing yet another barrier for cloud adoption.
StorageOS also supports namespaces and ABAC policies which are integrated with Kubernetes to secure access to volumes.
7. Performant – storage offers deterministic performance in complex distributed environments and scales efficiently.
Designed for stateful applications, StorageOS delivers deterministic performance for complex distributed environments and is efficiently scalable using minimal compute resources.
8. Consistently Available – storage platform should manage data distribution with a predictable, proven data model to ensure high availability, durability and consistency of application data.
StorageOS ensures replication for high availability and rapid recovery. Volumes are accessible across the entire cluster providing high availability, durability and consistency of application data. Applications and databases can be quickly recovered with StorageOS in the event of platform failures.
StorageOS is Cloud Native Storage
The StorageOS software-only approach helps deliver on the promise of portable containerized applications by simplifying deployment and offering proven enterprise-grade storage. In an end-to-end approach, StorageOS makes container adoption as simple and seamless as possible.
StorageOS is particularly well suited for providing highly available, performant block storage to SQL databases, but also brings enterprise-grade features to NoSQL databases, CI/CD pipelines and other stateful apps, such as snapshots and policy-driven storage.
StorageOS is moving beyond connecting containers to existing storage and toward containerization of the storage platform itself, helping to usher in a new era of orchestrated microservices. Using StorageOS technology, organizations can save valuable time and effort as they begin to deploy containerized applications and streamline software-defined scale-out storage infrastructure.
For more information on StorageOS, get the platform architecture overview.
Author: Alex Chircop
Experienced CTO with a focus on infrastructure engineering, architecture and strategy definition. Expert in designing innovative solutions based on a broad and deep understanding of a wide range of technology areas. Previously Global Head of Storage Platform Engineering at Goldman Sachs and Head of Infrastructure Platform Engineering at Nomura International.