Las definiciones más autorizadas actualmente provienen principalmente de Pivotal y Cloud Native Computing Foundation (CNCF).
1.1 Pivotal
4 puntos clave: DevOps、持续交付、微服务、容器化。
Seis características: 模块化(Modularity) 、可观测性(Observability)、可部署性(Deployability)、 可测试性(Testability)、可处理性(Disposability)、可替换性(Replaceability)。
La nube nativa es una colección de ideas, que incluyen tanto tecnología (microservicios, infraestructura ágil) como gestión (DevOps, entrega continua, Ley de Conway, reorganización, etc.). La nube nativa es una colección de tecnologías de nube y métodos de gestión empresarial.
1.2 CNCF
La tecnología nativa de la nube ayuda a las organizaciones a crear y ejecutar aplicaciones elásticamente escalables en nuevos entornos dinámicos, como la nube pública, la nube privada y la nube híbrida.
Las tecnologías representativas de la nube nativa incluyen contenedores, malla de servicios, microservicios, infraestructura inmutable y API declarativa. Estas técnicas permiten construir sistemas débilmente acoplados que sean tolerantes a fallas, fáciles de administrar y fáciles de observar.
Combinadas con una automatización confiable, las tecnologías nativas de la nube facilitan a los ingenieros realizar cambios importantes frecuentes y predecibles en los sistemas.
2. Características técnicas
2.1 Arquitectura de microservicio:
El nativo de la nube aboga por el uso de la arquitectura de microservicios para crear aplicaciones, dividiendo las aplicaciones en múltiples servicios pequeños, independientes y desplegables de forma independiente, cada uno de los cuales se centra en resolver funciones comerciales específicas. Esto mejora la escalabilidad, flexibilidad y mantenibilidad de las aplicaciones.
2.2 Implementación en contenedores:
Las aplicaciones nativas de la nube generalmente se implementan utilizando tecnología de contenedores como Docker, que permite una implementación multiplataforma, portátil y consistente al empaquetar la aplicación y sus dependencias en imágenes de contenedor. La contenedorización también proporciona las ventajas del aislamiento y la utilización de recursos, lo que permite que las aplicaciones se ejecuten de manera más eficiente.
2.3 Orquestación dinámica y gestión automatizada:
La nativa de la nube enfatiza el uso de herramientas y plataformas automatizadas (como Kubernetes) para orquestar y administrar aplicaciones de manera dinámica, administrar automáticamente operaciones como la implementación, el escalado, las actualizaciones y el monitoreo de contenedores, mejorar la flexibilidad y confiabilidad de las aplicaciones y reducir la complejidad operativa. .
2.4 Escalado elástico:
La nube nativa permite que las aplicaciones escalen elásticamente según las condiciones de carga. A través de la orquestación automatizada de contenedores y el descubrimiento de servicios, las instancias de contenedores se pueden agregar o eliminar dinámicamente para adaptarse a diferentes cambios de carga y mejorar el rendimiento de las aplicaciones y la utilización de recursos.
2.5 Entrega e implementación continuas:
La nativa de la nube aboga por el uso de métodos de integración continua y entrega continua (CI/CD) para lograr una entrega e implementación rápidas de aplicaciones. A través de procesos automatizados de compilación, prueba e implementación, las actualizaciones de aplicaciones se pueden enviar de manera rápida y confiable al entorno de producción. riesgo y costo de tiempo de publicación.
Tres pilas de tecnología
3.1 Contenedorización
Motor de contenedor: Docker, por ejemplo, es un motor de contenedor de aplicaciones de código abierto que empaqueta aplicaciones y sus dependencias en imágenes de contenedores estandarizadas. Las imágenes de contenedor se pueden ejecutar en cualquier entorno que admita Docker, lo que garantiza la coherencia de las aplicaciones en los entornos de desarrollo, prueba y producción.
Tiempo de ejecución del contenedor: como contenedord o runc, es responsable de la gestión del ciclo de vida del contenedor, incluida la creación, inicio, parada, eliminación y otras operaciones del contenedor, así como la interacción con los recursos del host.
Orquestación de contenedores: Kubernetes (K8s), por ejemplo, es actualmente la plataforma de orquestación de contenedores más popular. Proporciona un potente conjunto de API y conjuntos de herramientas para la implementación, programación, expansión y contracción automatizadas de contenedores, equilibrio de carga, actualizaciones continuas y autorreparación. , descubrimiento de servicios, gestión de configuración y otras operaciones.
3.2 Arquitectura de microservicio
Microservicios: descomponga una gran aplicación monolítica en un conjunto de servicios pequeños e independientes. Cada servicio se centra en una única función empresarial e interactúa a través de API. Los microservicios colaboran entre sí a través de mecanismos de comunicación livianos (como RESTful API, gRPC, etc.), lo que ayuda a aumentar la velocidad de desarrollo, reducir el acoplamiento y mejorar la escalabilidad y la tolerancia a fallas del sistema.
3.3 Comunicación entre servicios
API RESTful: Basada en el protocolo HTTP y sus diversos métodos (GET, POST, PUT, DELETE, etc.), la interfaz está diseñada en un estilo arquitectónico orientado a recursos y se usa ampliamente en interacciones entre microservicios.
gRPC: Un marco RPC (llamada a procedimiento remoto) de propósito general y alto rendimiento desarrollado por Google, basado en el protocolo HTTP/2 y el protocolo de serialización de Protocol Buffers, y es adecuado para escenarios con requisitos de alto rendimiento y eficiencia.
cola de mensajes: Como RabbitMQ, Apache Kafka, Amazon SQS, etc., como middleware de comunicación asincrónica, se utiliza para desacoplar servicios, manejar cargas máximas e implementar una arquitectura basada en eventos.
3.4 Malla de servicio
Tecnología de malla de servicio: Como Istio, Linkerd, Envoy, etc., se encuentran entre servicios. Como capa de infraestructura transparente, son responsables de la comunicación de la red, el enrutamiento, la seguridad, la observabilidad y otras funciones entre servicios. Una malla de servicios abstrae la complejidad de la comunicación entre servicios, eliminando la necesidad de que los desarrolladores implementen estas funciones en el código de la aplicación.
3.5 Integración continua y despliegue continuo (CI/CD)
Herramientas CI/CD: Como Jenkins, GitLab CI/CD, GitHub Actions, Azure DevOps, etc., se utilizan para automatizar el proceso de construcción, prueba, empaquetado, lanzamiento e implementación del desarrollo de software. Las prácticas de CI/CD ayudan a acortar los ciclos de iteración, mejorar la calidad del software y reducir los errores causados por la intervención manual.
3.6 Infraestructura declarativa
Configuración declarativa: Utilice archivos de configuración en formato YAML o JSON para describir el estado objetivo de la implementación de la aplicación, como los manifiestos YAML de Kubernetes. Los desarrolladores solo necesitan definir el estado deseado y el sistema manejará automáticamente cómo lograr este estado.
Herramientas de gestión de infraestructura como código (IaC): Como Terraform, CloudFormation, etc., se utilizan para la gestión de infraestructura en plataformas en la nube para lograr el control de versiones, la implementación automatizada y la gestión coherente de la infraestructura.
3.7 Cadena de herramientas DevOps
Agregación de registros: Como ELK Stack (Elasticsearch, Logstash, Kibana), Splunk, Datadog, etc., se utilizan para recopilar, analizar, almacenar, buscar, analizar y visualizar datos de registro.
monitor: Como Prometheus, Grafana, New Relic, Dynatrace, etc., proporcionan monitoreo del rendimiento del sistema y de las aplicaciones.
Seguimiento de errores: Como Sentry, Bugsnag, Rollbar, etc., se utilizan para capturar, analizar y gestionar excepciones y errores durante el tiempo de ejecución de la aplicación.
Ingeniería del Caos: Como Chaos Monkey, Chaos Toolkit, etc., introducen fallas de manera proactiva en el entorno de producción para probar el rendimiento del sistema y las capacidades de recuperación en condiciones anormales.
3.8 Computación sin servidor (sin servidor)
Servicio sin servidor: Como AWS Lambda, Google Cloud Functions, Azure Functions, etc., que permiten a los desarrolladores escribir y ejecutar fragmentos de código (funciones) sin preocuparse por la operación y el mantenimiento del servidor subyacente. Solo se ejecutan y facturan según demanda cuando la función. se desencadena.
Cuatro escenarios de aplicación
La tecnología nativa de la nube tiene amplias perspectivas de aplicación en muchos campos, incluidos, entre otros:
Aplicaciones de Internet a gran escala: cree aplicaciones de Internet de alta disponibilidad, alto rendimiento y altamente escalables.
Negocios financieros: proporcione métodos de implementación y desarrollo de aplicaciones seguros, confiables y eficientes para mejorar la confiabilidad y seguridad de las aplicaciones de negocios financieros.
Inteligencia artificial y Big Data: proporcione métodos de implementación y desarrollo de aplicaciones eficientes, escalables y elásticos para aplicaciones de IA y big data.
Internet de las cosas: procese datos masivos de sensores, logre una implementación rápida y un escalamiento elástico y mejore la confiabilidad y la capacidad de mantenimiento de las aplicaciones de Internet de las cosas.
Blockchain: proporciona métodos de implementación y desarrollo de aplicaciones eficientes, escalables y elásticos para aplicaciones blockchain.
Se trata de nativos en la nube, ¡gracias por leer!