1
Introduction to at the 2021 R&D Performance Summit, Alibaba Cloud Middleware Chief Architect Yu Qi shared on the topic of "How to Use Cloud Native Technology to Build Modern Applications", how to use cloud features and cloud native technologies and products to help The traditional applications of the enterprise are transformed into modern applications.

Author | Yuqi

Today, cloud and cloud computing technologies have been widely accepted by enterprises. There are many topics about cloud, cloud computing, and cloud native, but what I want to discuss is the real protagonist in all clouds, which is our application.

Because when enterprise applications go to the cloud, the high availability capabilities of these applications may be improved, but there are still many problems; and when we discuss the operation and maintenance efficiency of these applications after going to the cloud, they may not be greatly improved, because All operation and maintenance are based on infrastructure, and cloud computing is a relatively large infrastructure change; if we ask again, has the development speed of the entire application greatly improved after going to the cloud? At this time, many Everyone has to say, no.

Therefore, today’s main discussion is how to use cloud-native technology to help our applications to optimize, from traditional applications to modern applications.

Atypical and typical-the image of all beings on the cloud

Let us first take a metaphysical approach from the individual to the whole, and look at a typical corporate case.

image.png

Although this company has many differences from many cloud companies, such as industry, application category, cloud motivation, etc., they also have a lot in common: for example, after going to the cloud, they have solved many problems but still left a lot of problems. This company belongs to the new retail industry and has good sales.

But with the development of business, traditional ERP software can no longer meet the demands of business development. The most important manifestation is that when he wants to participate in annual promotions such as 618 and Double Eleven, his ERP supplier told him that their software It cannot support thousands or tens of thousands of TPS, but can only support up to a hundred TPS. Therefore, for these new retail e-commerce companies, they have no way to meet the demands of large-scale business development, so they found Alibaba Cloud.

Alibaba Cloud provides enterprises with solutions based on the Alibaba Cloud Internet architecture, and at the same time allows these new Internet applications and new e-commerce platform applications to migrate to Alibaba Cloud. On the whole, the development is to find an ISV for commissioned development, and to migrate the customer’s application from offline IDC to online public cloud. The most important technical upgrade in this area is regionalization. The overall operation and maintenance after going to the cloud is The customer's own operation and maintenance department is responsible. The entire cloud migration process was also very successful, and it solved the large-scale problems of customer applications, allowing customers to participate well in big promotions such as 618 and Double Eleven.

At the same time, since the overall software, that is, this e-commerce platform, adopts a self-developed method, it releases a relatively high cost like traditional ERP. However, due to the very fast iteration of the overall structure, in a big promotion, due to the very large business volume, a hidden danger in the original structure caused a relatively large production accident. For the customers themselves, they evaluated the impact of this accident. They caused a very substantial loss.

To Yun: "I am anxious not to go, but also anxious when I go"

So many companies today have a lot of anxiety about going to the cloud, which is reflected in their thinking about whether to go to the cloud, because going to the cloud can't just follow the trend, but to think about what problems can be solved for them by going to the cloud.

image.png

For companies that have gone to the cloud, although they have achieved phased success, they still need to think about what problems they still have to solve. Therefore, whether there are companies that go to the cloud or not, they are very anxious. This is reflected in the fact that they are thinking about how to shorten the development cycle to support the rapid business development needs; how to improve the overall operation and maintenance efficiency , And in this process, let their IT department have a strong control; after the overall cloud and the cloud, the overall IT application cost can be reduced, and the software complexity can be reduced, and the entire system can be improved. Available capabilities, etc., most of these aspects are focused on the non-functional features of the application.

1. Roots of anxiety

We can deeply analyze what caused all these anxiety from the perspective of application.

image.png

Everyone knows that for applications, the core is the architecture, including the business architecture and technical architecture of the application. From the perspective of application architecture, it is necessary to satisfy customers' application development demands. For example, the generation of data. With the continuous popularization of IoT today, data will generate a very large amount of access, which also brings higher requirements for the processing of these data.

Traditional and more responsive data processing methods that serve human requests can no longer meet the needs of business. For IoT devices, more models and methods are based on requests and responding to such events. Similarly, the business development of an enterprise needs to be ecologically connected with more companies. These large number of business demands also put more demands on the underlying technical architecture. These requirements are reflected in the requirement that the underlying technical architecture can support a high degree of redundancy, can support microservices and massive business concurrency, can support dynamic scaling, can provide SLA, and so on.

If we further dig deeper to find out what core contradictions need to be resolved, we can find that the core contradiction lies in the increasing complexity of the cloud and business, which makes IT have more management costs. And this cost is reflected in the fact that all microservices and high availability need to be solved with a high degree of system redundancy. At the same time, due to the rapid development of business, the entire IT system is required to respond to frequent changes. The core contradiction lies in the contradiction between the high degree of redundancy of the system and the frequent changes of the system. All distributed systems are resolved around this main contradiction.

