当前位置:网站首页>The ups and downs of technology sea and its theoretical exploration under the cloud original system

The ups and downs of technology sea and its theoretical exploration under the cloud original system

2020-12-07 19:22:56 Aliyun yunqi

brief introduction : The development of cloud native technology has become an irresistible trend , At present, it is the best time for cloud native technology to be widely used in commercial products . After the change of technology system , It is bound to usher in a change in the business model , We all know that the future will change , How to seize the opportunity of cloud native , Find the important air outlet of the times ?

18.jpg
author | Wang Yinli ( Yun Zheng )

1 . summary

The attacker , Short ; Theorists , Long ; Practitioner , Win . You can say that , The conscience of a city is reflected in the sewers , No matter how many tall buildings there are in this city , How magnificent the construction is , As long as it's raining , The rain becomes the examiner of the city's conscience . If the city construction is compared with the construction of cloud native system , So what is the original conscience of cloud ? Who is the cloud's original storm ? Who is the test of conscience ?

image.png
Cloud native brings a lot of business value , There are mainly the following :
1) Fast iteration : Martial arts in the world , Fast break not only . We want to get a place in the cruel market competition , You have to pre empt . The essence of cloud nativity is to help businesses iterate quickly , The core element is continuous delivery .
2) Safe and reliable : Cloud primordial through observable mechanisms , It allows us to recover quickly from our mistakes , At the same time, through logical multi rent and physical multi rent and other isolation methods , Limit illegal use of .
3) Elastic expansion : By transforming traditional applications into cloud native applications , To achieve elastic expansion and contraction , Be able to better cope with peak and trough traffic , And to achieve the purpose of reducing cost and improving effect .
4) Open source co construction : Cloud native can better help cloud manufacturers open the cloud market through open source technology , And attract more developers to build an ecosystem , I chose one from the beginning “ Flywheel evolution ” The road of style , Through the ease of use and openness of technology to achieve a positive cycle of rapid growth , And through the growing application examples to promote the enterprise business comprehensive cloud and the continuous improvement of its own technology layout .

Next , This article will go from shallow to deep , From all aspects of cloud origin analysis , Including basic concepts 、 Common technology 、 A complete platform construction system , Let's have a preliminary understanding of cloud nativity .

2 . What is Yunyuan

2.1 Cloud native definition

The definition of cloud Nativity has been changing , Different organizations have different understandings , Well known ones are CNCF and Pivotal . Here is CNCF The latest definition of :

Cloud native technology is good for organizations in the public cloud 、 In new dynamic environments such as private and hybrid clouds , Build and run scalable applications . Representative technologies of cloud Nativity include containers 、 Service Grid 、 Microservices 、 Immutable infrastructure and declarative API.

These technologies can build good fault tolerance 、 A loosely coupled system that is easy to manage and easy to observe . Combined with reliable automation means , Cloud native technology makes it easy for engineers to make frequent and predictable major changes to the system .

Cloud native Computing Foundation (CNCF) Committed to fostering and maintaining a vendor neutral open source ecosystem , To promote cloud native technology . By democratizing the most cutting-edge models , Let these innovations be used by the public .

