Skip to main content

What exactly is cloud native?

 Cloud Native is a compound word. Let's break it down into the words cloud and native.

"Cloud" is an online network. We all know that traditional applications run on local servers, while traditional applications deployed locally may require downtime and update, and cannot be dynamically expanded, etc., while "cloud" means that applications run on a distributed cloud environment, support frequent changes and continuous delivery.

'Native' means that the application is designed for the cloud with the elastic and distributed nature of the cloud platform in mind. 

Then with the continuous development of cloud-native technology, its definition is constantly iterated and updated. Different communities and companies have different understandings and definitions of cloud native. If you are interested, you can take a look at the development process of cloud-native. 



Four Key Points of Cloud Native

Cloud native can be simply understood as: cloud native = microservices + DevOps + continuous delivery + containerization


Microservice

Microservice is software architecture. Using the microservice architecture, a large application can be divided into multiple independent and autonomous microservices according to functional modules. Each microservice only implements one function and has a clear boundary.

Using a microservices architecture can bring us the following benefits:

  1.     1) Independent deployment of services: Each service is an independent project that can be deployed independently, does not depend on other services and has low coupling.
  2.     2) Quick start of the service: After the split, the service startup speed is much faster than before the split, because there are fewer dependent libraries and less code.
  3.     3) More suitable for agile development: Agile development takes the evolution of users' needs as the core and adopts an iterative and step-by-step approach. Service splitting can quickly release a new version. To modify which service, only the corresponding service needs to be released, and there is no need to re-release it as a whole.
  4.     4) Dedicated responsibilities, and a dedicated team is responsible for dedicated services: When the business develops rapidly, there will be more and more R&D personnel, each team can be responsible for the corresponding business line, and the splitting of services is conducive to the division of labor between teams.
  5.     5) Services can be dynamically expanded on demand: When a service has a large number of visits, we only need to expand the service.
  6.     6) Code reuse: Each service provides a REST API, all basic services must be extracted, and many underlying implementations can be provided in the form of interfaces.

Containerized


Container technology is the core technology of cloud native, and container is a virtualization technology that is lighter than virtual machines. Can provide us with a portable, reusable way to package, distribute and run programs.
The basic idea of ​​a container is to package all the software that needs to be executed into an executable package. For example, package a Java virtual machine, a Tomcat server, and the application itself into a container image. Users can use this container image to launch containers and run applications in an infrastructure environment.

Docker is currently the most widely used container engine. Containerization provides an implementation guarantee for microservices and plays an application isolation role. K8S is a container orchestration system for container management and load balancing between containers. Both Docker and K8s are written in Go. , (The full name of K8s is Kubernetes, which consists of the first letter K, the ending letter s, and the 8 letters in the middle, so it is referred to as K8s).

The benefits of container technology are as follows.
   
  1. More agile application creation and deployment process: Using container images of applications is easier and more efficient than virtual machine images.
  2. Sustainable development, integration, and deployment: With the immutability of container images, container image versions can be quickly updated or rolled back for reliable and frequent container image builds and deployments.
  3.  Provide environment consistency: Standardized container images can ensure the consistency of development, test, and production environments without having to worry about the nuances of different environments.
  4.  Provide application portability: Standardized container images can ensure that applications run on various operating systems or cloud environments such as Ubuntu and CentOS.
  5.  Provides the foundation for the loosely coupled architecture of the application: The application can be broken down into smaller independent components that can be easily composed and distributed.
  6.  Resource utilization is higher.
  7.  Resource isolation is achieved: the isolation between container applications and the host, and the isolation between container applications can provide certain security guarantees for running applications. 
Containers greatly simplify the distribution and deployment of cloud-native applications. It can be said that containers are the cornerstone of cloud-native application development.

DevOps


    DevOps (Development & Operations) is a collaborative process between software developers and IT operations personnel, a collection of working environments, cultures, and practices to efficiently automate software delivery and infrastructure changes process. Through continuous communication and collaboration, developers and operators can deliver applications quickly, frequently, and reliably in a standardized and automated manner.

Cloud-native applications usually contain multiple sub-functional components, and DevOps can greatly simplify the process from development to delivery of cloud-native applications. Realized value delivery.

Continuous Delivery


Continuous Delivery, which is about developing on time and updating without downtime, is a software development method that uses automation to speed up the release of new code. In a continuous delivery process, changes made by developers to an application can be pushed to a code repository or container registry through automation. 

Comments

Popular posts from this blog

40 Redis interview questions for 2021 - 2022

  Redis interview questions 1.What is Redis?. 2. What is the data type of Redis? 3. What are the benefits of using Redis? 4. What are the advantages of Redis over Memcached? 5. What are the differences between Memcache and Redis? 6. Is Redis single-process and single-threaded? 7. What is the maximum storage capacity of a string type value? 8. What is the persistence mechanism of Redis? Their advantages and disadvantages? 9. Redis common performance problems and solutions: 10. What is the deletion strategy of redis expired keys? 11. Redis recycling strategy (elimination strategy)? 12. Why does edis need to put all data in memory? 13. Do you understand the synchronization mechanism of Redis? 14. What are the benefits of Pipeline? Why use pipeline? 15. Have you used Redis cluster? What is the principle of cluster? 16. Under what circumstances will the Redis cluster solution cause the entire cluster to be unavailable? 17. What are the Java clients supp...

8 common methods for server performance optimization

  1. Use an in-memory database In-memory database is actually a database that puts data in memory and operates directly. Compared with the disk, the data read and write speed of the memory is several orders of magnitude higher. Saving the data in the memory can greatly improve the performance of the application compared to accessing it from the disk. The memory database abandoned the traditional way of disk data management, redesigned the architecture based on all data in memory, and made corresponding improvements in data caching, fast algorithms, and parallel operations, so the data processing speed is faster than that of traditional databases. Data processing speed is much faster.       But the problem of security can be said to be the biggest flaw in the memory database. Because the memory itself has the natural defect of power loss, when we use the memory database, we usually need to take some protection mechanisms for the data on the memory in advance, such...

Recursion-maze problem - Rat in the Maze - Game

  package com.bei.Demo01_recursion; public class MiGong {     public static void main(String[] args)  {         //First create a two-dimensional array to simulate the maze         int [][]map=new int[8][7];         //Use 1 for wall         for (int i = 0; i <7 ; i++) {             map[0][i]=1;             map[7][i]=1;         }         for (int i = 0; i <8 ; i++) {             map[i][0]=1;             map[i][6]=1;         }         //Set the bezel         map[3][1]=1;         map[3][2]=1;         //Output         for (int i = 0; i <8 ; i++) {             for (int j = 0; j ...