For example, in the original stand-alone era, if we only need one person to manage one machine, and the software on one machine can meet the requirements of our own business development, then we obviously do not have so many contradictions. Only when one person becomes dozens or even hundreds of people, and when such a machine is not running on one node but tens to hundreds or even thousands of nodes, the complexity of the entire IT process will change from one to one. 1 to N frequently. So overall complexity has been a great improvement, that is what we are talking about the root causes of conflict .

2. Quick solution and deep solution

So what kind of solution is there for such a contradiction? Today in the cloud era, we have summarized a quick solution and an in-depth solution that requires more resources.

image.png

The quick solution includes the re-host mode, that is, the application operating environment is migrated from the traditional offline IDC to the cloud environment. In this mode, the application architecture has not changed, and the application risk is relatively low, but the value return can only be said to be high. Another solution corresponding to this is re-platform, which is to change the delivery and operation and maintenance of the overall application, but the software architecture of the application does not change.

For example, we use containers to change the retention of the entire software and change the overall operation and maintenance retention. Then, under this model, the scope of its structural changes is relatively small, the implementation risk is medium, and a relatively high value return can be obtained.

But if we want to completely solve the above problems, then we must adopt the re-build method of the entire software reconstruction, or carry out a re-factor reconstruction mode for the important modules of the software. These models will all involve changes in the software architecture, so its implementation risk is also very high, but the same high investment and high risk also bring high returns, and the changed application can better solve the contradiction.

All solutions have a very big relationship with cloud native. The main reason why cloud native is proposed is that after enterprises go to the cloud, they find that many applications cannot make good use of the characteristics of the cloud. Therefore, some people say that many applications are not cloud-native applications. Therefore, cloud native was proposed.

The key connotation of cloud native

Let's not discuss what the definition of cloud native is, but we have to specifically put forward three key connotations about cloud native. Understanding these three connotations is very helpful to how we use cloud native to build modern applications.

image.png

Cloud native technology : Today's cloud native technology has closed source and a large number of open source. Closed source is usually embodied in the infrastructure of cloud vendors that are relatively transparent to applications. Similarly, a large number of open source technologies have a greater relationship with applications, because all applications will be directly built on these open source cloud native technology stacks. But if these applications need to make better use of the underlying cloud-native technology, we usually suggest that our applications in these scenarios can use cloud-native products in large quantities.

cloud native product : Some customers’ technology stacks are built based on open source technology stacks, but the open source technology stack has no problems in many technologies, functions, and stability, but in terms of maintainability and coordination with the underlying infrastructure But there may be problems. Therefore, we recommend that applications be built on cloud-native products as much as possible.

Cloud native concept : Technology and products alone cannot solve all the problems faced by the aforementioned applications, because technology and products are production tools, and changes in production tools often lead to the entire enterprise’s IT culture, that is Changes in production relations.

In the entire IT culture, the most important role is the production process of the entire enterprise, as well as the cooperation between people in the production process. As cloud-native technologies and products have brought changes at the tool level, it will inevitably bring about changes in the entire production line, that is, between the production processes of the enterprise.

For example, if the requirements for people in the original positions have changed, or the original positions have disappeared, some new positions may be created. In this process, it is people who are most affected, including the collaborative relationship between people. Therefore, we must make good use of cloud native, and we must pay special attention to the changes that cloud native technologies and products bring to the entire enterprise's production process and production line, especially the upgrades required by people and organizations.

1. Cloud native is a further upgrade of cloud computing

Cloud native can not only help you build, use, and manage the cloud better, it is also an upgrade of the entire cloud computing.

image.png

This is not only reflected in the upgrade of the cloud infrastructure level, that is, the provider of cloud computing will realize that the infrastructure provided today cannot meet the requirements of the application better, and needs to be continuously upgraded to better meet the high efficiency of the application. The delivery, operation and maintenance of the above requirements.

Similarly, he will also require the application to be completely upgraded in terms of architecture, so that the application reflects better flexibility, resilience and observability. With the upgrade of infrastructure and applications, we will further pursue the improvement of overall R&D efficiency. Among them are the use of new computing forms such as Serverless to help our applications improve the overall delivery and operation and maintenance efficiency, and more importantly, Solve the contradiction between rapid iteration and system stability in a frequently changing IT system.

So we say that cloud native is a further upgrade of cloud computing as a whole.

2. What is a modern application

What is a modern application, and how is it different from a traditional application?

image.png

Modern applications include typical characteristics such as elasticity, observability and measurement, statelessness, and security. In the overall computing structure, we can see that modern applications have many similarities with cloud-native applications. The difference between them is that modern applications do not have to run on the cloud.

As the name suggests, cloud-native applications must be related to the cloud, but many of their characteristics are the same. They all require the overall application to be built on cloud-native technology products. These technologies and products can truly be reflected in the application of cloud-native architecture. At the same time, and in the overall implementation process, we must thoroughly implement the cloud-native development concept. Such applications can run better on various infrastructures.

