Brief introduction: In the 2021 R&D Efficacy Summit, Yu Qi, chief architect of Ali Cloud Middleware, shared the theme of “How to build modern applications with cloud native technologies”, how to use the characteristics of cloud and cloud-native technologies and products to help enterprises transform traditional applications into modern applications.

The author | fool

Today, cloud and cloud computing technology has been widely accepted by enterprises. There are a lot of topics about cloud, cloud computing and cloud native, but I would like to discuss the real protagonist in all the clouds, which is our application.

Because when enterprise applications go to the cloud, the high availability of those applications may have increased somewhat, but there are still a lot of issues; However, when we discuss the operation and maintenance efficiency of these applications in the cloud, there may not be a great improvement, because all the operation and maintenance are based on the infrastructure, and cloud computing is a relatively big change in the infrastructure. If we ask again whether the development speed of the whole application has been greatly improved after going to the cloud, many people will say, no. Therefore, today’s discussion is about how to use cloud native related technologies to help optimize our applications from traditional applications to modern applications.

The atypical typical-the cloud of life

Let’s take a metaphysical approach from the individual to the whole, and look at a typical business case.

Although this enterprise has many differences with many cloud enterprises, such as industry, application category, cloud motivation and so on, they also have many things in common: for example, after cloud, they have solved many problems but still left quite a lot of problems. This business belongs to the new retail industry and has good sales.

However, with the development of business, the traditional ERP software has been unable to meet the demands of business development, which is mainly reflected in the fact that when he wanted to participate in the annual promotion such as 618 and Double 11, his ERP supplier told him that their software could not support thousands or tens of thousands of TPS, but only support hundreds of TPS. Therefore, for these new retail e-commerce enterprises, they have no way to meet the demands of large-scale business development, so they find Ali Cloud.

Aliyun provides enterprises with solutions based on the Internet architecture of Aliyun, and at the same time allows these new Internet applications and new e-commerce platform applications to migrate to Aliyun. On the whole, ISV was hired for commissioned development, and the customer’s application was transferred from offline IDC to online public cloud. The main technology upgrade was regionalization, and the overall operation and maintenance of the cloud was taken charge of by the customer’s own operation and maintenance department. The whole process of cloud transfer is also very successful, which solves the large-scale problem of customer application well, so that customers can participate in the promotion of 618, Double 11 and so on.

At the same time, as the overall software, that is, the e-commerce platform, adopts the self-research method, it greatly releases the high cost like the traditional ERP. However, due to the rapid iteration of the overall structure, a hidden danger in the original structure resulted in a relatively large production accident due to the huge volume of business during a promotion. As for the customer, they assessed that the accident caused a very large loss to them.

To cloud: “I am anxious if I don’t go up, but I am anxious when I go up”

So many enterprises today, they have a lot of anxiety about the cloud, reflected in their thinking about whether to go to the cloud, because the cloud can not simply follow the trend, but to think about what the cloud can solve for them.

For the enterprises after the cloud, although they have achieved phased success, they also need to think about what problems they have not been solved. So whether or not there are companies in the cloud, they are very anxious, as they are thinking about how best to shorten the development cycle in order to support rapid business growth; How to improve the overall operational efficiency and give their IT department strong control in the process; After the overall cloud and cloud, IT can better reduce the overall IT application cost, as well as reduce the complexity of the software, improve the high availability of the whole system, and so on. Most of these aspects are focused on the non-functional characteristics of the application.

1. The source of anxiety

For all these anxieties, we can deeply analyze the causes from the perspective of application.

As we all know, for the application, the core is the architecture, including the business architecture and technical architecture of the application. From the perspective of application architecture, it needs to meet the application development demands of customers. For example, the generation of data. With the increasing popularity of IoT today, data will generate a very large amount of access, and the processing of these data also brings higher requirements.

The traditional responsive data processing mode, which serves more people’s requests, has been unable to meet the needs of the business. For IoT devices, there are more models and modes based on such events as request and response. Similarly, the business development of enterprises needs to connect with more companies ecologically. These large number of business demands also bring more requirements to the underlying technical architecture. These requirements are embodied in the requirement that the underlying technical architecture can support high redundancy, can support micro services and massive business concurrency, can support dynamic scaling, can provide SLA and so on.

If we further dig into what kind of core contradiction needs to be solved, we can find that the core contradiction lies in the fact that with the increasing complexity of cloud and business, IT has more management costs. This cost is reflected in the fact that all micro-services and high availability require a high degree of system redundancy. At the same time, due to the rapid development of business, IT needs the whole IT system to respond to frequent changes. The core contradiction lies in the contradiction between the high redundancy of the system and the frequent changes of the system. All distributed systems are around this main contradiction to solve.

