Currently, the more authoritative definitions mainly come from Pivotal and the Cloud Native Computing Foundation (CNCF).
1.1 Pivotal
4 key points: DevOps、持续交付、微服务、容器化。
Six qualities: 模块化(Modularity) 、可观测性(Observability)、可部署性(Deployability)、 可测试性(Testability)、可处理性(Disposability)、可替换性(Replaceability)。
Cloud native is a collection of ideas that includes both technology (microservices, agile infrastructure) and management (DevOps, continuous delivery, Conway's Law, and reorganization, etc.). Cloud native is a collection of cloud technologies and enterprise management methods.
1.2 CNCF
Cloud-native technologies enable organizations to build and run elastically scalable applications in new dynamic environments such as public clouds, private clouds, and hybrid clouds.
Representative technologies of cloud native include containers, service meshes, microservices, immutable infrastructure, and declarative APIs, which can build loosely coupled systems that are fault-tolerant, easy to manage, and easy to observe.
Combined with reliable automation, cloud-native technologies make it easy for engineers to make frequent and predictable breaking changes to systems.
Second technical features
2.1 Microservice Architecture:
Cloud native advocates the use of microservice architecture to build applications, splitting applications into multiple small, independent and independently deployable services, each of which focuses on solving specific business functions. This can improve the scalability, flexibility and maintainability of applications.
2.2 Containerized deployment:
Cloud-native applications are often deployed using container technologies such as Docker, which package applications and their dependencies into container images to achieve cross-platform, portable, and consistent deployment. Containerization also provides the advantages of isolation and resource utilization, allowing applications to run more efficiently.
2.3 Dynamic orchestration and automated management:
Cloud native emphasizes the use of automated tools and platforms (such as Kubernetes) to dynamically orchestrate and manage applications, automatically manage operations such as container deployment, scaling, upgrading, and monitoring, improve application elasticity and reliability, and reduce the complexity of manual operations.
2.4 Elastic scaling:
Cloud native allows applications to scale elastically based on load conditions. Through automated container orchestration and service discovery, container instances can be dynamically added or removed to adapt to different load changes and improve application performance and resource utilization.
2.5 Continuous Delivery and Deployment:
Cloud native advocates the use of continuous integration and continuous delivery (CI/CD) methods to achieve rapid delivery and deployment of applications. Through automated build, test, and deployment processes, application updates can be pushed to the production environment quickly and reliably, reducing the risk and time cost of release.
Three technology stacks
3.1 Containerization
Container engine: Docker, for example, is an open source application container engine that packages applications and their dependencies into standardized container images. Container images can run in any environment that supports Docker, ensuring consistency between application development, testing, and production environments.
Container runtime: such as containerd or runc, responsible for the life cycle management of the container, including operations such as creating, starting, stopping, and deleting the container, as well as interacting with the host's resources.
Container orchestration: Kubernetes (K8s) is the most popular container orchestration platform, providing a powerful set of APIs and tools for automating container deployment, scheduling, scaling, load balancing, rolling upgrades, self-healing, service discovery, configuration management, and other operations.
3.2 Microservice Architecture
Microservices: Decompose a large monolithic application into a set of small, independent services, each of which focuses on a single business function and interacts through APIs. Microservices collaborate with each other through lightweight communication mechanisms (such as RESTful APIs, gRPC, etc.), which helps to speed up development, reduce coupling, and enhance the scalability and fault tolerance of the system.
3.3 Communication between services
RESTful API: Based on the HTTP protocol and its various methods (GET, POST, PUT, DELETE, etc.), the interface is designed in a resource-oriented architectural style and is widely used in interactions between microservices.
gRPC: A high-performance, general-purpose RPC (Remote Procedure Call) framework developed by Google, based on the HTTP/2 protocol and Protocol Buffers serialization protocol, suitable for scenarios with high performance and efficiency requirements.
message queue: Such as RabbitMQ, Apache Kafka, Amazon SQS, etc., as asynchronous communication middleware, used to decouple services, handle peak loads, and implement event-driven architecture.
3.4 Service Mesh
Service Mesh Technology: For example, Istio, Linkerd, and Envoy are located between services and serve as a transparent infrastructure layer responsible for network communication, routing, security, observability, and other functions between services. The service mesh abstracts the complexity of communication between services, so that developers do not need to implement these functions in the application code.
3.5 Continuous Integration and Continuous Deployment (CI/CD)
CI/CD Tools: Such as Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps, etc., which are used to automate the building, testing, packaging, publishing and deployment processes of software development. CI/CD practices help shorten iteration cycles, improve software quality, and reduce errors caused by manual intervention.
3.6 Declarative Infrastructure
Declarative configuration: Use YAML or JSON formatted configuration files to describe the target state of application deployment, such as Kubernetes' YAML manifests. Developers only need to define the desired state, and the system will automatically handle how to achieve this state.
Infrastructure as Code (IaC) Management Tools: Such as Terraform and CloudFormation, which are used for infrastructure management across cloud platforms to achieve version control, automated deployment, and consistency management of infrastructure.
3.7 DevOps Toolchain
Log aggregation: Such as ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Datadog, etc., which are used to collect, parse, store, search, analyze, and visualize log data.
monitor: Such as Prometheus, Grafana, New Relic, Dynatrace, etc., provide system and application performance monitoring.
Error tracking: Such as Sentry, Bugsnag, Rollbar, etc., which are used to capture, analyze and manage exceptions and errors during application runtime.
Chaos Engineering: Such as Chaos Monkey and Chaos Toolkit, which actively introduce failures into the production environment to test the performance and recovery capabilities of the system under abnormal conditions.
3.8 Serverless
Serverless Services: Such as AWS Lambda, Google Cloud Functions, Azure Functions, etc., allow developers to write and run code snippets (functions) without having to worry about the operation and maintenance of the underlying servers. They are only executed and billed on demand when the function is triggered.
Four application scenarios
Cloud native technology has broad application prospects in many fields, including but not limited to:
Large-scale Internet applications: Building high-availability, high-performance, and high-scalability Internet applications.
Financial business: Provides safe, reliable and efficient application development and deployment methods to improve the reliability and security of financial business applications.
Artificial Intelligence and Big Data: Provide efficient, scalable, and elastic application development and deployment methods for AI and big data applications.
Internet of Things: Process massive amounts of sensor data, achieve rapid deployment and elastic scaling, and improve the reliability and maintainability of IoT applications.
Blockchain: Provides efficient, scalable, and elastic application development and deployment methods for blockchain applications.