How to use cloud native technology to build modern applications

How to use cloud native technology to build modern applications

Introduction: At the 2021 R&D Efficiency Summit, Yu Qi, chief architect of Alibaba Cloud Middleware, 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 enterprises Traditional applications are transformed into modern applications.

Author | Yuqi

Today, cloud and cloud computing technology 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, it 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.

Although this company is different 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.

However, 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 to commission the development, and to migrate the customer s application from the offline IDC to the online public cloud. The most important technical upgrade in this area is regionalization. The overall operation and maintenance after 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, is self-developed, 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.

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, regardless of whether there are companies that go to the cloud, they are very anxious. This is reflected in the fact that they are thinking about how to shorten the research and 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 overall system can be improved. Available capabilities, etc., most of these aspects are focused on the non-functional features of the application.

1. The source of anxiety

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

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, models and methods based on requests and responding to such events are more. 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 kind of 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 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 dozens, hundreds or even thousands of nodes, the complexity of the entire IT process will change from 1:1 to 1:1. 1 to N frequently. Therefore, the overall complexity has been greatly improved, which is also the source of the contradiction we are talking about .

2. Quick solution and deep solution

So what 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 resource investment.

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 retention of operation and maintenance. Then under this model, the magnitude 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 companies 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 propose three key connotations about cloud native. Understanding these three connotations is of great help to how we use cloud native to build modern applications.

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 are 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 products : Some customers technology stacks are built based on open source technology stacks, but although the open source technology stack has no problems in many technologies, functions, and stability, it is possible in terms of maintainability and coordination with the underlying infrastructure There will 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, production relations. Change.

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 not only helps you build, use, and manage the cloud better, it is also an upgrade of the entire cloud computing.

This is not only reflected in the upgrade of the cloud infrastructure level, that is, cloud computing providers will realize that the infrastructure provided today cannot better meet the requirements of the application, and they need 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 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?

Modern applications include typical features 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 thoroughly implement the cloud-native development concept in the overall implementation process. 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.

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 put into the cloud native infrastructure, products and technology, and the underlying PaaS platform and IaaS platform will carry the non-functional issues in the customer application, so that developers can 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

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 flexibility: from the virtual machine to the container level to the further application level, there are different flexibility;

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 more effectively operate and maintain, 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".

3. Alibaba Cloud Cloud Native Architecture Method

Regarding the cloud native architecture method, we proposed the ACNA architecture method. This is an architectural design method of Alibaba Cloud for cloud native architecture. It includes an evaluation system for cloud native architecture and a maturity measurement system. It also includes Alibaba Cloud s implementation of cloud native technology transformation for its customers. 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.

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 landing plan, we recommend that companies have some specialized agencies to review the overall risk in the process of implementing cloud native architecture, so as 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 propose a maturity model for measuring cloud native architecture, which has six key dimensions, which we refer to as SESORA.

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 institutions 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.

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 underlying 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.

Original link

This article is original content from Alibaba Cloud and may not be reproduced without permission.