For example, in the original stand-alone era, if we only need a person to manage a machine, using the software on a machine can meet the requirements of their business development, then we obviously do not have so many contradictions. Only when a person becomes dozens or even hundreds of people, when such a machine is not running on one node but on dozens or hundreds or even thousands of nodes, the complexity of the whole IT needs to deal with changes from 1-to-1 to 1-to-N frequency. So there’s a huge increase in overall complexity, and that’s the source of the contradiction that we’re talking about.

2. Fast solution and deep solution

So what’s the solution to this contradiction? Today, in the age of the cloud, we’ve concluded that there are quick solutions and deep solutions that require more resources.

Quick solution includes the re-host mode, which is to migrate the application running environment from the traditional offline IDC to the cloud environment. In this mode, the architecture of the application does not change, the risk of the application is lower, but the return on value is higher. An alternative approach to this is re-platform, which changes the overall delivery and operation of the application, but does not change the software architecture of the application.

For example, we use containers to change the retention of the entire software, change the overall retention of operations and maintenance. Under this pattern, the scope of architectural change is relatively small, the risk of implementation is medium and the value of return can be relatively high.

However, if we want to completely solve the above problems, then we should adopt the re-build mode of the whole software refactoring, or carry out a re-factor refactoring mode for the important modules of the software. These patterns all involve changes in the architecture of the software, so their implementation risks are also high, but the same high investment and high risk also bring high returns, and the changed application can better resolve conflicts.

All the solutions have a great deal to do with the cloud native. The main reason why cloud native is put forward is that many applications can not make good use of the characteristics of cloud after the enterprise goes to the cloud, so some people say that many applications are not cloud native type of applications. Therefore, cloud native is proposed.

The key connotation of cloud native

We are not going to discuss the definition of cloud nativeness, but we are going to highlight three key implications of cloud nativeness that will be very helpful in understanding how we can use cloud nativeness to build modern applications.

Cloud native technologies: Today’s cloud-native technologies range from closed source to a large number of open source. Closed sources are typically represented by cloud vendor infrastructure that is relatively transparent to the application. Also, a large number of open source technologies are relevant for applications, as all applications are built directly on top of the open source cloud native stack. However, when it comes to making good use of the underlying cloud-native technology, we usually recommend that our application be heavily cloud-native in these scenarios.

Cloud native products: Some customers’ technology stacks are built on open source technology stacks. However, although open source stacks have no problems in many technologies, functions and stability, they may have problems in maintainability and coordination with the underlying infrastructure. Therefore, we recommend that apps be built on top of cloud native products as much as possible.

Cloud native concept: All the problems mentioned above cannot be solved by technology and products alone, because technology and products are production tools, and the change of production tools often leads to the change of the IT culture of the whole enterprise, that is, the production relations.

In the whole IT culture, what plays the most important role is the production process of the whole enterprise, as well as the cooperation between people in the production process. As cloud-native technologies and products bring changes at the tool level, there will inevitably be changes across the entire production line, that is, between the production processes of the enterprise.

For example, if the requirements of an existing position change, or the original position is no longer available, some new positions may be created. In this process, the biggest impact is people, including the cooperation between people. Therefore, it is necessary to make good use of cloud native. It is particularly important to pay attention to the changes that cloud native technology and products bring to the production process and production line of the whole enterprise, especially for the upgrading of people and organizations.

1. Cloud native is the re-upgrade of cloud computing

Cloud native can not only help us to better build, use and manage the cloud, but also the re-upgrade of the whole cloud computing.

This is not only reflected in the cloud infrastructure level upgrade, that is, cloud computing providers will realize that the infrastructure provided today is not good enough to meet the requirements of the application, need to continue to upgrade to better meet the requirements of the application in efficient delivery, operation and maintenance.

Likewise, he will require an overhaul of the app’s architecture to make it more resilient, resilient, and observable. With the upgrade of infrastructure and application, we will further pursue the improvement of overall R&D efficiency, which includes the adoption of new computing forms such as Serverless to help us improve the overall delivery and operation efficiency of the application. And, more importantly, resolving the tension between rapid iteration and system stability in a frequently changing IT system. So we say cloud native is a re-upgrade of cloud computing as a whole.

2. What are modern applications

What is a modern application and how does it differ from a traditional one?

Typical features of modern applications include elasticity, observability and measurement, statelessness and security. In an overall computing architecture, we can see that modern applications have a lot in common with cloud native applications. The difference is that modern apps don’t have to be in the cloud.

Some related to the cloud to cloud native applications as the name implies, but many of them characteristics are the same, they require the application of overall to build on the technology of cloud native, these technologies and products can truly reflected in the application of using cloud native architecture, and thoroughly implement the cloud in the process of the implementation of the whole native development philosophy. Such applications are better able to run on all kinds of infrastructure.