in addition , As a leader in Cloud Computing ,Heroku The founder of Adam Wiggins The famous twelve elements of cloud origin are sorted out (The Twelve-Factor App:https://12factor.net/zh_cn/)). after , Also as a leader in Cloud Computing ,Pivotal ( Has been VMWare Acquisition ) Of Kevin Hoffman Published Beyond the 12 factor App A Book , Based on the original twelve elements, three new elements have been added , The fifteen elements of cloud origin .

The fifteen elements combine their ideas about SaaS Apply almost all the experience and wisdom , Is the ideal practice standard for developing such applications . Fifteen elements apply to any language development of back-end application services , Automate and standardize processes , Reduce learning costs for new employees ; And to draw a clear line with the underlying operating system , To ensure maximum portability .

The following figure provides an overview of all cloud native definitions and features :

image.png

2.2 The original nature of cloud

Literally , Cloud primordial can be divided into two parts: cloud and primordial .

The cloud is relative to the local , Traditional applications have to run on local servers , Now popular applications are running in the cloud , The cloud contains IaaS、PaaS and SaaS .

Being native means being native , When we started designing the application, we considered that the application would run in the cloud environment in the future , Make full use of the advantages of cloud resources , such as ️ The flexibility and distributed advantages of cloud services .

Cloud primordial contains technology ( Microservices 、 Agile infrastructure ), It also includes management (DevOps、 Continuous delivery 、 Conway's law 、 Reorganization, etc ). Cloud proto is also a series of cloud technologies 、 A collection of business management methods .

One 、 Cloud native is not the business itself

Several people asked me what cloud primordial is , I'll ask them back , If you want your business to iterate quickly , What do you want cloud native to be . Cloud primordial must not be a concrete thing , It's about how to pursue the essence of the problem , What it was originally , That's what , It's a set of methodology .

The essence of cloud nativity is to help businesses iterate quickly , Not the business itself , It's not a technology stack , Not mechanically . We shouldn't look at what we have , It depends on what the customer wants .

So cloud primitiveness actually represents the progress of science and technology , We don't just need to improve the iteration efficiency of new business , We should also break the efficiency of the old business . A good architecture is generally compatible with human stupidity , So the old business here may be a historical burden , It may be the prejudice brought about by knowledge bottleneck .

We are becoming old all the time , Creating new things all the time . People should dare to question themselves , Questioning the past , Questioning authority , To create new momentum and insight .

Two 、 Cloud nativity is not cloud computing

Cloud computing (Cloud Computing) And cloud native (Cloud Native) Make a big difference , It is mainly reflected in the following six aspects :

origin
Cloud native applications come from cloud native . As mentioned earlier , They are built and deployed in the cloud , Real access to the power of the cloud infrastructure . Cloud computing applications are often developed internally using traditional infrastructure , And after adjustment, it can be accessed remotely in the cloud .

Design

Multi tenant instances are designed for native applications ( Microservice architecture ). Cloud computing applications run on internal servers , So they don't have any multi tenant instances .

convenience

Cloud native applications are highly scalable , You can make real-time changes to a single module , It doesn't interfere with the entire application . Cloud computing applications need to be upgraded manually , This can cause the application to break and shut down .

Price

Cloud native applications don't require any investment in hardware or software , Because they're done on the cloud , Usually available from the Licensee , So it's relatively cheap to use . Cloud computing applications are usually more expensive , Because they need to be upgraded to adapt to changing needs .

Realization

Because there is no need for hardware or software configuration , Cloud native applications are easy to implement quickly . Cloud computing applications need to customize a specific installation environment .

3、 ... and 、 Yunhara itself is complex

Cloud natives change more than technology , It's the business that ultimately changes . Since cloud native will help business to iterate quickly , Then the business code and project process are bound to change radically . Typically, the business is getting lighter and lighter , The base is getting thicker and thicker , Data processing is becoming more and more automated , More and more non-human users .

Next , We can get a glimpse of the nature of cloud primordial from the three brief histories of yuvarherali .

21 With the development of artificial intelligence , Human society will gradually transition from humanism to datalism . If human society is a relatively large data network , Including human emotions are just biological algorithms selected by evolutionary theory , So everyone is just one of the data processors , It could be Homo sapiens , It could be a virtual human , It can also be the superhuman of the future . We can take the difference between communism and capitalism as an example . Communism is a centralized algorithm , Through the national data network, the needs of each individual are calculated and then allocated ; Capitalism is a distributed algorithm , A few capitalists control most of the social resources .

It can be said that the previous data is an island , Deployed on several physical machines , Take care of yourself , It doesn't affect people . And today it's different , All applications are online , Gradually become a living asset , The constraints of application will become more and more strict and complex , All the data flow direction and dependence are totally unexpected . It can't be solved by just shop people .

Cloud primitives are very complicated , The essence is to connect data , Processing data from disorder to information 、 knowledge 、 wisdom . The cloud's native complexity comes from its desire to accommodate more complex transactions and structures , But on one hand , Cloud native is actually very simple , Because it brings endless convenience and rich functions to end users , But they don't have to feel it . Complexity and simplicity are relative , The more complex the bottom , The simpler the upper layer .

3 . What is cloud native application

What are cloud native applications ? What is the relationship with cloud primordial ? The definition of cloud native application is as follows :

Cloud native application , It refers to the application designed and developed originally for deployment and operation on cloud platform . Cloud native applications don't just package applications as Docker Mirror image , And you need to deploy the image to Kubernetes Running on the container cloud . To be fair , Most traditional applications , No changes , They can be run on cloud platforms , It's just this mode of operation , Can't really enjoy the cloud dividend , We're also called cloud hosting (Cloud Hosting) application .

in addition , Cloud native applications can be classified in different ways . According to business scenarios , It can be classified by status and function .

3.1 Sort by state

Cloud native applications are mainly divided into stateless applications (stateless) And stateful applications (stateful) Two types of . Whether there is state , It is mainly reflected in whether the state of the application instance needs to be sensed , stay Kubernetes in , The application example is Pod , Stateful applications essentially depend on Pod The state of .

3.1.1 Stateless application

Stateless applications are applications that do not depend on the local running environment , Instances do not depend on each other , It's flexible .

Features of stateless applications :
Examples of stateless applications can be compared to livestock , unknown 、 Disposable ;
The running instance does not store data that needs to be persisted locally ;
Stop instance all information ( In addition to logging and monitoring data ) All will be lost .

3.1.2 Stateful application

Stateful applications are applications that rely on the local running environment , There is a dependency and start sequence between instances , Data persistence is needed , You can't stretch and stretch at will .

Features of stateful applications :
An example of stateful applications can be likened to pets 、 famous 、 Cast not away ;
Instance upgrade and grayscale requirements for start stop sequence , For example, distributed election master ;
Rely on instance information , Such as ID、Name、IP、MAC、SN Etc ;
Data persistence is needed , Rely on local files and configuration .

3.1.3 The state and the state are transformed into each other

Stateful applications and stateless applications can be transformed into each other . Most middleware applications are stateful applications , for example ZooKeeper、RocketMQ、etcd、MySQL etc. . Most business applications are stateless applications , for example Web Class application 、 Query class application, etc .

One 、 No state to state

For example, a relatively simple cloud product , When the public cloud is deployed , You can rely on the infrastructure of the public cloud , So it's stateless ; But in a proprietary cloud deployment , But you need to solve the environment and other things BaaS Dependence , So there's state , This is the difference between infrastructure and operation and maintenance .

In general , We don't advocate that dependencies between applications are too complex , Especially in the context of proprietary cloud , There are quite a lot of environmental problems caused by complex dependencies , Pulling out radish and mud will almost move the whole public cloud to the private cloud , Whether it's for us or for our customers , It's a big burden on the mind .

Two 、 From stateful to stateless

Business applications should be stateful in nature , But it can use middleware 、 Operation and maintenance API、BaaS、Serverless The ability of , State is transferred to middleware . Stateful applications that can be transferred to stateless applications are also called “ Pseudo stateful applications ”.

Through middleware transformation to stateless

Most business applications can use middleware products on the public cloud to implement computing 、 Storage 、 The power of the Internet . for example Web application , have access to RDS Database products , adopt BaaS Openness and dependence RDS example , Just implement the core business logic .

Through operation and maintenance API Change to no state

Applications with special operation and maintenance logic can call operation and maintenance API Shift the complexity of operation and maintenance . for example MetaQ You need to switch between master and slave , Take advantage of Kubernetes Upper etcd Provided by the elector API to MetaQ Example to mark , MetaQ Developers can operate and operate like stateless applications MetaQ 了 .

adopt Serverless Change to no state

For very simple applications of business logic , You don't have to package the image , It can be done directly through a variety of Serverless Platform development , Leave it to the platform for operation and maintenance .
image.png

In order to better identify the pseudo state , We should define whether there is a state or not from the nature of the application, not the state . And for ZooKeeper、etcd、MySQL This kind of middleware completely depends on its own application code for operation and maintenance , Even if it's a more thorough stateful application , It's hard to transform .

So the transition from stateful to stateless , Does the state disappear ? The state is in fact essential , In fact, the end state , It's not that you don't have to do some o & M operations , But according to the state change, the operation and maintenance operations are carried out , Leave it to the platform , In order to achieve the desired state , This process is the operation and maintenance of the life cycle . It's not that there's less state , It's a state that doesn't expose to users . Kubernetes In fact, it helped us solve the problem Pod The state of being . And for stateful applications , We need to focus on Pod Life cycle of , Put the business of Operator Become a platform Operator , It is the main workload of transforming the state into the stateless one .

Under the cloud native system , We're trying to turn stateful applications into stateless applications , This allows you to make the best use of cloud native benefits , Leave observability and high availability to the cloud platform , And development students only need to care about the business closest to customers .

As technology advances , Stateful applications will continue to become stateless applications , Only a few caches 、 news 、 Storage related middleware needs stateful operation and maintenance , And slowly sink to the bottom , Most people don't need to know the difference between the two .

3.2 By function

If the application in cloud native is distinguished by function , It can include business application and operation and maintenance application .

3.2.1 Business applications

Business application is that business development engineers use Java、Go、Python And other languages to develop business code , Then package it as an application deployed after mirroring . Business applications are mainly used to solve business problems , Achieve specific business functions . The delivery of business applications is mainly a mirror image .

stay Serverless In the platform , Business application can also be some function code , It can be mirrored ; It can also be done without mirror image , Deploy directly to a multilingual runtime environment .

3.2.2 Operation and maintenance application

As the cloud native focus needs to solve the problem of application operation and maintenance automation , But the business application cannot solve the problem of its own operation and maintenance , That is, you can't manage yourself , So we need the operation and maintenance application to manage the business application .

Operation and maintenance application is used by operation and maintenance development engineers YAML、Helm And other development of operation and maintenance code , And then send it to Kubernetes The application of upper deployment . Operation and maintenance application is mainly used to solve operation and maintenance problems , Implement special operation and maintenance logic . The main delivery of operation and maintenance application is YAML .

4. Theoretical exploration of cloud primitiveness

4.1 Everything is data

Actually from DevOps To AIOps Between , There's another. DataOps,Kubernetes It's like a black box , You don't know how it's running , It's like running to the end , No one knows whether you run fast or I run fast , So, relative to the final state, observability appears again , Used to measure whether the process of reaching the final state is perfect , Is it healthy? .

therefore , We must have data thinking in our usual design , More data modeling , Otherwise, the observable would be cooking without rice . Let's take a look at the various aspects of cloud Nativity , What data are there ?

We need to edit the configuration of resources , And pass GitOps perhaps K8s Order to be issued , It's also called data drive , That is, everything is configured with data ;
The logic of the resource requires a series of actions to be performed , There are many ways to trigger an action , That is, everything is executing data ;
The life cycle within a resource needs to be orchestrated , Dependencies between resources also need to be choreographed , The essence is to arrange and execute actions , That is, everything is arranged in data ;
K8s It's an event driven architecture ,K8s Changes in the state of various resources on , Events will happen , It's all event data ;
The event stream is the log , Business records are logs , Action change is a journal , Structured logs are fundamental to observability , That is, everything is a log ;
Whether it's a configuration command 、 Or relying on choreography , Or events , It's all about resources , be-all API They are called with the resource as the main body , That is, everything is resource data .
image.png

4.2 Multi dimensional business combination theory

I'm often told that , Cloud native technology is so hot , Let's go to the cloud all day , In addition to cost savings , Why don't I see any obvious help to the rapid delivery of the business ? I think it may be that you haven't found a business architecture that is particularly suitable for the cloud native era .

Some people say that Chinese is the best ideographic language in the world , Because Chinese is a two-dimensional language , Basic vocabulary 2000 Multiple , Other analogies bypass , the myriads of changes , It's good in form and spirit , Broad thinking . And English is just one-dimensional language , There's a new thing , You have to create a new word , No tone , Words of the same kind can't be seen to be related , But I'm good at expressing non massive information , Like programming 、 Mathematical and chemical expressions, etc . From here we can draw the conclusion that , The underlying technology is in machine language 0-1 Relatively convenient , And the upper business needs a multidimensional business model .

You can say that , What cloud Nativity brings is not only the development of Technology , It's a profound change in our business , So, do we have a business model to guide the complex business in the cloud native era ?

A typical example is microservice architecture , Event driven architecture 、 Midrange Architecture , But it doesn't seem to solve the problem . The author has also made some explorations , Invented a set of multidimensional business combination theory , And it is represented in the form of vertical and horizontal graphs .

image.png
The meaning of each figure :

Cross section : With crisscross line and area block to subdivide each domain ;

spot : Business function , The smallest unit of business assembly ;
Horizontal line : Micro platform ,PaaS, The service subject is single ;
Vertical line : Business Software ,SaaS;
Cylinder : Business or technology ;
Area block : Solution or one-stop worktable , By tenant 、 product 、 Service control permissions .

We can see the isolation area and expansion scope of each field from the figure , The vertical and horizontal layers will become more and more , The domain will be more and more segmented .

for instance , There's an application of a trading system , Need to rely on message queues and databases , And want to deploy to the public cloud Kubernetes in . Let's say there's no layering today , So the students in charge of this trading system , You need to buy your own public cloud machine , Then deploy Kubernetes , And then deploy the middleware , Then deploy the trading system , And we need to solve all kinds of network and stability problems , The result is predictable .

in addition , We can also see the value of the vertical and horizontal charts from the development of technology . The faster technology develops , Business students feel that things are not as simple as before . Because the complexity of the business is increasing , At the same time, it requires higher iteration speed . Microservices 、 Containers 、 A lot of Zhongtai's concepts are designed to accelerate innovation . Decoupling is for better combination , How to control the granularity ? This can be seen from the development of physics . In theory, the higher human civilization evolves , The micro will be more micro , Macro will be more macro , Like quantum mechanics and relativity . So the size of granularity is matched with the innovation ability of today's society .

In the future, we need to make technological ecology , For the combination of technical points, layout innovation is bound to become the main theme . You can say that , It's hard for single point technology to play a role and precipitate , It's also very easy to replace , By doing a single point to be integrated to get Ecology , It's a long way to go . A good platform , Any one of them is replaceable . The era of technical arrangement has arrived , The ultimate goal of cloud nativity is to deliver , Not the cost , For faster innovation .

4.3 Towards the end state theory

Towards the end state theory , It's sort of like data driven , The ultimate theory of bringing software systems closer to human instructions .K8s End state oriented in , Data driven in responsive programming , Let the system manage the events , We just need to know what we want , And don't care how to do it .

so to speak , Throughout Kubernetes In the design concept , End state oriented is its core concept , Is the key to operation and maintenance automation . For example, my application needs 10 An example , When the machine breaks down , Help me automatically change to another one, etc , These needs , Pass the declaration and submit it to the system , The system will automatically complete these user expectations . And this way , It's an end state oriented design . The core means of end state design is to use “ declarative API”.

As follows: Deployment For example , The core of custom logic is CR(MyApp) As the final state , hold Deployment As running state , By comparing the inconsistencies of attributes , Write relevant Reconcile Logic .

A picture explains the resources and Controller The relationship between :

image.png
The following conclusions can be drawn from the figure :

replicas stay My-App CR and Deployment The flow between them is one-way ;

My-App drive Deployment,Deployment drive Pod;
Pod State feedback to Deployment,Deployment State feedback to My-App, then App To reach the state of Running.

however Kubernetes The final state oriented design in is not complete enough , It does not design the end state definition of all kinds of resources in the whole life cycle , For example, how to define resource state , How to rely on BaaS and Config , How to insert a hook , How to subscribe to events and handle , How to design completion and health .

The essence of operation and maintenance is process oriented , So the process also needs to be defined . For example, the end state of one's life is to die , Is the final state really what we yearn for ? We need to broaden the breadth of life , Looking for the meaning of happiness . The operation and maintenance in cloud native is similar , All resources have a lifecycle , There is a life cycle, there is a process , There is a process, there is a state , If there is a state, there is a state machine .

4.4 Central management theory

The essence of cloud nativity is to connect business or data , For example, in order not to be locked by cloud manufacturers , You need to cross the cloud ; In order to live in different places , You need to cross Region ; In edge computing, in order to simplify management or form logical clusters , You need to cross Kubernetes colony . In these scenarios , Centralization is the need to solve the problem .

You can say that , As big as a country , Small to one. ZooKeeper Elector , The so-called cross XXX , There must be a centralized management organization . Generally speaking , Our physical isolation is mainly the data center , There are many kinds of data , We are mainly concerned with the data for scheduling , The scheduling data is a relatively simple representation of the user's instructions , We call it configuration , Therefore, centralized management in cloud native needs a global scheduling center , Global configuration center , In a complex situation , A client that can receive and parse instructions can be added to each physical cluster Agent that will do . for example Prometheus That's how monitoring is designed , We need to be in every node Node plus a monitored Agent Monitor the system and collect data to report .

image.png

4.5 On the upward movement of arrangement

You can't organize and manage yourself , It must be self closing , So there's always a higher level of object choreography itself . For example, the architecture of all cluster scheduling systems cannot be extended horizontally , If you need to manage more servers , The only way to do this is to create multiple clusters ; And containers can't choreograph themselves , So it's here Kubernetes ; And then there's distributed selection ,master There can only be one , If I have two master , I don't know which instance to manage ; Another example is that there can only be one supervisor in the same team , If there were two directors , There must be a supervisor who makes the final decision on the two directors .

in addition , The position of each layer is not fixed , The business stack is moving up , What we think is complex today , In the future, it will all be automated .

The key to decoupling is the self closing loop , The key to composition is to arrange , The key to automation is scheduling and coordination .

image.png
There is another phenomenon in cloud primitives , It is that many functions can be referenced to resource arrangement , For example, cloud service application is called resource choreography , Operation and maintenance scheduling is called resource scheduling , Resource deployment is also called resource deployment . There are a lot of resources , The layout is also big , resources + The arrangement is a big increase . Kubernetes Everything in it is resources , Machines are resources , Storage and computing are resources , Services are also resources ; All combinations are choreography , Where there is dependence, there is arrangement , Even talk about human right and wrong , It can also be said that who is arranging ? So when we talk about choreography , Be sure to add a qualifier , Otherwise, there will be a problem of unclear positioning .

in addition , Arrangement and scheduling 、 There are also essential differences in mediation . for instance , In the container platform , Although scheduling and choreography are both part of , But they are responsible for different things , Scheduling is a process that allocates the idle resources in distributed system to the processes that need to run and encapsulates them with containers , Choreography is a health check of the containers in the system 、 Automatic volume expansion and shrinkage 、 Automatic restart 、 Rolling release, etc . And we're in the process of reaching the final state , We need to design a controller to control the state of resources , This process is called coordination , More vividly , In application lifecycle management , The workload generates Pod It's scheduling , mount Hook It's choreography , consumption Event It's coordination .

4.6 Never fail

It's also called dependent relativity , The only systems that never fail are those that keep you alive , You're at some point in the system call chain , Believe in the stability of the system you depend on , Let it cover you .

Let's take the layered environment model of business application as an example , We divide the business application environment into test environment 、 Pretest environment 、 Production environment , Business applications depend on middleware , Middleware needs to run in Kubernetes On . In general , The underlying infrastructure environment that business applications rely on generally has high reliability , Otherwise something big will happen . So when you're testing your business applications , It's about testing your core functions , You need to believe that your upstream is stable , Otherwise, the design of the test system will be extremely complicated . Of course, in the monitoring link , Need to monitor upstream system issues related to your own business system , Once there's an alarm , I can find the students from the upstream system .

image.png

4.7 Life cycle theory

Software is architected to meet growing business needs , Split the original lifecycle , Form a new core life cycle ( The subject remains unchanged ) And the non core life cycle ( Subject change ), And the non core life cycle can be left to others , Finally, merge the results of concurrent execution of each child lifecycle , Complete the total life cycle .

We can see from the development of technology that , The granularity of application is smaller and smaller , More technical code is sinking into the underlying infrastructure .

image.png
You can say it without hesitation , Operation and maintenance business on cloud native application platform , It mainly includes Pod 、 To configure 、BaaS application 、 product 、 Operation and maintenance of resources such as solutions . The key to automation is to define the lifecycle of each resource , And the hook and subscription events of each stage are arranged for consumption .
image.png

4.8 Dimension reduction theory

In the past two years, a word has been very popular , It's called “ Dimension reduction blow ”,“ Destroy you , It's none of your business. ”, From science fiction 《 Trisomy 》. Probably means to say , Use high-level creatures to fight low-level creatures , One dozen and one right . In more popular language , It's using dislocation competition to keep you ahead of your competitors forever . In cloud native , Whether it's technology or business , If full of rebellious spirit , Dare to innovate , Can produce dimension reduction attacks . There are three ways to realize dimension reduction attack :

Quantitative change to qualitative change : From small to large , Many littles make a mickle , Innovation can happen anytime, anywhere , To a certain extent , The impact of cloud nativity on business is fundamental , Is visible ;

Cross dimensional airborne : From left to right , Overtaking in curve , From one industry to another connected industry , For example, a container platform team , It's easy to turn to APaaS ;
Import monopoly : From top to bottom , Hide the underlying implementation , For example, a team that makes a technology platform , It used to be a charging component , But when it develops , It is very likely that we will develop this component by ourselves , This charging component will be greatly affected .

image.png
in addition , We can also according to different business scenarios , Choose different R & D models :

From the bottom up : Start at the bottom , use MVP The principle of minimum availability is used to develop business systems . Start with small technological innovations , To big portfolio innovation , Finally, it is in line with the ultimate goal of cloud native , Improve delivery efficiency , Shorten the cycle of innovation iteration .

From the top down : Gradually push down the technical architecture from the business perspective , The system designed in this way will not deviate from the business itself , Refactoring is also less likely .
Native mode : It should be developed according to the original idea . for instance ,PaaS The development path of SaaS->PaaS、IaaS->PaaS、 Native PaaS Three , So which would be better ? I believe most people will choose native PaaS . Take car building , If you can't build a wheel, put it on the market , And you have to have a car that can run .

4.9 The gap theory

As early as 1991 year Jeffery Moore According to the characteristics of high-tech industry and high-tech enterprise life cycle , The famous “ The gap theory ”. This theory is based on “ Innovation communication ”, Divide the life cycle of innovative technologies and products into five stages : innovator (Innovator)、 Early users (Early adopters)、 The early masses (Early majority)、 Late mass (Late majority)、 Laggard (Laggard).

Kubernetes stay 2017 The end of the year became the de facto standard for container layout , After that, the cloud primary ecology with its core continued to explode , It can be said that the gap has been crossed in the communication cycle , Get into Early majority The early mass stage , Start to occupy the mainstream market with great potential .
image.png

4.10 Flywheel theory

The flywheel effect is to make a stationary flywheel turn , At first you have to put a lot of effort into it , Push again and again , It's hard to make every turn , But every lap is not in vain , The flywheel will turn faster and faster . After reaching a certain critical point , The gravity and momentum of the flywheel will be part of the driving force . At this time , You don't have to work harder , The flywheel will still turn fast , And keep turning .

The flywheel effect is actually a compound interest effect , Let's say AWS The rise of, for example , AWS The three pillars of the business are the key to starting the flywheel effect :
It's worth it prime Member services , Every year just 99 dollar , You can enjoy a lot of value-added services ;
Markerplace Third party seller platform , Except for Amazon's own products , Other sellers can also enter Amazon to sell their products directly ;
AWS The cloud service , Its main function is to provide cloud services to large and small enterprises , Whether you're a big company or a small business , You can put your whole set of IT The system is built on Amazon cloud services , Stable performance .
image.png

5 . Cloud native core technology

Cloud native technology is developing very fast , Since the concept of cloud Nativity was put forward , Every year, new technologies emerge in an endless stream , This chapter mainly introduces various cloud native open source technologies .

5.1 Operation and maintenance technology

From template technology to configuration technology , And then to programming technology , The flexibility of operation and maintenance has been enhanced step by step . Template technology is too rigid , Can't be abstracted into real world objects ; The programming technique is flexible , But the complexity is very high , Added a lot of uncontrollable factors , The operation and maintenance cost is very high . therefore , Understand from my point of view , Dynamic configuration technology will gradually replace template technology in the future , The mainstream .

So it's good to have strict language , It's better to use flexible and versatile language ? I think it has something to do with the scenarios in which it is used , Blindly unifying just obliterates the rich and colorful business , Practice “ Universal is useless ” The theory of .

5.1.1 Template technology

5.1.1.1 YAML

YAML Is a high readability , The format used to express data serialization . stay Kubernetes in , Facing the final state 、 Data driven and declarative API , All through YAML To reflect .

however YAML Can't embody the object-oriented design idea , It's hard to put all kinds of flat YAML The pieces are connected , It is also impossible to clearly infer the development path of the transaction . And in YAML Embedded in JSON And other scripting ways , It's also turning the language into a lame universal language . In order to solve YAML A series of questions about , The community gradually developed various enhancements YAML Technology , Such as dynamic configuration and operation and maintenance framework . If Kubernetes It's the operating system of the future , that YAML It's the assembly language of the future .

Official website :https://yaml.org/

5.1.1.2 Helm

Helm yes Kubernetes Software package management tools . But apparently , It doesn't just want to be a package management tool , It also includes template rendering 、 Simple dependency configuration .

Helm It still continues YAML The shortcomings of , It's just simple YAML Piled together . At the same time, the debugging cost of complex template syntax is very high , For example, various process control structures combined with space indentation problem , It's a disaster for people with bad eyes .

Official website :https://helm.sh/

5.1.1.3 KUDO

Kubernetes Universal Declarative Operator, Provides a way to build product level through declarative Kubernetes Operator. in the light of Kubernetes In addition to some simple automation enhancements to the workload , There are also more complex scenarios that need to be addressed manually , and KUDO Is a way to help developers fully automate .

KUDO The structure and structure of the package Helm similar , But in Helm On the basis of this, we added the execution plan arrangement of resources , The choreographed action is relative to Helm Only Apply , Also added Delete、Toggle etc. .

Official website :https://kudo.dev/

5.1.1.4 MetaController

Metacontroller Is a custom controller encapsulates most of the basic functions required for Kubernetes Extended services for . When you pass Metacontroller Of API To create a custom controller , You just need to provide a business logic function in your controller . These business logic functions will pass through webhooks The way to trigger .

MetaController It seems that the configuration is simple , But I want to solve the business problems by technical means , And the solution is limited , At present, there are mainly two means :

One is to build a controller of composite objects for a group of objects ; The second is to add new behaviors to existing objects .

Official website :https://metacontroller.app/

5.2.2 Configuration Technology

5.2.2.1 CUE

CUE, Pronunciation is Q , Is a general and constraint based strongly typed language , Designed to simplify the tasks involved in defining and using data .CUE Influenced by many languages , for example BCL、GCL、LKB、Go、JSON、Swift、Typescript、Javascript、Prolog、Jsonnet、HCL、Flabbergast、Nix、JSONPath、Haskell、Objective-C and Python etc. .

CUE Cloud configuration and related systems are considered in the design , But not limited to this domain . It derives its formalism from relational programming languages , meanwhile CUE Continuing the JSON The idea of superset , The key innovation in technology is the implementation of type design based on set theory , Can be said to be BCL An open source implementation of ideas . at present CUE The ecology is not very strong yet , There is no supporting development tool , But fortunately, many of Ali's teams are actively developing it .

Official website :https://cuelang.org/

5.2.2.2 Jsonnet

Jsonnet yes Google An open source configuration language , For making up JSON The exposed short board , It's fully compatible JSON , And added JSON Some of the features we don't have , Including comments 、 quote 、 Arithmetic operation 、 Conditional operators 、 Arrays and objects drill down 、 Introduced function 、 local variable 、 Inheritance, etc ,Jsonnet The program is compiled to be compatible with JSON Data format . Simply speaking Jsonnet It's the enhanced version JSON .

Jsonnet Its ecology is relatively perfect , No matter what Jsonnet The file or Libsonnet There are development tools , And there's open source UI Components . at present Promethus and Kubeless They all use the dynamic configuration language .

Official website :https://jsonnet.org/

5.2.2.3 HCL

HCL yes HashiCorp Build configuration language .HCL The goal is to build a man-machine friendly structured configuration language , To use with command line tools , But specifically for DevOps Tools , The server etc. .HCL It's also fully compatible JSON . in other words JSON Can be used as expected HCL A fully valid input to the system of . This helps to make the system interoperable with other systems .

Official website :https://github.com/hashicorp/hcl

5.2.2.4 Kusion

Kusion It is mainly a high-level special language and tool chain based on cloud native infrastructure , Outside the immutable business image "Compile to Cloud" Full stack support for .Kusion from KCL Language and tool chain ,KusionCtl Tools ,Kusion-Models SDK And OCMP The definition of practice consists of four parts .

KCL Is a specific configuration definition 、 Dynamic strongly typed configuration language for verification , Focus on serving configuration & policy programing scene , To serve the cloud native configuration system as the design goal , But as a configuration language, it is not limited to the cloud native domain .KCL Absorbed the declarative form 、OOP The conceptual design of programming paradigm , A lot of optimization and function enhancement have been carried out for cloud native configuration scenarios .

Kusion Developed internally by Ali , It's not open source yet .

5.1.3 Programming technology

5.1.3.1 Operator

Operator yes CoreOS The framework is designed to simplify the management of complex stateful applications , It's a controller that senses the state of an application , By extending the Kubernetes API To automatically create 、 Manage and configure application instances .

One Operator Projects generally have to include CRD and Controller,Webhook It's optional . if Kubernetes yes " operating system " Words ,Operator yes Kubernetes The first tier application of , Use Kubernetes " Expand resources " Interface to provide services to higher level users .Operator The main ways to realize this method include OperatorSDK and KubeBuilder , at present KubeBuilder It is used more in Ali .

KubeBuilder:https://github.com/kubernetes-sigs/kubebuilder
OperatorSDK:https://github.com/operator-framework/operator-sdk

5.1.3.2 OperatorPlatform

Hope to design a universal Operator Platform to solve native Operator All kinds of problems , The core goals of this platform include :
simplify 、 Standardization Operator To write ( Multilingual 、 Simplify the framework 、 Lower the user threshold );
sinking Operator Core competencies 、 Unified control ( The center controls all users Operator);
Improve users Operator performance ( Horizontal expansion 、 Multi cluster 、 Thin cache );
control Operator Gray scale and the risk of running ( Perfect monitoring 、 Grayscale rollback capability 、 Control the blast radius 、 Access control , Access restrictions ).

OperatorPlatform Developed internally by Ali , It's not open source yet .

5.1.3.3 Pulumi

Pulumi It's an open source project with architecture as code , Containers can be created and deployed on any cloud , No server function , The easiest way to host cloud software for services and infrastructure .Pulumi The concept of infrastructure as code and immutable infrastructure is adopted , And let you from your favorite language ( instead of YAML or DSL) Get automation and repeatability advantages in .

Pulumi At the center of is a cloud object model , Combine with runtime to learn how to write programs in any language , Understand the cloud resources needed to execute them , Then plan and manage your cloud resources in a powerful way . This cloud runtime and object model is essentially a language 、 Cloud neutral , That's why we can support so many languages and cloud platforms .

Official website :https://www.pulumi.com/

5.1.3.4 Ballerina

Ballerina Is an open source compiler strongly typed language .Ballerina Is an open source programming language and platform , It's easy for application programmers in the cloud age to write software that works properly .Ballerina It's a combination of language and platform design , Agile and easy to integrate , Designed to simplify integration and microservice programming .

Ballerina Is a language designed to integrate simplification . Interaction based on sequence diagram ,Ballerina Built in support for common integration patterns and connectors , Including distributed transactions 、 Compensation and circuit breakers . By right JSON and XML First class support for ,Ballerina It can easily and effectively build powerful integration across network terminals .

Official website :https://ballerina.io/

5.1.3.5 CDK8S

CDK8S yes AWS Labs A release uses TypeScript Write a new framework , It allows us to use some object-oriented programming languages to define Kubernetes List of resources ,CDK8S Finally, it's also generated native Kubernetes YAML file , So we can use it anywhere CDK8S To define the running Kubernetes Apply resources .

Official website :https://cdk8s.io/

5.1.3.6 Terraform

Terraform Is a build 、 change 、 And a safe and effective version management infrastructure tool .Terraform Can manage existing and popular service providers as well as customized internal solutions .Terraform Features include : Architecture is code 、 Implementation plan 、 Resource map 、 Change automation, etc .

Official website :https://www.terraform.io/

5.1.4 applied technology

5.1.4.1 OAM

Application centric standards , For building cloud native application platform .OAM Considering the public cloud 、 Solutions for application delivery on private cloud and edge cloud , A general model is proposed , Let each platform show the application deployment and operation and maintenance capabilities in a unified high-level abstraction , Solve the problem of cross platform application delivery .

OAM The core idea of this is as follows :
The first core idea is to make up the components of an application (Component), It may contain a collection of microservices 、 Database and cloud load balancers ;
The second core idea is to describe the operation and maintenance characteristics of applications (Trait) Set , for example , Stretch and Ingress And so on . They are critical to the operation of the application , But in different environments, they are implemented in different ways ;
Last , To translate these descriptions into specific applications , The operation and maintenance personnel use the application configuration (Application Configuration) To combine components and corresponding features , To build a concrete instance of the application that should be deployed

Official website :https://oam.dev/

5.1.4.2 KubeVela

KubeVela Is a simple and easy to use and highly scalable application management platform and core engine .KubeVela Is based on Kubernetes And OAM technology-built . For application developers ,KubeVela Is a very low mental burden of cloud native application management platform , The core function is to let the developer conveniently and quickly in Kubernetes Define and deliver modern microservice applications on , No need to know anything about Kubernetes Details related to itself . At this point ,KubeVela Can be thought of as a cloud native community Heroku.

Official website :https://oam.dev/

5.1.4.3 OpenKruise

OpenKruise yes Kubernetes A standard extension of , It can work with native Kubernetes Use , And to manage the application container 、Sidecar、 Image distribution and other aspects provide more powerful and efficient capabilities .OpenKruise Include the following resources :

CloneSet: More efficient 、 Determine controllable application management and deployment capabilities , Support elegant in place upgrade 、 Specify the delete 、 The publishing order can be configured 、 parallel / Gray publishing and other rich strategies .
Advanced StatefulSet: Based on the original StatefulSet Enhanced version on , Default behavior is exactly the same as native , In addition to this, it provides in place upgrades 、 Parallel to release ( Maximum unavailable )、 Release pause and other functions .
SidecarSet: Yes Sidecar Unified management of containers , In the meet Selector Conditions of the Pod Inject the specified Sidecar Containers .
UnitedDeployment: Through multiple Subset Workload Deploy applications to multiple zones .
BroadcastJob: To configure a Job, In the cluster, all of the Node One of them is running Pod Mission .
Advanced DaemonSet: Based on the original DaemonSet Enhanced version on , Default behavior is the same as native , Besides, it provides grayscale batching 、 Press Node label choice 、 Pause 、 Hot upgrade and other release strategies .

Official website :https://openkruise.io/

5.2 Microservices

5.2.1 BaaS

BaaS It refers to the background services that business applications depend on , It needs to have a directory of services , Users can choose the middleware they want to use , And then through BaaS Plan Rules of choice , After creating the service instance , Re pass BaaS Connector and BaaS Of Endpoint binding . For more principles, please refer to the service center chapter of cloud native application platform .

5.2.1.1 Service Catalog

The service catalog is Kubernetes Incubation projects in communities Kubernetes Service Catalog project , Designed to access and manage third party provided Service Broker , send kubernetes Applications hosted on can use Service Broker The external services represented by .

Official website :https://github.com/kubernetes-sigs/service-catalog

5.2.1.2 Open Service Broker

Open Service Broker API The project enables independent software vendors to ,SaaS Providers and developers can easily run Cloud Foundry and Kubernetes Support services are provided by the workload on the cloud native platform . The specification has been adopted by many platforms and thousands of service providers , It describes a simple set of API Endpoint , Can be used to provide , Acquiring and managing service products . Participants in the project come from Google,IBM,Pivotal,Red Hat,SAP And many other leading cloud companies .

Official website :https://www.openservicebrokerapi.org/

5.2.1.3 Spring Cloud Connector

Spring Cloud Connector For cloud platform based on JVM Provides a simple abstraction , Binding services and deployment information can be found at run time , It also supports the registration of discovered services as Spring Bean . It's based on the plug-in model , So that the same compiled application can be deployed locally or on any number of cloud platforms , And pass Java Service provider interface (SPI) Support custom service definition .

Official website :https://cloud.spring.io/spring-cloud-connectors/

5.2.2 Service Mesh

Service Mesh Service grid , The purpose is to solve the problem of communication and governance between services after the microservice of system architecture . The service grid consists of Sidecar Node composition .

5.2.2.1 Istio

Istio Provides a simple way to network deployed Services , The network has load balancing 、 Service room Certification 、 Monitoring and other functions , Without any changes to the code of the service .Istio The ability of :
Istio For container or virtual machine environments ( especially K8s), Compatible with heterogeneous architecture .
Istio Use Sidecar( Side car mode ) The network of proxy services , There is no need to make any changes to the business code itself .
HTTP、gRPC、WebSocket and TCP Automatic load balancing of traffic .
Istio Through rich routing rules 、 retry 、 Failover and fault injection , You can fine-grained control traffic behavior ; Support access control 、 Rate limits and quotas .
Istio An automatic measure of all traffic in and out of a cluster 、 Logging and tracking .

at present AliMesh and ASM They all use Istio programme .

Official website :https://istio.io/

5.2.2.2 linkerd

linkerd It's a transparent service grid , The goal is to discover services transparently 、 Load balancing 、 Fault handling , Instrumentation and routing are added to all inter service communications , Make modern applications safe and reliable , Without intruding into the implementation of the application itself .

linkerd As a transparent HTTP/gRPC/thrift/ Etc , Usually can be added to an existing application with minimal configuration , No matter what language these applications are written in .linkerd Can run with many common protocols and service discovery back ends , Include Mesos and Kubernetes Wait for the scheduled environment .

Official website :https://linkerd.io/

5.2.3 Micro Service Framework

5.2.3.1 Dapr

Dapr It's open source developed by Microsoft 、 portable 、 Event driven application runtime , It makes it easy for developers to build resilient 、 Stateless and stateful applications of microservices , These applications run on top of the cloud and the edge .Dapr As Sidecar It's more like the runtime of microservices , To provide a program with functions that it does not have .Dapr The main functions are as follows :
The service call : Between flexible service and service (service-to-service) Calls enable method calls on remote services , Including retrying , No matter where the remote service is running in a supported hosting environment .
State management : By keying / State management of value pairs , It's easy to write long runs 、 High availability stateful Services , And stateless services in the same application .
Publish and subscribe to messages between services : Enable event driven architecture to simplify horizontal scalability , And make it have the ability of fault recovery .
Event driven resource binding : Resource binding and triggers are further built on the event driven architecture , Through any external resource ( Such as a database 、 queue 、 file system 、blob Storage 、webhooks etc. ) Receive and send events , To achieve scalability and resilience .
Virtual characters : Patterns of stateless and stateful objects , Make concurrency simple through method and state encapsulation .Dapr In its virtual role (Virtual Actors) The runtime provides a lot of functionality , Including concurrency 、 state 、 Role activation / Disabled lifecycle management and timers and reminders to wake up roles .
Distributed tracking between services : Use W3C Tracking context (W3C Trace Context) standard , It is easy to diagnose and observe inter service calls in production , And push the event to the tracking and monitoring system .

Official website :https://dapr.io/

5.2.3.2 Dubbo

Dubbo It's Alibaba's open source based on Java A high performance RPC( A remote call ) Distributed service framework (SOA), Committed to providing high performance and transparency RPC Remote service invocation scenarios , as well as SOA Service governance solution . At present, Ali's internal use of HSF Will gradually be Dubbo Instead of .

Official website :http://dubbo.apache.org/

5.2.3.3 Spring Cloud

Spring Cloud For developers to provide a distributed system ( Such as configuration management 、 Service discovery 、 Circuit breaker 、 Intelligent routing 、 The micro broker 、 Control bus 、 Disposable Token、 Global lock 、 Decision making campaign 、 Distributed session and cluster state ) Operating development tools . Use Spring Cloud Developers can quickly implement these patterns .

At present, Ali is based on native Spring Cloud The framework and Ali middleware have been enhanced , be called Spring Cloud Alibaba .
Spring Cloud:https://spring.io/projects/spring-cloud
Spring Cloud Alibaba:https://spring.io/projects/spring-cloud-alibaba

5.3 Serverless

Serverless Essentially, it doesn't need to be aware of the server , It can be divided into Kubernetes Serverless、App Serverless、BaaS Serverless、FaaS Serverless、Data Serverless etc. .

Serverless In the non container age , In the field of big data and artificial intelligence , It has been developed to a certain extent , Ali's interior, for example ODPS、TPP Such as platform ; But the advent of the container age , It's accelerated a lot Serverless The development of .

also ,Serverless In the front-end field development is very coquettish , There are all kinds of easy to use Serverless platform .

5.3.1 Cloud Events

CloudEvents It's a norm , Used to describe event data in a common format , To provide cross service 、 Interaction between platform and system .

The event format specifies how to serialize using certain encoding formats CloudEvent. Support the compatibility of these codes CloudEvents The implementation must follow the coding rules specified in the corresponding event format . All implementations must support JSON Format .

Official website :https://cloudevents.io/

5.3.2 Serverless Framework

Serverless Framework It is a very popular serverless application framework in the industry , Developers do not need to care about the underlying resources to deploy the complete available Serverless Application Architecture .Serverless Framework With resource choreography 、 Automatic telescopic 、 Event driven capabilities , Covering code - debugging - test - Deployment and other life cycles , Help developers through linkage cloud resources , Build quickly Serverless application .

Official website :https://github.com/serverless/components/blob/master/README.cn.md

5.3.3 FaaS Serverless

5.3.3.1 Kubeless

Kubeless It's based on Kubernetes Of Serverless frame , Allows you to deploy a small amount of code , Without worrying about the underlying infrastructure pipeline . It USES Kubernetes Automatic extension of resource provision 、API route 、 monitor 、 Troubleshooting and other functions .Kubless There are three core concepts :
Function: Represents the user code that needs to be executed , Also include runtime dependencies 、 Build instructions, etc ;
Trigger: Represents the event source associated with the function . If you compare the event source to the producer , Functions are compared to executors , So triggers are the bridge between the two ;
Runtime: Represents the environment on which the function runs .

Official website :https://kubeless.io/

5.3.3.2 Nuclio

Nuclio It's about focusing on data ,I/O And compute intensive workloads “ There is no server ” frame . It is associated with Jupyter and Kubeflow And popular data science tools are well integrated ; Support a variety of data and streaming media sources ; And support the adoption of CPU and GPU perform .Nuclio Item in 2017 Year begins , And it's been growing rapidly . Many startups and businesses now use Nuclio.
Jupyter:https://jupyter.org/
Kubeflow:https://www.kubeflow.org/
Officer, https://fission.io/ network :https://nuclio.io/

5.3.3.3 Fission

Fission It's a private cloud service provider Platform9 Leading open source serverless product , It helps kubernetes Flexible and powerful scheduling ability to complete the container management and scheduling work , And focus on FaaS Function development , Its development goal is to become AWS lambda Open source alternatives to .Fission There are three core concepts :
Function: Represents a piece of code written in a specific language that needs to be executed .
Trigger: Used to correlate functions and event sources . If you compare the event source to the producer , Functions are compared to executors , So triggers are the bridge between the two .
Environment: The specific language environment used to run user functions .

Official website :https://fission.io/

5.3.3.4 OpenFaas

OpenFaas Is a popular and easy-to-use service free framework ( Although it is not as good as OpenWhisk). But it's not like OpenWhisk So popular , And the code is submitted on an individual basis . In addition to the contribution of individual developers in their spare time ,VMWare And hired a team to maintain it full-time OpenFaas.

Official website :https://www.openfaas.com/

5.3.3.5 OpenWhisk

OpenWhisk It is a mature non service framework , And get Apache Foundation and IBM Support for .IBM Cloud function services are also based on OpenWhisk Built . The main contributors are IBM The employees' .OpenWhisk Take advantage of CouchDB、Kafka、Nginx、Redis and ZooKeeper, There are many underlying components , So it adds a certain amount of complexity .

Official website :https://openwhisk.apache.org/

5.3.3.6 FnProject

Fn It's a container that can run on the user side or in the cloud, a native server free computing platform . It needs to use Docker Containers . The main contributors to the project come from Oracle. There's another one called Fn Flow New functions , It can be used to choreograph multiple functions , similar OpenWhisk.

Official website :https://fnproject.io/

5.3.3.7 Serverless Devs

Serverless Devs It's Alibaba's first open source Serverless Developer Platform , It is also the first mainstream support in the industry Serverless service / Framework of cloud native lifecycle management platform . Through this platform , Developers can experience multi cloud with one click Serverless product , Rapid deployment Serverless project .
image.png
Official website :https://www.serverless-devs.com/#/home

5.3.4 App Serverless

5.3.4.1 Knative

Knative It's Google open source Serverless Architecture , Designed to provide a set of easy to use Serverless programme , hold Serverless Standardization . At present, the main companies involved are Google、Pivotal、IBM、Red Hat,2018 year 7 month 24 It's just been released today , At present, it is still in the stage of rapid development .Knative Is to solve the container as the core of Serverless Application building 、 Deployment and operation problems . Besides ,Knative The original Build The function has been abandoned , By Tekton Instead of .

Official website :https://knative.dev/

5.4 CI/CD

5.4.1 GitOps

GitOps It's fast 、 A safe way , It can be maintained and updated by development or operation and maintenance personnel Kubernetes Or other complex applications in declarative choreography frameworks .GitOps The four principles are as follows :
Describe the whole system declaratively ;
The target state of the system passes through Git Version control ;
Changes to the target status are automatically applied to the system after approval ;
Drive convergence & Report deviations .

There is no control system , Need to temporarily use the black screen operation of the students , You can choose GitOps ; If there's a control system , Not recommended GitOps , Otherwise you need to ensure that the controlled database 、Git The file of 、Kubernetes The consistency of the state of the runtime file , There is an extra link in the middle , The probability of making mistakes is high .

5.4.2 Argo

Argo It's a cloud native workflow / Assembly line engine ,Argo Workflow to CRD Formal realization .Argo Every step of the workflow , It's all a container . A multi-step workflow is modeled as a sequence of tasks , Or based on DAG To capture dependencies between tasks .Argo It mainly includes the following functions :
Argo Workflows: Declarative workflow engine ;
Argo CD: declarative GitOps Continuous delivery ;
Argo Events: Event based dependency management ;
Argo Rollouts: Support grayscale 、 Blue green deployment CR .

because Argo Every step of is Pod , The server is extremely resource intensive , For production level business systems , It needs to be used with caution .

Official website :https://argoproj.github.io/

5.4.3 Tekton

Tekton Is a powerful and flexible Kubernetes Native framework , Used to create CI/CD System . By abstracting out the underlying implementation details , Allow developers to build across cloud or local systems 、 Testing and deployment .Tekton The overall architectural abstraction is great , Basically, it can solve the layout problem under all containers .

But again, every step is Pod , Follow Argo It takes up a lot of resources .

Official website :https://github.com/tektoncd

5.5 Cluster management

5.5.1 Federation

Kubernetes Federation( hereinafter referred to as KubeFed) Allows you to host a group of API To coordinate multiple Kubernetes Configuration of cluster . KubeFed The purpose is to provide a mechanism for , Used to express which clusters should be managed and how they should be configured .KubeFed The mechanisms provided are intentional underlying mechanisms , Designed for more complex multi cluster use cases ( For example, deploying multi geographic applications and disaster recovery ) Lay the foundation .

Official website :https://github.com/kubernetes-sigs/kubefed

5.5.2 K3S

K3S It's a lightweight Kubernetes, It's easy to install , Binary packages are less than 40MB, It only needs 512MB RAM You can run . It is very suitable for Edge、IoT、CI、ARM Such as the scene .K3S yes Rancher A simplification of production 、 A lightweight K8s , You can see from the name that ,K3s Than K8s Something is missing .

Official website :https://k3s.io/

5.5.3 K9S

K9S Provides a terminal UI With your Kubernetes Clusters interact . The purpose of this project is to simplify browsing , The process of observing and managing applications .K9S Keep an eye on Kubernetes Change of , And provides subsequent commands to interact with the resources you observe . K9S yes A favorite of administrators “ Single screen ” Utilities ,K9S Provides a curses Full screen terminal for UI , Can be with your Kubernetes Clusters interact .

Official website :https://k9scli.io/

5.5.4 Minikube

Minikube Is an easy to run locally Kubernetes Tools for , You can easily create a stand-alone version in a virtual machine on your laptop Kubernetes colony . Easy to try Kubernetes Or use Kubernetes Daily development .Minikube It's equivalent to a local Kubernetes A single node , We can create Pods To create the corresponding service .

Official website :https://minikube.sigs.k8s.io/

5.5.5 OpenYurt

OpenYurt The main “ Cloud edge integration ” Concept , Depending on the Kubernetes Powerful container application choreography ability , Satisfy the cloud - Edge integrated application distribution 、 deliver 、 And the demands of control .OpenYurt It can help users solve the problem in the mass side 、 Large scale application delivery on end resources 、 Operation and maintenance 、 The problem of control , And provide a central service sink channel , To achieve seamless docking with edge computing applications . In the design OpenYurt At the beginning of the , We put a lot of emphasis on keeping the user experience consistent , It will not increase the operation and maintenance burden of users , Make it really convenient for users to “Extending your native kubernetes to edge”.

Official website :https://openyurt.io/en-us/

5.6 PaaS

5.6.1 OpenShfit

OpenShift Red hat is the cloud development platform as a service (PaaS). The free and open source cloud computing platform enables developers to create 、 Testing and running their applications , And they can be deployed to the cloud . Openshift Support a wide range of programming languages and frameworks , Such as Java,Ruby and PHP etc. . In addition, it also provides a variety of integrated development tools, such as Eclipse integration,JBoss Developer Studio and Jenkins etc. .OpenShift Just deploy Operator application , And put forward Operator maturity , Have their own Operator Application definition template . Compared with other container platforms , It's still lighter .

Official website :https://www.openshift.com/

5.6.2 CloudFoundry

Cloud Foundry yes Pivotal The company developed the industry's first open source PaaS Cloud platform , It supports multiple frameworks 、 Language 、 Runtime environment 、 Cloud platform and application services , Enables developers to deploy and extend applications in seconds , Don't worry about any infrastructure issues .

Cloud Foundry and Spring Cloud Connector combination , about Spring The application's service dependency is well supported . however Cloud Foundry It's quite heavy , Before the container age , Operation and maintenance is very difficult , Use... With caution .

Official website :https://www.cloudfoundry.org/

5.6.3 KubeSphere

KubeSphere yes QingCloud The development is based on Kubernetes Distributed build 、 multi-tenancy 、 Multi cluster 、 Enterprise open source container platform , It has powerful and perfect network and storage capabilities , And through the simple human-computer interaction to provide a perfect multi cluster management 、CI / CD 、 Micro service governance 、 Application management and other functions , Help businesses in the cloud 、 Build quickly on heterogeneous infrastructure such as virtualization and physical machines 、 Deployment and operation and maintenance container architecture , Realize agile development and full life cycle management of application .

KubeSphere It can be described as the work of conscience of the industry , The interactive experience is great , The function is perfect too , and App Matrix Almost took on QingCloud Operation and maintenance of all business applications and cloud products . The current Alibaba cloud products are basically vertical operation and maintenance systems .

Demo(demo1 / Demo123):https://demo.kubesphere.io/
Official website :http://kubesphere.qingcloud.com/

5.6.4 Azure

Azure It's an operating system based on cloud computing developed by Microsoft , Original name “Windows Azure”, and Azure Services Platform equally , Microsoft's “ Software and services ” The name of the technology .Microsoft Azure The main goal is to provide a platform for developers , Help develop servers that can run in the cloud 、 Data Center 、Web and PC On the application . in addition , adopt Azure Of Service Fabric , Easy to develop 、 pack 、 Deploy and manage scalable and reliable microservices ( Or non microservices ).

Official website :https://azure.microsoft.com/zh-cn/

5.6.5 Anthos

Anthos yes Google Developed by Kubernetes The hybrid cloud at the core / Multi cloud management platform , The main function is to protect customers' network connections and applications , And in the form of container deployment , Provide cloud service support capability . It was developed because customers wanted to use a single programming model , This gives them the choice and flexibility to transfer their workload to Google Cloud And other cloud platforms ( Such as Azure and AWS) Without making any changes .

Official website :https://www.anthos.org/

5.6.6 Heroku

Heroku yes Salesforce Its cloud service provider , Provide convenient and convenient cloud services , Server, such as 、 database 、 monitor 、 Calculation, etc . And it comes with a free version , This makes us who usually want to make some small things provide great convenience , Although it is sometimes long and limited by downtime , But it's enough for personal applets .

Official website :https://www.heroku.com/

5.6.7 Crossplane

Crossplane yes Upbond The company developed an open source multi cloud platform control panel , Used across environments 、 colony 、 Regions and clouds , Manage your cloud native applications and infrastructure .Crossplane Can be installed into existing Kubernetes In the cluster , To add a hosted service supply , Or as a dedicated control plane for multi cluster management and workload scheduling .

at present ,OAM and Crossplane The community is working together to build an open community focused on standardized applications and infrastructure .

Official website :https://crossplane.io/

5.6.8 Rancher

Rancher It's a complete software stack for teams that adopt containers . It solves the problem of managing multiple Kubernetes The operational and security challenges of clusters , Also for DevOps The team provides integration tools for running containerized workloads .

Rancher Of Rio It's a kind of MicroPaaS , Can be in any standard Kubernetes Layering on the cluster . Users can easily deploy services to Kubernetes And automatically get continuous delivery ,DNS,HTTPS, route , monitor , Automatic extension ,Canary Deploy ,Git Trigger builds and so on . All this just needs to be Kubernetes Clusters and Rio CLI .

Official website :https://rancher.com/

5.7 Big data and AI

5.7.1 Kubeflow

Kubeflow It's a machine learning tool library released by Google ,Kubeflow The purpose of the project is to make Kubernetes The machine learning on becomes easier 、 convenient 、 Scalable , The goal is not to rebuild other services , It's a simple way to find the best OSS Solution .

Official website :https://www.kubeflow.org/

5.7.2 Fluid

Fluid Is an open source cloud native infrastructure project . Driven by the background of separation of computing and storage ,Fluid The goal is to AI And big data cloud native application provides a layer of efficient and convenient data abstraction , Abstract data from storage , In order to achieve the following purposes :
Through data affinity scheduling and distributed caching engine acceleration , Realize the fusion between data and computing , So as to speed up computing access to data ;
Managing data independently of storage , And through Kubernetes Resource isolation from the namespace of , Achieve data security isolation ;
Combine data from different stores to perform operations , Thus, it has the opportunity to break the data island effect caused by the difference of different storage .

Official website :https://github.com/fluid-cloudnative/fluid

5.7.3 KubeTEE

KubeTEE Is a cloud native large-scale clustering confidential computing framework , It aims to solve the problem in cloud native environment TEE Trusted execution environment technology specific from development 、 Issues related to deployment to the overall operation and maintenance process .KubeTEE It's how to use it in the cloud native scene TEE A whole set of solutions for Technology , Including multiple frameworks 、 A collection of tools and microservices .

Official website :https://github.com/SOFAEnclave/KubeTEE

6 . Problems with cloud Nativity

6.1 Is stateless really everything ?

Although we advocate that applications should be transformed into stateless applications , for example Kubernetes Medium Deployment Is specifically for stateless applications , Some state machine frameworks also recommend Pipeline It should also be designed to be stateless , also FaaS Medium Function It's basically stateless , But is stateless really everything ? For example, some need to search the database for a large number of calculations QPS Of Function, If you can cache data locally , Would it be better ?

6.2 One access , Is it really feasible to run everywhere ?

It can be said that the cloud native technology stack is constantly moving up , Getting closer to business . For example, application operation and maintenance , We wanted to create a technology , Take it all , As long as the middleware is connected to an application platform , With this application platform, it can be exported to various public and private clouds . But through a long period of practice , We find that different customers have different requirements , And there's the difference between the various cloud infrastructures , It's basically hard “ One access , Run everywhere ”. Blindly trying to unify , It's just going to get stuck in a big puddle where everything doesn't work .

6.3 Where is the Taiwan disaster ?

Since China Taiwan theory can be put forward , It must be in line with the business background at that time . So why is the later practice not so ideal ? In my humble opinion , The main problem is the ingrained To C gene , It's hard to change with a big, comprehensive business theory . We need to continue to explore , From two aspects of business and technology to improve and improve the middle ground theory .

6.4 What customers want is different from what they say ?

You'll find that , When the customer decides to buy your product , I talk to you about some big functions , For example, live in different places 、 unitized 、 Multi rent isolation 、 Limits, downgrades, etc ; But after buying it back , The discovery uses some basic functions . This is because the customers who decide to buy and use are not the same people , So we must dig deep into what users of products want , Only in this way can we establish a mechanism for long-term cooperation .

6.5 Can the same application model really dominate the world ?

Each application model needs corresponding platform support , Application is a very business oriented layer , It's not just cloud based applications , And a variety of industry applications . Different business scenarios , The usage and delivery process of the application are different . in addition , Basically every platform has its own application model , So the application model itself serves a certain application platform , for example OpenShift、CloudFoundry、KubeSphere All of them are based on the original Kubernetes Application model after concept abstraction . therefore , The same application model , It can only be used in a vertical scene .

7 . The future of cloud native

The development of cloud native technology has become an irresistible trend , At present, it is the best time for cloud native technology to be widely used in commercial products . After the change of technology system , It is bound to usher in a change in the business model , We all know that the future will change , How to seize the opportunity of cloud native , Find the important air outlet of the times ?

The only way out is to break down the old system and cognition .

team introduction : Alibaba cloud's cloud native application platform uses containers and K8s As a breakthrough , In a distributed 、 Microservices 、 Service governance 、 Service Grid 、 news 、PaaS Layout product technology for entry point , Facing the industry customers, undertaking to accelerate the digital transformation and upgrading of enterprises , Help enterprise customers and developers embrace cloud computing 、 Enjoy the bonus of Cloud Computing . Defining R & D for the future 、 Operation and maintenance mode , Push Serverless、 Functional computing and other modern architecture evolution , To form full technical competitiveness of products , Become a leader in the cloud native era .

Link to the original text
This article is the original content of Alibaba cloud , No reprint without permission .

版权声明
本文为[Aliyun yunqi]所创,转载请带上原文链接,感谢
https://chowdera.com/2020/12/20201202101046418n.html