Now that the architecture is the key element of hosting applications, what are the characteristics of cloud native architecture?

Cloud native architecture

Cloud native architecture is a combination of a set of architectural principles, design patterns, and design methods. There are very obvious characteristics in this combination that are different from the traditional architecture.

image.png

The cloud-native architecture will try to help our applications to strip non-functional code from them. In traditional applications, there is a lot of code that needs to deal with non-functional issues. Under the cloud native architecture, after this part of the code is stripped, it will be placed in the cloud native infrastructure, products and technology. The underlying PaaS platform and IaaS platform will carry the non-functional issues in the customer application, thereby allowing developers Pay more attention to the writing of business code.

With such a cloud-native architecture to take over a large number of original non-functional features in the application, business interruptions originally caused by non-functional problems in the business can also be avoided, and at the same time, the application has the characteristics of lighter, agile, and highly automated .

1. Cloud native architecture principles

image.png

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

1. The principle of servicing: the granularity of micro-services can better meet the characteristics of customer applications;

2. The principle of elasticity: from the virtual machine to the container level to the further application level, there are different elasticities;

3. The principle of resilience: the high-availability principle is further improved, and the application will continue to provide services to customers in various situations;

4. Principle of observability: Unlike monitoring, the observability model can provide a large amount of effective information from logs 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 are relatively large improvements. Therefore, we hope that there will be automation principles to help us operate and maintain more effectively, thereby reducing operation and maintenance costs;

6. The principle of zero trust: The cloud native architecture can run on different architectures, so it puts forward new requirements for security, requiring all applications to be untrusted no matter what environment they are running in, and each request needs to be verified for legitimacy. ;

7. The principle of continuous evolution: According to the characteristics of the enterprise, suitable evolution goals can be adopted at each stage, and after long-term iteration, each goal will eventually evolve into modern applications.

2. The main architecture model of cloud native

There are many cloud-native architecture models, as shown in the following figure. For detailed content, please refer to the recently published "Alibaba Cloud Cloud Native Architecture Practice".

image.png

3. Alibaba Cloud Cloud Native Architecture Method

image.png

Regarding the cloud native architecture method, we proposed the architecture method of ACNA . This is an architectural design method of Alibaba Cloud for cloud native architecture, which includes the evaluation system and maturity measurement system of cloud native architecture, and also includes Alibaba Cloud’s implementation of cloud native technology transformation for customers in the process of implementing cloud native technology. The accumulated best practices and the product systems and technologies used. There are some architectural perspectives in this. We hope that for each company, they can choose the technical architecture capabilities that match it according to their own company's situation, and ultimately serve business development and corporate strategic development.

4. Alibaba Cloud Cloud Native Architecture Closed Loop

The entire architecture method is a complex that contains multiple perspectives, in which we hope that through the continuous evolution of the architecture, a closed loop can be formed.

image.png

The closed loop of the entire architecture contains the eight most important stages. From identifying business pain points to determining architecture goals, selecting appropriate technologies in the risk assessment process to formulate an iterative plan, and to promote the implementation plan, we recommend that companies have some specialized agencies to review the overall risk during the process of implementing cloud-native architecture, so that the entire risk The process forms a closed loop. In this process, special attention must be paid to the architectural governance perspective, which requires corresponding organizations or personnel to help applications in the iterative process of architectural governance.

5. How to measure the maturity of cloud native architecture

In ACNA, we proposed a maturity model for measuring cloud native architecture, which has six key dimensions, which we referred to as SESORA.

image.png

The capabilities of these six dimensions are also the most important six key indicators in modern applications. Each indicator is divided into four levels from 0-3, and each level has a corresponding score. After the evaluation, a score can be drawn about the application's score on the cloud native architecture. Today, the SESORA model proposed by Alibaba Cloud has been adopted by many organizations and enterprises in the industry, which can help enterprises improve their maturity in the transformation of cloud native architecture.

Customer case

Finally, let's look at two typical cases. The first case is how to use cloud-native products to effectively prevent stability risks in system architecture design for applications on Alibaba Cloud. We have adopted a microservice architecture model. A large amount of data is stored in MongoDB. In this architecture, customers use a combination of PTS, ARMS, and AHAS, which can better help customers to actively detect whether there is potential in the system. Risk, so as to prevent the risk of stability.

image.png

The second case is about Serverless. The problem to be solved is to help microservice applications go to the cloud quickly. Because in this process, we often need applications to solve many problems, and in the serverless mode, these low-level deployments have been greatly reduced in complexity.

When there is a sudden increase in customer application traffic, Serverless will detect and actively apply for new resources, so that the new traffic can be responded in time; when the sudden traffic disappears, Serverless will also actively release resources, thereby reducing costs.

image.png

Copyright Notice: 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.

阿里云开发者
3.2k 声望6.3k 粉丝

阿里巴巴官方技术号,关于阿里巴巴经济体的技术创新、实战经验、技术人的成长心得均呈现于此。