What is cloud native? Hype or the future of software development?

With the popularity of cloud computing in recent years, one of the words that has spread rapidly is cloud native. So what are the benefits of implementing this cloud native?

The term cloud native originated from the popularity of cloud services such as IaaS, PaaS, and SaaS in recent years. The "default cloud principle" that takes cloud as the default option in IT system construction has been advocated in different systems. The current trend of technology development is not whether to consider using cloud services, but the stage of discussing how to use cloud services.

As early as the mid-2000s when cloud service computing emerged, it was assumed that systems and applications would run in an on-premises environment. In the early days of cloud services there were many cases where systems running in on-premises environments were replaced by cloud services. The use of the cloud has further evolved since then, and the system has been designed to maximize its advantages, but an important premise is that the system uses cloud services from the very beginning.
insert image description here

This cloud-based architecture is referred to as cloud-native when describing it. But what cloud native meant was not clearly defined at the outset.

The Cloud Native Computing Foundation (CNCF) was established in 2015 as a sub-foundation of the Linux Foundation, and a standard definition of cloud native is being developed. With the support of CNCF from many communities and manufacturers, it can be said that the definition of CNCF has gained citizenship.

The Chinese definition of cloud native by CNCF is as follows
insert image description here

Advantages of cloud native

The specific advantages of cloud computing include the following:

  1. By not having to own your own infrastructure, you can transfer the labor cost of operations and the risk of system failure.
  2. Get the resources you need on demand, and resources can expand or contract at will.
  3. Speed ​​up environmental construction.

In addition, the CNCF cloud-native definition also mentions that "cloud-native technology enables engineers to easily make frequent and predictable major changes to the system". As business and social environments change, system and application changes need to be made frequently and rapidly. Quality such as availability and reliability must be maintained even with changes.

Applications that follow cloud-native thinking are designed as collections of small services rather than huge monolithic builds. Individual services are loosely coupled through standardized interfaces, and changes to one service do not affect the entire application. In addition, even if the processing load increases due to the concentration of requests, it is easy to make the service redundant. Availability and reliability can also be maintained by automatically managing the health of the system and automatically recovering from problems.

This cloud-native technology is implemented through containers, and microservices are leveraged as an architecture.

Advancing cloud native

insert image description here
The Cloud Native Trail Map shows the steps CNCF has taken to become cloud native.

Cloud Native Trail Map

  1. Containerization
  2. CI/CD
  3. Orchestration and Application Definition
  4. Observability and analytics
  5. Service Brokers, Discovery and Grids
  6. Network and Policy
  7. Distributed database/distributed storage
  8. Streaming and Messaging
  9. Container registration and runtime
  10. software distribution

Three Steps to Cloud Native

insert image description here

Containerization

insert image description here
Containers are one of the virtual environments, a technology that creates multiple execution environments on one operating system. Unlike virtualization using virtual machines, it does not go through direct system operations, so a simpler environment can be created. Docker containers are by far the most popular technically.

Typically a process executes in a container. So when designing an application, divide the functions and services that make up the application into containers. In other words, containerization means creating an application with a complex configuration of components and services, rather than a single application.

CI/CD

CI/CD stands for Continuous Integration/Continuous Delivery and refers to building a software development environment that allows repeatable source code modifications, container builds, testing, application to each environment, and release to production.

Previously these tasks were performed manually according to the program manual, or using complex and strange scripts. But frequent changes in these ways can result in systems that may compromise reliability and availability.

The CI/CD mechanism can automate the delivery pipeline and ensure quality through testing.

Orchestration & Application

An orchestra is where a variety of players, such as strings, winds, and percussion, play music. Computer system orchestration refers to the automation of various settings, management, and adjustments to ensure that various computer resources and applications work properly. Similar to an orchestra under a conductor, each player plays independently and plays harmonious music.
insert image description here

In cloud-native applications, the application uses the container as the execution unit to configure, orchestrate software solutions, and automatically manage the execution, activation monitoring, and various settings of the container at this time. As an orchestration solution, Kubernetes (K8s) maintained with CNCF is becoming the de facto standard. Cloud vendors such as Google, Amazon, Microsoft, and IBM are helping to introduce orchestration more easily by offering Kubernetes as a management service.

An important technology "container" in cloud services

Containers are one of the virtualization technologies. It eliminates the need for a traditional virtual machine (VM) to satisfy the operating system with a hypervisor and enables the creation of more lightweight virtual environments.
insert image description here

Advantages of containers

  • Lightweight resources , easy to operate, no resources such as guest OS are required.
  • The environment is built quickly , especially the Docker container, which adopts the concept of IaC (Infrastructure as Code), and can set middleware installation and various environment settings.
  • It's easy to scrap and build , and it's easy to prepare resources, plus IaC is easy to scrap and build containers.

The advantage of using these containers is their high DevOps compatibility, which is why they are used in many DevOps implementation environments.

Use of containers

Originally Docker was developed on Linux, but now supports Windows containers as well.

Dependencies such as libraries and runtime required to run an application differ between development and production environments. So when developing with containers, those libraries and runtimes are also packaged in the same container as the application to make sure they work wherever you have them.

Application portability is a big advantage of containers, and arguably a big advantage of using them.

What is container orchestration

insert image description here

A typical example of a container orchestration tool is Kubernetes (K8s) maintained by CNCF. A type of container orchestration that plays a role in automatically tuning computer systems, applications, containers, etc., and also manages containers across multiple servers.

However, the learning cost of Kubernetes is very high, and some people say that it is difficult to build an environment from scratch and operate it by yourself. If a company uses Kubernetes, these problems can be avoided by using managed services provided by cloud providers.

In addition, some services provide convenient interfaces, management tools, and software tailored to your business use case, rather than using Kubernetes as-is. You can take advantage of these benefits with solutions and services such as Red Hat OpenShift and IBM Cloud Paks. Since containers and Kubernetes are open technologies, the risk of vendor lock-in is low, and even if you change vendors in the future, you can reduce the cost and issues of migration.

Summarize

Cloud native is a system or service that presupposes the use of cloud services and environments. In addition to enjoying the benefits of cloud services, you can also build an environment that maximizes the benefits of a cloud environment.

Containers are an important keyword for cloud native. A container is one of the virtual environments, and it is a lighter application runtime environment than a virtual machine. It is expected to be used alongside automatic tuning using container orchestration tools such as Kubernetes, and is a technology that is expected to become more widespread in the future.

Guess you like

Origin blog.csdn.net/qq_20288327/article/details/124037147