Given that architecture is a key element in hosting applications, what are the characteristics of cloud native architectures?

Cloud native architecture

Cloud native architecture is a combination of architectural principles, design patterns, and design approaches. There are very distinct characteristics in this combination that are different from traditional architectures.

Cloud native architecture will try to help our application to remove the non-functional code from it. In traditional applications, there is a lot of code that needs to deal with non-functional issues. Under the cloud native architecture, this part of code will be stripped out and put into the cloud native infrastructure, products and technologies, and the underlying PaaS platform and IaaS platform will bear the non-functional problems in customer applications, so that developers can pay more attention to the writing of business code.

With the cloud native architecture to take over a large number of non-functional features of the application, business interruptions due to non-functional problems can be avoided, while making the application more lightweight, agile, and highly automated.

1. Cloud native architecture principles

We extracted the seven most important principles of cloud native architecture under the cloud native architecture:

1. Servicalization principle: the microservice-oriented granularity can better meet the characteristics of customer applications; 2. Elasticity principle: from the virtual machine to the container level to the further application level has different elasticity; 3. Resilience principle: the further improvement of the high availability principle, applied in a variety of situations to continue to provide service to customers; 4. The principle of observability: different from monitoring, observability model can provide a large amount of effective information from log to link tracking in advance, so as to actively discover potential risks in the system; 5. Automation principle: From the underlying hardware to software and components, there has been a great improvement. Therefore, we hope to have automation principle to help us operate and maintain more effectively, so as to reduce the cost of operation and maintenance. 6. Zero trust principle: the cloud native architecture can run on different architectures, which puts forward new requirements for security. It requires all applications to be mistrusted no matter what environment they are running in, and the validity of each running request needs to be verified. 7. Principle of continuous evolution: according to the characteristics of the enterprise, appropriate evolutionary goals can be adopted at each stage, and each goal will eventually evolve into modern applications after long-term iteration.

2. The main architectural patterns of cloud native

There are a lot of cloud native architecture patterns, as shown in the figure below. For details, please refer to the recently published “Practice of Cloud Native Architecture in Ali Cloud”.

3. Aliyunyun native architecture method

Regarding the cloud native architecture approach, we propose the architecture approach of ACNA. This is an architecture design method of Aliyun’s cloud native architecture, which includes the evaluation system and maturity measurement system of the cloud native architecture, as well as the accumulated best practices and used product systems and technologies of Aliyun’s customers in the process of implementing cloud native technology transformation on the application. There are some architectural perspectives in this, and we hope that for each enterprise, they will be able to choose the appropriate technical architectural capabilities according to their own enterprise situation, and ultimately serve the business development and enterprise strategic development.

4. The original architecture of Ali Yunyun is closed loop

The overall architectural approach is a synthesis of multiple perspectives in which we hope to form a closed loop through the continuous evolution of the architecture.

The entire architecture closed-loop consists of eight major phases. From the identification of business pain points to the determination of architectural objectives, the corresponding technologies are selected in the risk assessment process to make an iterative plan. In the implementation plan, we suggest that enterprises should have some specialized organizations to review the overall risks during the implementation of cloud native architecture, so as to form a closed loop in the whole process. This process requires special attention to the architectural governance perspective, which requires an organization or person to assist the application with architectural governance during the iteration.

5. How to measure the maturity of cloud native architecture

At ACNA we propose a maturity model for measuring cloud native architectures with six key dimensions, which we refer to as SESORA.

The ability of these six dimensions is also the most important six key indicators in the application of modernization. Each indicator is graded from 0 to 3, with a score for each rating, which is then evaluated to determine how high or low the application will be on the cloud native architecture. Today, the SESORA model proposed by Alibaba Cloud has been adopted by many organizations and enterprises in the industry to help enterprises improve their maturity in the transformation of cloud native architecture.

Customer case

Finally, two typical cases. The first case is how the application in Aliyun can effectively prevent the risk of stability in the system architecture design through the cloud-native products. We have adopted the architecture pattern of micro-service, in which a large amount of data is stored in MongoDB. In this architecture, customers have adopted the combination of PTS, ARM and AHAS, which can better help customers to actively detect whether there is potential risk in the system, so as to prevent the risk of stability.

The second case is about Serverless, which addresses the problem of helping micro-service applications get to the cloud quickly. Because in this process, we often need the application to solve a lot of problems, and in the Serverless mode, these low-level deployments are greatly reduced in complexity.

When the customer application has a sudden traffic increase, Serverless will detect and take the initiative to apply for new resources, so that the new traffic is timely response; Serverless also proactively releases resources when burst traffic disappears, thus reducing costs.

This article is the original content of Aliyun, shall not be reproduced without permission.