Become the true meaning of "cloud native" in the storage world

"Cloud native" (Cloud Native) technology circles the term is widely used in 2019, but there is no clear definition of a particular word. The main confusion is that "cloud native" and deploy your application to the environment almost does not matter, the term applies equally to private and public clouds. This term refers more features and applications of the architecture.

In  Cloud Native Computing Foundation  we can find some information on the latest definition of the term in (CNCF native cloud computing Foundation):

Native cloud technology enables organizations to build and run an application in modern extensible, dynamic environment (e.g. public cloud, private and hybrid cloud) in. Containers, service grid, micro-services, API are examples of infrastructure and constant declarations of this approach.
These technologies enable a loosely coupled system having elasticity, manageability and monitoring. Combined with powerful automation features that enable engineers and predictably make significant changes frequently with minimal effort.

So, what is cloud storage native does it mean? In short, it must be run in the cloud native ecosystems all other things the same dynamic, API-driven approach. There are two related indicators can determine whether a native cloud storage system, they are:

  • Whether to build specifically for Kubernetes
  • Amazon S3 API compatibility

Here we will interpret these indicators in detail.

Cloud storage is the primary object store

Modern application architecture based on object storage, by default, S3 is a cloud API language. Because the object store is the only cloud is designed to handle the amount of data generated by native applications stored and provided firms can afford the price and user desired speed run - it dominates the modern store. Compared with the block storage file system objects stored in other properties include excellent distribution properties, greater flexibility and higher availability.

This is a native cloud applications desired properties.

Amazon S3 API is the de facto standard for object storage, each object storage software vendors claim to be compatible with S3 API. AWS S3 is actually a binary compatible. For all scenarios, either entirely applicable.

In other words, S3 API basically meet the vast majority of scenarios, including extreme cases you might not think of. This is an area of ​​open source software has a significant advantage. Given the size and diversity of applications, operating systems and hardware architectures, can show that they have seen the most extreme case, but also well positioned to meet these scenes.

This is important for applications creator, because you need to test your applications against those suppliers. Open source allows you to easily evaluate and test vendor program, if the test passed, is likely to be cloud-native. If not, then not.

Designed specifically for Kubernetes

"Cloud native," the second criterion is to use a distributed architecture using an external container orchestration platform. This means that the architecture must be friendly Kubernetes. In terms of layout containers, Kubernetes industry is already obvious winner, so as to build and Kubernetes work is crucial to the cloud storage solutions considered as native.

Storage of Kubernetes friendship mean? We think there are six main criteria.

1. Let Kubernetes choreography storage node

Kubernetes is a powerful organizer, can be computed and stored for processing arrangement. Like  MinIO  this truly native cloud storage solutions and Kubernetes integrated, allowing the operator to use the interface Kubernetes storage management, and can be processed from Kubernetes provided to store all transaction volume placed.

2. Multi-Tenant

Multi-tenancy allows multiple customers to use a single instance of an application, if implemented correctly, can reduce operating costs, lower costs and reduce complexity, particularly in terms of scale. But it also requires strict resource isolation so that multiple users can access computing resources or storage resources without affecting other users. True native cloud storage solution will provide sufficient resources isolated, multi-tenant architecture to ensure security, high availability and performance.

In the world of object storage means Kubernetes infrastructure need to isolate and manage storage tenants. If Kubernetes no management infrastructure, so it is not a true native cloud platform. This enables those equipment suppliers with a CSI or Operator integration capabilities disqualified.

3. Lightweight

Unless the storage system is very lightweight and can be packaged with the application stack, or multi-tenant is impossible. If the storage system takes up too many resources or too many API, you can not pack a lot of tenants on the same infrastructure.

4. Scalable

Scalability is one of the key attributes of cloud native system. Kubernetes One of the advantages is that it has been verified on all sizes. Kubernetes also be used to manage storage expansion, but only if the underlying storage system integration and Kubernetes, supply and storage and transfer of functions to cancel Kubernetes.

5. API driver

Typically, one of the core principles Kubernetes and cloud native system is to be managed as much as possible through automation. To make cloud storage system truly native, it must integrate Kubernetes via the API, and allow dynamic, driven by the API schedule.

6. User space

The final consideration is perhaps the most difficult. In order to become a cloud object storage solution native, it must be fully running in user space and kernel no dependencies. This is not the most object storage systems (especially hardware) to build the way. However, if you want to be containerized storage and deploy it on any Kubernetes cluster, you must abide by these restrictions. By definition, this means the kernel patching or dedicated hardware solutions will not cloud native.

in conclusion

Although very simple in a way, but it requires two standard "cloud native" state is actually very difficult in practice. Public cloud object storage vendor does a good job against them. In fact, if Google is Kubernetes source, and Amazon S3 is the source, you can really expect them to do so. Private cloud object storage vendors are much more difficult to pass these tests. Although some people claim to be compatible with the S3, but on closer inspection they found not the case. For most traditional vendors, Kubernetes simply not within the scope of their genes, and often unplanned list. Because there difficult.

The MinIO is designed for cloud workloads and native building, designed to take the Kubernetes, and follow Kubernetes way. MinIO compatible with the S3, but can also be used in conjunction with Google, Azure or private cloud, hybrid cloud so cloudy and possible.

Cloud performance native object is to obtain a cloud storage native application required performance, reliability, scalability, and the only way.

Published 165 original articles · won praise 45 · views 40000 +

Guess you like

Origin blog.csdn.net/u010199413/article/details/104339048