¿Qué son Cloud Native y CNCF?

1. Introducción a CNCF

CNCF: el nombre completo de Cloud Native Computing Foundation (Cloud Native Computing Foundation), establecida el 11 de diciembre de 2015, es una fundación de software de código abierto dedicada a la popularización y el desarrollo sostenible de la tecnología Cloud Native.

La intención o visión original del establecimiento de la organización CNCF, en pocas palabras:

  • Promover el desarrollo sostenible de la computación nativa en la nube;
  • Ayude a los desarrolladores de tecnología nativa de la nube a crear excelentes productos rápidamente:

 

2. Hoja de ruta del paisaje CNCF

Los resultados más importantes de CNCF Landscape incluyen una hoja de ruta y un panorama. Trail Map es el proceso de recomendación de CNCF para que los usuarios nativos de la nube utilicen proyectos de código abierto y tecnologías nativas de la nube. En cada paso de la hoja de ruta, los usuarios pueden elegir productos respaldados por proveedores o implementar los suyos propios con proyectos de código abierto. 

La hoja de ruta completa se divide en diez pasos, y cada paso es una pregunta que los usuarios o los desarrolladores de la plataforma deben considerar y abordar paso a paso cuando implementan la tecnología nativa de la nube en el entorno real:

  1. en contenedores . La tecnología de contenedorización más popular en este momento es Docker, y puede contener aplicaciones y dependencias de cualquier tamaño, incluso algunos programas que se ejecutan en emuladores. También puede particionar la aplicación a lo largo del tiempo y escribir la funcionalidad futura como microservicios.
  2. CI/CD (Integración Continua y Liberación Continua) . Cree un entorno de CI/CD, de modo que cualquier modificación en el código fuente pueda compilarse automáticamente, probarse a través del contenedor e implementarse en el entorno de preproducción o incluso de producción.
  3. Orquestación de aplicaciones (Kubernetes) . Kubernetes es actualmente la herramienta más utilizada en el campo de la orquestación de aplicaciones en el mercado. Helm Charts se puede usar para ayudar a los desarrolladores y editores de aplicaciones a actualizar las aplicaciones que se ejecutan en Kubernetes.
  4. Seguimiento y Análisis . En este paso, los usuarios deben seleccionar herramientas relacionadas con la supervisión, el registro y el seguimiento para la plataforma, como el uso de Prometheus para la supervisión, Fluentd para el registro y Jaeger para el seguimiento de toda la cadena de llamadas de la aplicación.
  5. Servicios de corretaje, descubrimiento y gobierno . CoreDNS, Envoy y LInkerd se pueden usar para el descubrimiento de servicios y la gobernanza de servicios, respectivamente, proporcionando funciones como la verificación del estado del servicio, el enrutamiento de solicitudes y el equilibrio de carga.
  6. red _ Se utilizan software como Calico, Flannel y Weave Net para proporcionar funciones de red más flexibles.
  7. Base de datos distribuida y almacenamiento . Las bases de datos distribuidas pueden proporcionar una mejor elasticidad y escalabilidad, pero al mismo tiempo requieren un almacenamiento de contenedores profesional para respaldarlas.
  8. Procesamiento de flujos y mensajes . Cuando la aplicación requiere un mayor rendimiento que el modo JSON-REST, puede considerar usar gRPC o NATS. gRPC es un marco general de RPC (llamada remota) (similar a las llamadas RPC en varios marcos) y NATS es un sistema de cola de mensajes de publicación/suscripción y equilibrio de carga.
  9. Biblioteca de imágenes de contenedor y entorno de tiempo de ejecución . Harbour es actualmente la biblioteca de imágenes de contenedores más popular.Al mismo tiempo, también puede optar por utilizar diferentes entornos de tiempo de ejecución de contenedores para ejecutar programas de contenedores.
  10. Lanzamiento de software . Finalmente, el software como Notary se puede usar para la liberación segura del software.

 

3. Panorama CNCF (Paisaje)

