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

Defination of the essential properties of operating systems

Define the essential properties of the following types of operating sys-tems:  Batch  Interactive  Time sharing  Real time  Network  Parallel  Distributed  Clustered  Handheld ANSWERS: a. Batch processing:-   Jobs with similar needs are batched together and run through the computer as a group by an operator or automatic job sequencer. Performance is increased by attempting to keep CPU and I/O devices busy at all times through buffering, off-line operation, spooling, and multi-programming. Batch is good for executing large jobs that need little interaction; it can be submitted and picked up later. b. Interactive System:-   This system is composed of many short transactions where the results of the next transaction may be unpredictable. Response time needs to be short (seconds) since the user submits and waits for the result. c. Time sharing:-   This systems uses CPU scheduling and multipro-gramming to provide economical interactive use of a system. The CPU switches rapidl

What is a Fair lock in multithreading?

  Photo by  João Jesus  from  Pexels In Java, there is a class ReentrantLock that is used for implementing Fair lock. This class accepts optional parameter fairness.  When fairness is set to true, the RenentrantLock will give access to the longest waiting thread.  The most popular use of Fair lock is in avoiding thread starvation.  Since longest waiting threads are always given priority in case of contention, no thread can starve.  The downside of Fair lock is the low throughput of the program.  Since low priority or slow threads are getting locks multiple times, it leads to slower execution of a program. The only exception to a Fair lock is tryLock() method of ReentrantLock.  This method does not honor the value of the fairness parameter.

How do clustered systems differ from multiprocessor systems? What is required for two machines belonging to a cluster to cooperate to provide a highly available service?

 How do clustered systems differ from multiprocessor systems? What is required for two machines belonging to a cluster to cooperate to provide a highly available service? Answer: Clustered systems are typically constructed by combining multiple computers into a single system to perform a computational task distributed across the cluster. Multiprocessor systems on the other hand could be a single physical entity comprising of multiple CPUs. A clustered system is less tightly coupled than a multiprocessor system. Clustered systems communicate using messages, while processors in a multiprocessor system could communicate using shared memory. In order for two machines to provide a highly available service, the state on the two machines should be replicated and should be consistently updated. When one of the machines fails, the other could then take‐over the functionality of the failed machine. Some computer systems do not provide a privileged mode of operation in hardware. Is it possible t