Definition of cloud-native architecture
Cloud Native Architecture Definition
From a technical point of view, cloud-native architecture is a set of architectural principles and design patterns based on cloud-native technology, which aims to maximize the stripping of non-business code in cloud applications , so that cloud facilities can take over the original applications in the application. A large number of non-functional features (such as elasticity, resilience, security, observability, grayscale, etc.) make the business no longer troubled by non-functional business interruption, and at the same time, it has the characteristics of light weight, agility, and high automation.
The above figure shows that the code usually includes three parts: business code, third-party software, and code that handles non-functional features. Among them, "business code" refers to the code that implements business logic; "third-party software" refers to all third-party libraries that business code depends on, including business libraries and basic libraries; "processing non-functional code" refers to the realization of high availability, security, and observability. Code for non-functional capabilities such as sex.
Of the three parts, only the business code is the core, which really brings value to the business, and the other two parts are only appendages . Increased complexity makes today's software builds more complex and more demanding on the skills of developers. Compared with the traditional architecture, the cloud-native architecture has taken a big step forward. A large number of non-functional features (not all, such as ease of use) are stripped from business code into IaaS and PaaS, thus reducing business code development. The technical focus of personnel improves the non-functional capabilities of applications through the professionalism of cloud vendors.
In addition, applications with cloud-native architecture can maximize the use of cloud services and improve software delivery capabilities, further accelerating software development :
1 : The code structure has changed dramatically
One of the most impactful aspects of cloud-native architecture is the dramatic change in the programming model of developers. In most programming languages today, there are elements such as files, networks, threads, etc. These elements bring benefits to the full use of single-machine resources, but bring the complexity of distributed programming; therefore, a large number of frameworks and products have emerged to come Solve network call problems, high availability problems, CPU contention problems, distributed storage problems in a distributed environment...
In a cloud environment, "how to get storage" becomes a number of services, such as object storage services, block storage services, and file storage services without random access. Cloud not only changes the interface for developers to obtain these storage capabilities, but also that cloud products handle high availability challenges, automatic scaling challenges, security challenges, operation and maintenance upgrade challenges in distributed scenarios behind these OpenAPIs or open source SDKs Therefore, the application developers do not have to deal with the problem of how to synchronize the locally saved content to the remote end after the node is down in their code, nor how to expand the storage node when the business peak arrives. of operation and maintenance personnel do not need to urgently upgrade the third-party storage software when a zero-day security problem is discovered...
The cloud upgrades the capabilities of the third-party software and hardware into services, which greatly reduces the development complexity of developers and the operation and maintenance workload of operation and maintenance personnel . Obviously, if such cloud services are used more, then the development and operation and maintenance personnel will be greatly reduced. The less the burden on the enterprise, the less necessary burden on the non-core business realization of the enterprise becomes a controllable expenditure. In some companies with strong development capabilities, the processing of these three-party software and hardware capabilities is often handed over to the application framework (or the company's own middleware); in the era of cloud computing , cloud vendors provide more SLA. Services that all software companies can benefit from.
These make business code developers no longer need to master files and their distributed processing technology, and no longer need to master various complex network technologies... Simplification makes business development more agile and faster!
2: Mass delegation of non-functional features
Any application provides two types of properties, functional properties and non-functional properties. Functional features are the codes that really bring value to the business, such as how to create customer data, how to process orders, how to pay, etc.; even some general business functional features, such as organization management, business dictionary management, search, etc. tailored to business needs. Non-functional features are features that do not bring direct business value to the business, but are usually essential features, such as high availability, disaster tolerance, security features, operability, ease of use, testability, grayscale release capability , etc.
cannot be said that cloud computing solves all non-functional problems, but it is true that a large number of non-functional features, especially complex non-functional problems in a distributed environment, are dealt with by cloud products . Taking the most troublesome high availability as an example, cloud products provide solutions for applications at multiple levels:
Virtual machine: When the virtual machine detects an abnormality of the underlying hardware, it can automatically help the application to do hot migration. The migrated application does not need to be restarted and still has the ability to provide external services, and the application does not even have any awareness of the entire migration process;
Container: Sometimes the physical machine where the application is located is normal, but the application itself has problems (such as bugs, resource exhaustion, etc.) and can not provide services to the outside world. The container detects abnormal process status through monitoring and inspection, so as to implement abnormal nodes. Operations such as offline, new node online and production traffic switching are completed automatically without the intervention of operation and maintenance personnel ;
Cloud service: If the application gives the "stateful" part to cloud services (such as cache, database, object storage, etc.), plus the holding of global objects is miniaturized or has the ability to quickly reconfigure, because the cloud service itself is capable of With extremely strong high availability, the application itself will become a thinner "stateless" application, because the business interruption caused by high availability failure will be reduced to the minute level; if the application is the peer-to-peer architecture model of NM, then Combine with Load Balancer products for virtually lossless high availability!
3: Highly automated software delivery
Once the software is developed, it needs to be deployed and delivered in various environments inside and outside the company to deliver the software value to the end customer. The difficulty of software delivery is the difference between the company environment and the customer environment, and the difference in the skills of the software delivery and operation personnel , which is filled by a large number of user manuals, installation manuals, operation and maintenance manuals and training documents. Containers are like containers, which package software in a standard way. Containers and related technologies help shield differences between different environments, so that standardized software delivery can be done based on containers.
For automated delivery, there is also a need for a tool that can describe different environments, so that the software can "understand" the target environment, delivery content, configuration list, and identify the differences in the target environment through code. ” to complete the installation, configuration, operation and change of the software.
Cloud-native automated software delivery is a huge improvement over current manual software delivery. Taking microservices as an example, after the application of microservices, it is often deployed to thousands of nodes. If the system does not have a high degree of automation, the launch of any new business will bring great workload challenges. In severe cases, it will also cause business changes to exceed the online window and become unavailable.
From a technical point of view, cloud-native architecture is a set of architectural principles and design patterns based on cloud-native technology, which aims to maximize the stripping of non-business code in cloud applications , so that cloud facilities can take over the original applications in the application. A large number of non-functional features (such as elasticity, resilience, security, observability, grayscale, etc.) make the business no longer troubled by non-functional business interruption, and at the same time, it has the characteristics of light weight, agility, and high automation.
The above figure shows that the code usually includes three parts: business code, third-party software, and code that handles non-functional features. Among them, "business code" refers to the code that implements business logic; "third-party software" refers to all third-party libraries that business code depends on, including business libraries and basic libraries; "processing non-functional code" refers to the realization of high availability, security, and observability. Code for non-functional capabilities such as sex.
Of the three parts, only the business code is the core, which really brings value to the business, and the other two parts are only appendages . Increased complexity makes today's software builds more complex and more demanding on the skills of developers. Compared with the traditional architecture, the cloud-native architecture has taken a big step forward. A large number of non-functional features (not all, such as ease of use) are stripped from business code into IaaS and PaaS, thus reducing business code development. The technical focus of personnel improves the non-functional capabilities of applications through the professionalism of cloud vendors.
In addition, applications with cloud-native architecture can maximize the use of cloud services and improve software delivery capabilities, further accelerating software development :
1 : The code structure has changed dramatically
One of the most impactful aspects of cloud-native architecture is the dramatic change in the programming model of developers. In most programming languages today, there are elements such as files, networks, threads, etc. These elements bring benefits to the full use of single-machine resources, but bring the complexity of distributed programming; therefore, a large number of frameworks and products have emerged to come Solve network call problems, high availability problems, CPU contention problems, distributed storage problems in a distributed environment...
In a cloud environment, "how to get storage" becomes a number of services, such as object storage services, block storage services, and file storage services without random access. Cloud not only changes the interface for developers to obtain these storage capabilities, but also that cloud products handle high availability challenges, automatic scaling challenges, security challenges, operation and maintenance upgrade challenges in distributed scenarios behind these OpenAPIs or open source SDKs Therefore, the application developers do not have to deal with the problem of how to synchronize the locally saved content to the remote end after the node is down in their code, nor how to expand the storage node when the business peak arrives. of operation and maintenance personnel do not need to urgently upgrade the third-party storage software when a zero-day security problem is discovered...
The cloud upgrades the capabilities of the third-party software and hardware into services, which greatly reduces the development complexity of developers and the operation and maintenance workload of operation and maintenance personnel . Obviously, if such cloud services are used more, then the development and operation and maintenance personnel will be greatly reduced. The less the burden on the enterprise, the less necessary burden on the non-core business realization of the enterprise becomes a controllable expenditure. In some companies with strong development capabilities, the processing of these three-party software and hardware capabilities is often handed over to the application framework (or the company's own middleware); in the era of cloud computing , cloud vendors provide more SLA. Services that all software companies can benefit from.
These make business code developers no longer need to master files and their distributed processing technology, and no longer need to master various complex network technologies... Simplification makes business development more agile and faster!
2: Mass delegation of non-functional features
Any application provides two types of properties, functional properties and non-functional properties. Functional features are the codes that really bring value to the business, such as how to create customer data, how to process orders, how to pay, etc.; even some general business functional features, such as organization management, business dictionary management, search, etc. tailored to business needs. Non-functional features are features that do not bring direct business value to the business, but are usually essential features, such as high availability, disaster tolerance, security features, operability, ease of use, testability, grayscale release capability , etc.
cannot be said that cloud computing solves all non-functional problems, but it is true that a large number of non-functional features, especially complex non-functional problems in a distributed environment, are dealt with by cloud products . Taking the most troublesome high availability as an example, cloud products provide solutions for applications at multiple levels:
Virtual machine: When the virtual machine detects an abnormality of the underlying hardware, it can automatically help the application to do hot migration. The migrated application does not need to be restarted and still has the ability to provide external services, and the application does not even have any awareness of the entire migration process;
Container: Sometimes the physical machine where the application is located is normal, but the application itself has problems (such as bugs, resource exhaustion, etc.) and can not provide services to the outside world. The container detects abnormal process status through monitoring and inspection, so as to implement abnormal nodes. Operations such as offline, new node online and production traffic switching are completed automatically without the intervention of operation and maintenance personnel ;
Cloud service: If the application gives the "stateful" part to cloud services (such as cache, database, object storage, etc.), plus the holding of global objects is miniaturized or has the ability to quickly reconfigure, because the cloud service itself is capable of With extremely strong high availability, the application itself will become a thinner "stateless" application, because the business interruption caused by high availability failure will be reduced to the minute level; if the application is the peer-to-peer architecture model of NM, then Combine with Load Balancer products for virtually lossless high availability!
3: Highly automated software delivery
Once the software is developed, it needs to be deployed and delivered in various environments inside and outside the company to deliver the software value to the end customer. The difficulty of software delivery is the difference between the company environment and the customer environment, and the difference in the skills of the software delivery and operation personnel , which is filled by a large number of user manuals, installation manuals, operation and maintenance manuals and training documents. Containers are like containers, which package software in a standard way. Containers and related technologies help shield differences between different environments, so that standardized software delivery can be done based on containers.
For automated delivery, there is also a need for a tool that can describe different environments, so that the software can "understand" the target environment, delivery content, configuration list, and identify the differences in the target environment through code. ” to complete the installation, configuration, operation and change of the software.
Cloud-native automated software delivery is a huge improvement over current manual software delivery. Taking microservices as an example, after the application of microservices, it is often deployed to thousands of nodes. If the system does not have a high degree of automation, the launch of any new business will bring great workload challenges. In severe cases, it will also cause business changes to exceed the online window and become unavailable.
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00