La hoja de ruta de CNCF Landscape ayuda a los usuarios a clasificar el mejor proceso de toda la aplicación nativa de la nube a partir de los pasos prácticos. Sin embargo, en cada enlace de todo el proceso de práctica, los usuarios necesitan saber qué software específico y opciones de productos están disponibles.Aquí es donde entra en juego el panorama CNCF Landscape (https://landscape.cncf.io/).

Este panorama intenta que los usuarios comprendan el panorama general del sistema nativo de la nube desde la perspectiva de la jerarquía nativa de la nube y los diferentes componentes funcionales, y ayuda a los usuarios a elegir el software y las herramientas adecuadas para el soporte en diferentes niveles de componentes.

4. Introducción a Cloud Native

Cloud native (nativo de la nube) es una idea de arquitectura de software basada en la nube , y una nube distribuida basada en la implementación distribuida y la operación y administración unificadas, y un conjunto de tecnologías en la nube basadas en contenedores, microservicios, DevOps y otras tecnologías Product System.

  • Literalmente, cloud native se puede dividir en dos partes : cloud y native .
  • La nube es opuesta a lo local. Las aplicaciones tradicionales deben ejecutarse en servidores locales. Ahora, las aplicaciones populares se ejecutan en la nube. La nube incluye IaaS, PaaS y SaaS.
  • Nativo significa nativo. Cuando comenzamos a diseñar aplicaciones, consideramos que las aplicaciones se ejecutarán en el entorno de la nube en el futuro. Debemos aprovechar al máximo las ventajas de los recursos de la nube, tales como: la elasticidad y las ventajas distribuidas de los servicios en la nube.

¿Cómo desarrollar un programa adecuado para su implementación en un entorno de nube? De hecho, hay varios principios de desarrollo que deben seguirse:

 

1. Contenedorización (docker + k8s)

La ventaja de la contenedorización es que ya no es necesario preocuparse por la pila de tecnología utilizada por cada servicio durante la operación y el mantenimiento. Cada servicio se encapsula en un contenedor sin distinción, y se puede administrar y mantener sin distinción. Ahora es un más herramienta popular Es docker y k8s.

2. Microservicios

Los microservicios resuelven el bajo acoplamiento + alta cohesión que hemos estado persiguiendo en el desarrollo de software, y los microservicios corresponden a nuestra aplicación única tradicional. Los microservicios también recomiendan usar API RESTful para la comunicación.

3. Sin servidor

La arquitectura sin servidor no significa que los servidores ya no serán necesarios en el futuro, sino que ya no se centrará en la infraestructura subyacente, y se puede poner más atención en algunas implementaciones lógicas que están más relacionadas con el negocio . Por ejemplo, los fragmentos de código de algunas funciones, la plataforma se implementa y se inicia automáticamente de acuerdo con la carga bajo demanda, y escala automáticamente la lógica del código para satisfacer las necesidades del procesamiento comercial.

4, DevOps

DevOps (una combinación de Desarrollo y Operaciones) es la integración de desarrollo, operación y mantenimiento. Implica desarrollo continuo, pruebas continuas, integración continua, implementación continua y monitoreo continuo del software a lo largo de su ciclo de vida de desarrollo.

  • La definición de Wikipedia de DevOps es un poco complicada. De hecho, para simplificarlo, DevOps aboga por un alto grado de colaboración entre el desarrollo y la operación y el mantenimiento de TI , para mejorar la confiabilidad, la estabilidad, la elasticidad y la seguridad del entorno de producción mientras se completa la implementación de alta frecuencia.
  • Desde otra dimensión, en un sentido amplio, DevOps no solo necesita romper los muros departamentales entre el desarrollo y la operación y el mantenimiento, sino que creemos que DevOps necesita considerar todo el ciclo de vida de la aplicación para realizar la apertura completa del enlace y la automatización de herramientas a lo largo del ciclo de vida, capacidades de colaboración en línea entre equipos .

5. Malla de servicio

Service Mesh es un tema que ha surgido en los últimos años, basado en microservicios de contenedores, Service Mesh permite a los usuarios gestionar la comunicación entre servicios de una manera más refinada e inteligente . Istio, el proyecto insignia de la comunidad de Service Mesh, actualmente está ganando popularidad rápidamente.

6. Nube

La nube es la base de cloud-native y no hay cloud-native sin cloud. Sin una comprensión correcta de la nube, es imposible tener una forma correcta de abrir la nube nativa. Para el personal no técnico, al menos comprender los diversos modelos de servicio de la nube, como: IaaS, PaaS, SaaS y los escenarios de aplicación y los valores de varios modelos de servicio.

 

V. Resumen

No es difícil encontrar que la nube nativa es un concepto muy amplio. No es difícil desarrollar una aplicación que admita la nube nativa. Puede ser una implementación simple que se puede implementar en base a contenedores, orquestada y programada usando Kubernetes, IC integrado. /Herramientas de CD y herramientas de monitoreo de Prometheus , etc.

 

 

Supongo que te gusta

Origin blog.csdn.net/summer_fish/article/details/131981608
Recomendado
Clasificación