Introduction to Any kind of cloud native technology, it is no longer a compensation for a certain ability, but more of the ability of the cloud to be used in my application in a simpler and more efficient way. Whether it is containers, K8s or Service Mesh, they are all in different links to help the application itself to better use cloud services.
Author|Zhang Lei
What is cloud native?
Even though "cloud native" has been proposed for some time, many people still have this question: what is cloud native? Or what is the exact definition of cloud native?
In fact, when we come into contact with many cloud-native open source technologies and products, we will gradually discover a phenomenon-cloud-native is not actually a very exact object in nature. In other words, there is actually no specific definition of cloud native, it refers to an evolving process. Instead of talking about the nature of cloud native, we should understand it as a set of visions.
So what is the content of this vision?
In the future cloud era, our software or applications are naturally born on the cloud, and longer than the cloud. The reason why such a phenomenon or such a fact occurs is precisely because cloud computing can help these software reduce costs and improve efficiency to the greatest extent, and release the greatest business value of the software itself. This is what Cloud Native really wants to do, so it is not a specific technology, nor a method, nor a specific scientific research project.
The evolving cloud native
The figure below can intuitively clarify how the overall form of cloud native evolves and develops.
Cloud native emphasizes the use of the characteristics of the cloud, so its core methodology and core concepts are all around how to make our software and applications use the characteristics of the cloud. So what are the characteristics of the cloud? For example, the cloud is infinitely flexible, the resources of the cloud can be delivered quickly, and the usage of the cloud can be paid by volume. These are the very essential characteristics of the cloud.
Around these cloud characteristics, cloud native has a set of the most basic methodology and concepts. For example, you may have heard of immutable infrastructure. When my application is deployed on the cloud, assuming that the application carrier is immutable, I can delete or replace it at any time. It will be very easy to update my application. . If you want to upgrade the application, you can directly delete the old one and launch the new one, instead of dynamically changing a certain configuration in the application, or even dynamically changing the code to achieve it. Therefore, immutable infrastructure is a very typical methodology based on the rapid resource delivery capabilities of the cloud.
For another example, cloud native emphasizes the need for a high degree of automation, self-operation and maintenance and even self-healing. In fact, it is hoped that the software itself can make better use of the characteristics of the cloud. Because the cloud's capabilities are very powerful, and the cloud can provide a variety of operation and maintenance capabilities, it may be necessary to consider that the cloud can actually provide many capabilities to the application layer when developing applications or software, rather than developing first After the application is finished, think about how to use cloud capabilities to operate and maintain. This way, cloud-native applications cannot be built.
For another example, it doesn't matter what language or framework is used to write cloud native applications. This is also a very obvious feature. Because the cloud itself is an infrastructure capability, it should not and will not be locked in a certain language or framework. It is also hoped that all software in this world can use the capabilities of the cloud, not that the cloud can only serve a certain language.
The above are some very important concepts proposed by cloud native in the context of cloud. And these concepts themselves will be mapped into a series of systems or architectural ideas in our technical research. For example, the immutable infrastructure mentioned earlier, you can delete an old instance of an application and replace it with a new one. How to implement a set of methods like this? It depends on container technology. Container technology essentially provides container images. A container image is a self-contained application operating environment, including the application itself. This image version can be replaced at any time, and a new version can be launched online. This actually means that the container is a very good implementation of immutable infrastructure.
So does this mean that there will be a certain technology in the future that can better implement immutable infrastructure? This is very possible, and of course the technology is also cloud-native. When there may be a new technology to implement immutable infrastructure in the future, or better implement immutable infrastructure, then such a technology must also belong to the core category of cloud native. Similarly, the Sidecar architecture that our cloud native emphasizes today is to connect the middleware capabilities to the business container through a method called Sidecar container, instead of customizing the business itself and integrating middleware to solve the problem. problem. This is actually hoping to implement the framework proposed by the methodology that we emphasized that is independent of language and framework. The feature of this architecture is that middleware capabilities no longer need to be embedded in the business code itself in a language or framework, so Sidecar and containers can implement such a set of methods.
This is a series of technologies and architectures that are constantly deduced behind the cloud native methodology, and these technical architectures are ultimately in the cloud native ecosystem and are often used by open source technology projects. For example, the aforementioned container will have projects on Docker. The idea of Sidecar and self-operation and maintenance we mentioned will eventually be implemented by Kubernetes for you.
Another example is the recently popular Service Mesh, which essentially helps you with the ability to do middleware, but it does it in a language-independent way like Sidecar; another example is that we will be more popular in the future or now. For eBPF and WASM, they are actually practicing a certain idea and a certain architecture behind the cloud-native system, and use an open source method to satisfy the user's use of the scene. And it is precisely because of this series of open source projects that we can say that when my users get such open source projects and get such technology, they can truly practice the cloud native concept, so as to achieve what we mentioned earlier The essential effects of these two clouds:
The first is to improve efficiency, such as research and development efficiency, delivery efficiency, and operational efficiency. For example, my application itself implements such a concept of immutable infrastructure through containers, so its delivery can be very simple. I only need to make a mirror, and after the mirror is delivered, it can run in every place; for example, we When your software itself has achieved self-operation and maintenance, the difficulty and cost of its operation and maintenance must be reduced, so we must be able to use cloud capabilities to improve efficiency.
The second is to reduce costs. This includes resource costs as well as labor costs. For example, through Kubernetes or through projects such as containers, my application can better integrate cloud services and reduce operation and maintenance costs and labor input through cloud services. These are very obvious cost reductions. For another example, my application has realized the cloud native through cloud native, and through the cloud native architecture, the resource delivery and update mode can be carried out very quickly, so that the resource cost of the entire application is also very low. This is also through cloud native It is a very good embodiment and practice of technology that enables applications to make better use of the essential capabilities of the cloud.
In general, you will find that this set of cloud-native methods is actually a very complete closed loop. First, continue to see and explore how to use the characteristics of the cloud to help users improve efficiency and reduce costs, and then combine this series The method or this series of thoughts are summarized and precipitated into cloud-native concepts and methodology, and then realized through a series of corresponding architectures and corresponding open source projects, and finally let users use these technologies, so as to achieve the release of cloud computing The essential purpose of dividends.
So there is no specific definition of cloud native. It is actually a combination of a set of self-evolving theoretical systems plus best practices.
Cloud native today
Today's cloud native may be built around containers and Kubernetes, and such projects are actually helping us to practice many of the essential ideas behind cloud native, including immutable infrastructure and automation. Today Kubernetes is considered to be a general control plane in the cloud era, and some people call it an operating system, which means that all your operations can be done uniformly on the cloud with the help of Kubernetes.
" of the Kubernetes project 161039569e012f
The role of the Kubernetes project may become more and more like an Android. To give an example, for example, today's Kubernetes is actually becoming ubiquitous. There is Kubernetes in every cloud layer in every place. It is very normal even for end users or deployment in an edge environment, just like Android. , There are also in the car, we also have it in the TV, and even the air conditioner may have an Android.
So more importantly, what is the essential purpose of users using Kubernetes? It is the software that delivers and manages it. For example, if I use Kubernetes, I must deploy something on it, such as AI services or Taobao. The essential purpose of the user is to use this set of things to manage the software. In fact, Kubernetes itself exposes a series of formatted abstractions, such as Deployment, Service, and Ingress, which allow me to manage and deliver my applications. On the other hand, it launches a set of standardized interfaces, such as through CNI can connect to the Alibaba Cloud network and connect to self-developed network plug-ins, so it is essentially an intermediate layer, that is, a control plane, which is connected to a large amount of infrastructure, and the things they expose become some of my application needs. Ability, so that I can use these abilities to manage applications.
Then, if you continue to study such a trend in the future, you will find that this is particularly similar to Android. For example, Android does not actually pay for the mobile phone itself, but for the applications in the application market, you have to pay. The value of Android is that it abstracts, packages, and encapsulates the user's mobile phone into a series of APIs that can be used by applications, so the value of Android is exactly the same as today's Kubernetes.
In the future, we will see that Kubernetes will not only appear in various different places, but more importantly, it will provide a series of complete capabilities for the entire life cycle of application software development, operation and maintenance, and delivery, so that users can use it. it. At the same time, in order to be able to deliver the software better, we will find that there will be many such projects in the future to help you solve the problem of software delivery on K8s. At the same time, our previous traditional PaaS will no longer exist, because all its capabilities have been taken over by Kubernetes, and there will be more open and scalable PaaS in the future. Their role is to allow you to change It's better to deliver and manage software more simply, just like the pea pod on Android, you can easily manage software. For such a trend, I call it the "Androidization" of Kubernetes.
2. "Operatorization" of applications and capabilities
Another trend is that in today's cloud-native ecosystem, whether it is my application or my ability, it will evolve in a very automated direction. I call it "Operatorization".
Operator is a core idea in Kubernetes. It represents that any of my applications and the capabilities it needs can be defined as a Kubernetes API object. A mechanism called Controller allows you to use cloud capabilities and then let you Access to various infrastructures. A direct result of this Operatorization is that my application itself is highly automated, including self-healing, robustness, reliability, and operational certainty, which can all be solved by Kubernetes today. My users, or the owner of my application, don’t need to care about these issues anymore.
So this is another trend we see today in the context of K8s Android, that is, the capabilities required by my application itself and business will continue to evolve toward automation. This is also very consistent with the concept of cloud native, because the stronger your application automation and self-healing ability, the more you can connect with the cloud, the cost of manual recording will be lower, the time will be less, and more It is to connect my automation capabilities with the cloud, and let the cloud help me solve all problems.
3. Application middleware capabilities further "sink"
There is also a trend that the middleware capabilities required by our applications are sinking. That is, the previous centralized middleware has actually evolved into a microservice architecture in the past few years.
The microservice architecture essentially disassembles the previous set of centralized middleware and puts it in the business code, and you need to introduce it to use. Generally speaking, a heavier client or a library will be provided for you to use. This is a typical way of using middleware in our microservice era. But today, in the current situation where our cloud native is becoming more and more popular, is there a mechanism like Sidecar?
Today's middleware is actually used in a large number of ways through Sidecar, so my application itself does not need to introduce a library or introduce a specific framework to do a lot of things, and I don't even need to perceive it. For example, I am going to do traffic segmentation today. I don't need to introduce such a library into the application to do it, but leave it to my infrastructure and the cloud to do it.
Then the interaction between the application and the cloud is through a bypass container called Sidecar, which allows the container to proxy the incoming and outgoing traffic required by the application itself, so the cloud can easily adjust the traffic and split the traffic through such a proxy. , This is the principle of a very simple Service Mesh.
Today, middleware capabilities continue to sink in such a way, it will bring a very obvious trend, that is, middleware is no longer related to business, no longer related to the programming language of the program, and there is no need to have anything to do with the framework. rely. Its implementation will be very closely integrated with the K8s containerization system. In addition, I will rely more on Sidecar, so the corresponding management capabilities of Sidecar are gradually increasing. We can summarize it as capabilities of 161039569e02f7 application middleware.
An endless stream of cloud-native services
In addition, with the continuous development of the entire cloud-native system, we will see that cloud services are moving closer to the cloud-native ecosystem in large numbers and frequently, and even bring some revolutionary impacts.
For example, today Alibaba Cloud’s cloud-native database is actually based on the core ideas mentioned by cloud-native, such as unlimited flexibility and high scalability, and proposes a new database architecture that makes the database itself very easy to use. Expansion can cope with extremely high, extremely demanding traffic and massive data processing requirements, and meet the demands of today's modern Internet application database usage.
Another example is the Alibaba Cloud infrastructure, which can bring us the ultimate resource efficiency, reduce the performance loss of many layers of virtualization, make the container itself flexible, easy to operate, maintain, deploy and manage, and pass security Containers, through stronger security boundaries, ensure the isolation between containers, so that the isolation is sufficient. It can bring the ultimate physical level of network storage and computing performance to the container, which is very important, and it is also a very typical example of our application using cloud computing services through the concept of cloud native.
Another example is Amazon Cloud Technology, which makes it easier or more direct for our chips to adapt to the use of containerized applications. Because a container may only have a very independent or very modular process running, then I can use the core of the chip to adapt to such a business, and make my infrastructure capabilities more powerful. To the extreme, while ensuring that the interference between cores like this is very small, it is more suitable for the use of containerized microservice applications.
For example, Amazon Cloud Technology recently launched a cloud-native application deployment engine. It can deploy any cloud service or container service in our completely consistent way. This can help us use the cloud's capabilities to improve applications. A very typical product that manages the delivery of operation and maintenance efficiency.
So whether we look at these products or look at the so-called open source projects, when we want to think about the question whether my cloud product is the so-called cloud-native or is it a cloud-native technology, it is actually very simple. Just judge whether it can help my application maximize the use of cloud computing to reduce costs and improve efficiency, and whether it can release the maximum business value in this way. This is to judge a technology or whether a product is to use it. It is positioned as a very core standard for cloud native, not to see whether the product is a container or not.
Alibaba Cloud Native
Going back to our example of Alibaba itself, we can see the fact that today Alibaba's infrastructure has completed what we call cloud native based on a whole set of technologies like Kubernetes containers. But when we look back at such a thing, we will find that cloud native itself has brought some very important changes to Alibaba itself.
The first one is that we have achieved a good separation of concerns through the cloud-native thinking mentioned above for business research and development, and research and development are more focused on business. Through the cloud-native standard delivery method, we also proposed a standard delivery specification like cloud-native standard, to standardize and modularly carry out sustainable delivery, taking into account user experience and flexibility, thus greatly improving the research and development efficiency of the business. Let them focus completely on their own business and no longer need to touch complex infrastructure. This is the greatest value that cloud native brings to business research and development.
For another example, for a large number of business operations and SREs, the concept of agile operations and efficient operations provided by the cloud native system, as well as its technical implementation, includes the aforementioned lightweight container immutable, Infrastructure, highly automated applications and operation and maintenance methods can all make our software operation and maintenance today extremely simple and extremely efficient. Especially compared to the previous traditional methods, a container-based automation-based method can be extremely Gaodi improves the automation of our operation and maintenance, greatly reduces manual intervention, improves the concurrency of our operations, and truly realizes the so-called leaving the complexity to the system and leaving the simplicity to the users. This is our cloud-native system today.
So not to mention that after today’s containerization, for applications such as Taobao, horizontal expansion and upgrades are very fast and very efficient. Instead of upgrading Taobao, your mobile application will hang. In the cloud-native era This will never happen again.
Another example is that for infrastructure, the strength of the Shenlong bare metal used by Alibaba today, coupled with our secure container, can help us greatly improve the resource efficiency of today's data center. We call it improving resource efficiency. In particular, it can support us to deploy secure containers at a very high density, use scale effects, and reduce resource fragmentation. According to the different forms of your workload, you can safely fill in the fragments of resources. Because of the Shenlong Metal, we can ensure that we can still have extremely high business operation efficiency without any interference with each other. These are all a very important set of changes that this infrastructure can bring to us in today’s cloud-native environment. Even for an organization like Alibaba, with the introduction and development of cloud-native technologies, It has also brought a very good change, making Alibaba's technology stack standardized and open, able to seamlessly integrate with the ecology, and also able to reduce R&D costs, so that the reliability and R&D efficiency of the entire system have a good improvement.
On the other hand, with the standardization of its own infrastructure, Alibaba's technology is rapidly entering the open source community. Today Alibaba is the company with the most open source projects in CNCF, far ahead of any manufacturer and some other organizations. A key reason here is that today Alibaba’s technology is seamlessly connected to the ecology, so we can actively participate in such a broader open source ecology, export Alibaba’s open source technology, and even say that this leads and influences. After the development of the entire industry ecology, this is a real change we have seen after Alibaba's cloud nativeization.
Summarize
**
If we look back at the cloud native concept we talked about today, we can find that it is actually a process of continuous evolution from architecture to technology to product. In terms of architecture, cloud native believes that software is naturally born on the cloud, longer than the cloud, and can maximize the use of cloud capabilities; on the other hand, different from the traditional model, cloud native can allow developers to enjoy dividends and be able to lead Its software and applications themselves are constantly being modernized.
And around this architecture and philosophy, we have a series of technologies, including open source and self-research, but the logic and ideas behind it are highly consistent. Surrounding the scenarios of infrastructure, application architecture, development, operation and maintenance delivery, cloud-native technology makes the system more reliable, flexible, and fault-tolerant, and the loose coupling between components is easy to manage, and the observability is better. , So as to fully reveal the capabilities of the cloud. Cloud native can release the greatest potential of the cloud. In fact, it is often inseparable from the concept and technical support of the essence of cloud native. These concepts and architectures, such as containers, immutable infrastructure, etc., are actually It is an efficient way for us to land in cloud native.
And around these means, we have such a variety of products supported by cloud-native concepts, including cloud-native databases, cloud-native service products, middleware, functional computing, containers, and a series of open standards, which can To be flexible, to be able to use the value of the cloud, to use a series of products such as application development, operation and maintenance and application delivery personnel that provide better services through the cloud itself, then they can all be clearly different from the traditional The form of cloud computing service provision.
Therefore, we will see that the cloud in the future will evolve more to service-based, SaaS-based, and service-based methods, and less focus on the infrastructure layer, because our real user focus is actually in it The question of whether the application can maximize the business value.
The entire evolution trend in the future is actually accompanied by a very important point, that is, the ability of the cloud is constantly changing and enriching, which is very important. In the past, our entire software architecture itself would require a lot, such as traditional middleware, even some microservice frameworks or PaaS, to help us better manage software. The very important reason behind it is Cloud or infrastructure capabilities are not strong enough. For example, I want a blue-green release capability today, and many clouds will not have this capability for a long time, so some kind of middleware or some kind of framework must be used to help you solve it, but today is not so. Today, our cloud can almost achieve the management capabilities required by any application you can imagine. It should even be said that the capabilities of the cloud have almost exceeded most of the requirements of our software architecture today. So in this case, I definitely no longer need an additional layer, whether it is traditional middleware, or the traditional microservice framework or PaaS, to help bridge the gap between software requirements and infrastructure.
As this gap narrowed, various cloud-native technologies began to emerge. Therefore, any kind of cloud native technology is no longer a compensation for a certain ability, but more of the ability of the cloud to be used in my application in a simpler and more efficient way. Whether it is containers, K8s or Service Mesh, they are all in different links to help the application itself to better use cloud services. In other words, using the infrastructure capabilities behind the cloud, such as K8s, it allows applications to enter my cloud storage and network in a very simple and insensitive way, using cloud computing capabilities; Service Mesh is completely non-intrusive through Sidecar Ways that allow you to use the cloud's flow control capabilities to manage microservices.
In the future, our entire cloud computing development, including the focus behind cloud native, must be the same. It is very important to continuously, continuously and fully release the infrastructure capabilities of cloud computing to the development and delivery of software and even the entire life cycle. The important point. Because cloud capabilities will become stronger and stronger in the future, we will see that with such a trend, cloud native must gradually lead the entire cloud computing ecosystem.
Copyright statement: content of this article is contributed spontaneously by Alibaba Cloud real-name registered users. The copyright belongs to the original author. The Alibaba Cloud Developer Community does not own its copyright and does not assume corresponding legal responsibilities. For specific rules, please refer to the "Alibaba Cloud Developer Community User Service Agreement" and the "Alibaba Cloud Developer Community Intellectual Property Protection Guidelines". If you find suspected plagiarism in this community, fill in the infringement complaint form to report it. Once verified, the community will immediately delete the suspected infringing content.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。