¡Oh Dios mío! El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

La arquitectura de software de la mayoría de las empresas parte de una arquitectura monolítica, no de una arquitectura de microservicios. Debido a que la arquitectura monolítica es lo suficientemente simple y fácil de aprender, las aplicaciones se pueden desarrollar rápidamente sin procesos complicados. Pero con el crecimiento de la empresa, los riesgos de la estructura monolítica se volverán gradualmente prominentes. En el caso de un aumento repentino de la demanda, todo el programa de aplicación se verá limitado porque una determinada parte o un determinado proceso se topa con un cuello de botella. Además, debido al diseño estrechamente acoplado de la arquitectura monolítica, las aplicaciones también enfrentan desafíos de usabilidad. Frente a un manejo de errores cada vez más complejo, es casi imposible expandirse continuamente, y los procesos como la construcción, implementación y prueba se han vuelto muy dificil.

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Sin embargo, un punto que tiene un mayor impacto en las empresas es que la arquitectura monolítica dificulta seriamente la innovación y el desarrollo.

Por lo tanto, las empresas recurrirán gradualmente a la arquitectura de microservicios en el proceso de desarrollo, dividiendo las aplicaciones en múltiples "micro" servicios para su ejecución. Todos estos microservicios están diseñados para funciones comerciales o un determinado subdominio, y cada microservicio implementa una función separada. El concepto de microservicios también aboga por que cada servicio sea desarrollado y administrado por un equipo pequeño e independiente, por lo que esto no solo es una actualización en la gestión técnica, sino también un cambio en la organización y gestión empresarial.

Pero una cosa es hablar de microservicios y otra cosa es poder implementarlos realmente. Este artículo tiene como objetivo proporcionar una referencia a este respecto, presenta de manera integral cómo desarrollar microservicios y los describe desde todas las dimensiones tanto como sea posible. Desde el diseño, la construcción, la configuración, las pruebas, la supervisión y la seguridad de la arquitectura de microservicios hasta la canalización de integración continua / entrega continua (CICD), este artículo ha llevado a cabo una exploración activa y proporciona un código de muestra detallado de Go para su explicación.

Por otro lado, la implementación de todo lo anterior se realiza en conjunto con Kubernetes. Como todos sabemos, Kubernetes es actualmente una de las plataformas de código abierto más populares, y se utiliza principalmente para automatizar la orquestación de contenedores de aplicaciones en clústeres, incluida la implementación, la expansión y el mantenimiento. Kubernetes proporciona un marco de infraestructura centrado en contenedores. Hoy en día, es difícil para usted encontrar una nueva tecnología que no se integre (o no pretenda) integrarse con Kubernetes. Además, este artículo también cubre los temas candentes de la computación sin servidor y las redes de servicios, y analiza cómo pueden utilizar sus respectivas ventajas para proporcionar ayuda para sistemas basados ​​en microservicios. Los proyectos de código abierto Nuclio e Istio se utilizaron para realizar una investigación específica. Descripción .

Espero que después de leer este artículo, puedas adquirir conocimientos y experiencia en el diseño, desarrollo y gestión de sistemas nativos en la nube basados ​​en Kubernetes y microservicios.

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

 

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

El Capítulo 1 es una introducción a Kubernetes para desarrolladores; en este capítulo, lo llevamos a un recorrido relámpago por Kubernetes y aprenderemos sobre su integración con microservicios. La arquitectura escalable de Kubernetes permite que las grandes organizaciones empresariales, las nuevas empresas y las organizaciones de código abierto colaboren juntas para crear un ecosistema alrededor de Kubernetes para expandir los ingresos y garantizar el desarrollo sostenible. Los conceptos integrados y las abstracciones de Kubernetes son muy adecuados para los sistemas basados ​​en microservicios. Son compatibles con todas las etapas del ciclo de vida del desarrollo de software, desde el desarrollo, las pruebas, la implementación, hasta el monitoreo y la resolución de problemas.

El proyecto Minikube permite a todos los desarrolladores ejecutar un clúster de Kubernetes localmente, que es muy adecuado para comprender las funciones y características de Kubernetes en sí, y se puede probar localmente en un entorno muy similar al entorno de producción.

El proyecto Helm es un excelente complemento de Kubernetes y ofrece a los usuarios un gran valor como solución de gestión de paquetes. En el próximo capítulo, profundizaremos en el campo de los microservicios y entenderemos por qué los microservicios son la mejor manera de desarrollar sistemas distribuidos iterativos rápidos y complejos en la nube.

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Capítulo 2 Introducción a los microservicios; en este capítulo discutimos muchos temas. El primero es el principio básico de microservicios: menos es más, y cómo descomponer el sistema en muchos microservicios pequeños e independientes para ayudarlo a escalar.

También discutimos los desafíos que enfrentan los desarrolladores que utilizan la arquitectura de microservicios. Ofrecemos muchos conceptos, opciones, mejores prácticas y sugerencias prácticas para crear un sistema basado en microservicios. En este punto, debe comprender la flexibilidad que brindan los microservicios, pero también debe elegir cuidadosamente las muchas formas de usarlos.

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Capítulo 3 Aplicación de muestra: Delinkcious;

  • 3.1 Requisitos técnicos
  • 3.2 Por qué elegir Go
  • 3.3 Kit Know Go
  • 3.4 Estructura de directorios delicada
  • 3.5 microservicios engañosos
  • 3.6 Almacenamiento de datos
  • 3.7 Resumen
  • 3.8 Lecturas adicionales

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Capítulo 4 Construya la canalización de CI / CD;

  • 4.1 Requisitos técnicos
  • 4.2 Comprensión de la canalización de CI / CD
  • 4.3 Elija la herramienta de canalización de CI / CD
  • 4.4.1 Jenkins x
  • 4.4.2 Spinnaker
  • 4.4.3 Travis Cl y CircleCl
  • 4.4.4 Tekton
  • 4.4.5 CD de Argo
  • 4.4.6 Herramientas de desarrollo propio
  • 4.4 GitOps
  • 4.5 Utilice CircleCI para crear una imagen
  • 4.6 Configurar la entrega continua para Delinkcious
  • 4.7 Resumen
  • 4.8 Más lecturas

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

El Capítulo 5 usa Kubernetes para configurar microservicios; en este capítulo, discutimos todo lo relacionado con la configuración (excluyendo la administración de claves). El primero es el método de configuración tradicional, y luego se estudia la configuración dinámica, centrándose en el almacenamiento de la configuración remota y el servicio de configuración remota.

A continuación, discutimos algunas opciones específicas de Kubernetes, centrándonos en ConfigMap. Presentamos el método para crear y administrar ConfigMap, y cómo Pod usa ConfigMap como variable de entorno (configuración estática) o como volumen de montaje de archivos. Cuando el ingeniero de operación y mantenimiento modifica el ConfigMap correspondiente, se actualizarán automáticamente. Finalmente, estudiamos algunas opciones más poderosas, como los recursos personalizados, y discutimos la característica especial pero muy importante del descubrimiento de servicios. Hasta ahora, debe tener un conocimiento básico de la configuración y puede configurar microservicios de una manera tradicional o de una manera específica de Kubernetes.

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Capítulo 6 Seguridad de Kubernetes y microservicios; en este capítulo, estudiamos detenidamente un tema serio: la seguridad.

La arquitectura basada en microservicios y Kubernetes son muy importantes para los sistemas distribuidos empresariales a gran escala que admiten objetivos de misión crítica y, a menudo, gestionan información confidencial. Además de los desafíos que enfrenta el desarrollo y desarrollo de sistemas tan complejos, también debemos darnos cuenta de que dichos sistemas proporcionan objetivos muy atractivos para los atacantes.

Debemos utilizar procesos estrictos y mejores prácticas para proteger sistemas, usuarios y datos. Primero, presentamos los principios de seguridad y las mejores prácticas, y también vimos cómo se respaldan entre sí y cómo Kubernetes se compromete a aplicarlos para respaldar nuestro desarrollo y mantenimiento seguros de sistemas.

También discutimos los pilares que son la base de la seguridad de microservicios en Kubernetes: autenticación / autorización / acceso, comunicación segura dentro y fuera del clúster, administración sólida de claves (cifrado de almacenamiento y cifrado de transmisión) y estrategias de seguridad en capas.

En este punto, debe tener una comprensión clara de los mecanismos de seguridad y tener suficiente información para decidir cómo integrarlos en el sistema. La seguridad es un tema continuo, pero el uso de las mejores prácticas le permitirá encontrar el equilibrio adecuado entre la seguridad y los demás requisitos del sistema en todo momento.

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Capítulo 7 API y Load Balancer;

  • 7.1 Requisitos técnicos
  • 7.2 Familiarizado con el servicio de Kubernetes
  • 7.3 Flujo este-oeste y flujo norte-sur
  • 7.4 Comprender la entrada y el equilibrador de carga
  • 7.5 Proporcionar y utilizar API REST pública
  • 7.6 Proporcionar y utilizar la API de gRPC interna
  • 7.7 Enviar y recibir eventos a través de la cola de mensajes
  • 7.8 Red de servicio
  • 7.9 Resumen
  • 7.10 Lecturas adicionales

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Capítulo 8 Servicios estatales;

  • 8.1 Requisitos técnicos
  • 8.2 Almacenamiento de resúmenes
  • 8.3 Almacenamiento de datos fuera del clúster de Kubernetes
  • 8.4 Use Statefulset para almacenar datos en un clúster de Kubernetes
  • 8.5 Alto rendimiento a través del almacenamiento local
  • 8.6 Usar una base de datos relacional en Kubernetes
  • 8.7 Usar almacenamiento de datos no relacionales en Kubernetes
  • 8.8 Resumen
  • 8.9 Lecturas adicionales

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

El Capítulo 9 ejecuta tareas sin servidor en Kubernetes; en este capítulo, presentamos e implementamos la verificación de enlaces de Delinkcious. Primero, discutimos el escenario sin servidor, incluidos sus dos significados comunes, a saber, no procesar instancias, nodos o servidores, y usar servicios de función en la nube.

Luego, implementamos una solución débilmente acoplada en Delinkcious para la verificación de enlaces, que utiliza nuestro sistema de mensajería NATS para distribuir eventos al verificar enlaces. Luego, presentamos Nuclio y lo usamos para administrar la función ServerIss, permitimos que LinkManager inicie la verificación del enlace en la función Serverless y actualice el estado del enlace cuando se le notifique más tarde.

Finalmente, estudiamos muchas otras soluciones y marcos de trabajo sin servidor en Kubernetes. En este punto, debe tener un conocimiento profundo del contenido de la computación sin servidor y las funciones sin servidor. Debería poder tomar una decisión informada sobre si su sistema y proyecto pueden beneficiarse de las funciones sin servidor y qué solución es la más adecuada. Obviamente, los beneficios de la informática sin servidor son reales, y esta no es una moda de corta duración. Espero que las soluciones sin servidor en Kubernetes eventualmente se fusionen (quizás alrededor de KNative) y se conviertan en la piedra angular de la mayoría de las implementaciones de Kubernetes, incluso si no son parte del núcleo de Kubernetes.

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Capítulo 10 Pruebas de microservicios: En este capítulo, discutimos el tema de las pruebas y sus diversos estilos: pruebas unitarias, pruebas de integración y varias pruebas de extremo a extremo. También profundizamos en cómo se construyen las pruebas.

Demostramos la prueba unitaria del administrador de enlaces, agregamos una nueva prueba de humo e introdujimos la telepresencia para acelerar el ciclo de vida de edición, prueba y depuración para el clúster de Kubernetes real mientras modificamos el código localmente.

Sin embargo, las pruebas también son costosas, y agregar ciegamente más y más pruebas no hará que su sistema sea mejor o de mayor calidad. Existen muchas compensaciones importantes entre la cantidad y la calidad de las pruebas, como el tiempo necesario para desarrollar y mantener las pruebas, el tiempo y los recursos necesarios para ejecutar las pruebas y el número y la complejidad de los problemas encontrados al principio de la prueba. Debe tener suficiente entorno para tomar estas decisiones difíciles para su sistema y elegir la estrategia de prueba que mejor se adapte a sus necesidades.

También es importante recordar que las pruebas cambiarán con el desarrollo del sistema.Cuando el riesgo aumenta cada vez más, incluso para la misma organización, se debe mejorar el nivel de las pruebas. Si es un desarrollador aficionado con un producto beta y solo unos pocos usuarios de prueba informales, es posible que no necesite pruebas tan rigurosas (a menos que le ahorre tiempo de desarrollo). Sin embargo, a medida que la empresa crece, los usuarios se van acumulando y más personas utilizan su producto para aplicaciones de misión crítica. El impacto de los problemas en el código hará que el sistema requiera pruebas más rigurosas.

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Capítulo 11 Implementación de microservicios;

  • 11.1 Requisitos técnicos
  • 11.2 Departamento de Kubernetes
  • 11.3 Despliegue multientorno
  • 11.4 Comprensión de la estrategia de implementación
  • 11.5 Deshacer la implementación
  • 11.6 Administrar versiones y dependencias
  • 11.7 Desarrollo e implementación local
  • 11.8 Resumen
  • 11.9 Lecturas adicionales

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Capítulo 12 Seguimiento, registros e indicadores;

  • 12.1 Requisitos técnicos
  • 12.2 La capacidad de autocuración de Kubernetes
  • 12.3 Autoescalado del clúster de Kubernetes
  • 12.4 Utilice Kubernetes para aprovisionar recursos
  • 12.5 Optimización del rendimiento correctamente
  • 12.6 Registro
  • 12.7 Recopilar métricas en Kubernetes 12.8 Alertas
  • 12.9 Seguimiento distribuido
  • 12.10 Resumen
  • 12.11 Otras lecturas

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Capítulo 13 Service Grid e lstio; En este capítulo, discutimos el service grid y nos enfocamos en Istio. Istio es un proyecto complejo que se basa en Kubernetes y utiliza un proxy para crear un clúster de sombra.

Istio tiene características excelentes. Puede realizar el modelado del tráfico a un nivel muy detallado. También puede proporcionar autenticación y autorización complejas, implementar políticas avanzadas, recopilar grandes cantidades de información y ayudar a la expansión del clúster.

Presentamos la arquitectura Istio y sus potentes funciones, y analizamos cómo Delinkcious puede beneficiarse de estas funciones. Sin embargo, no es fácil utilizar bien Istio. Crea una gran cantidad de recursos personalizados y expande los recursos de Kubernetes existentes (servicios virtuales correspondientes a los servicios de Kubernetes) de una manera compleja.

También presentamos alternativas a Istio, incluidas Linkerd 2.0, Envoy, AWS App Mesh y Consul. En este punto, debe comprender bien los beneficios de la malla de servicios y la ayuda que Istio puede aportar a su proyecto. En cuanto a si debe integrar Istio en su sistema de inmediato, considerar una de las alternativas o esperar y ver un rato, es posible que necesite lectura y experimentación adicionales para tomar decisiones más informadas.

Creo que la malla de servicios, especialmente Istio, será muy importante y se convertirá en la mejor práctica estándar para grandes clústeres de Kubernetes.

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Capítulo 14 El futuro de los microservicios y Kubernetes; en este capítulo, discutimos la próxima dirección de desarrollo de microservicios y Kubernetes.

Hay indicios de que los microservicios y Kubernetes seguirán siendo los factores principales en el diseño, la construcción, el desarrollo y la operación de sistemas distribuidos nativos de la nube, a gran escala. Estas son buenas noticias. Los pequeños programas, scripts y aplicaciones móviles no desaparecerán, pero el sistema de back-end se volverá enorme, capaz de procesar más datos y cubrirá todos los aspectos de nuestras vidas. Tecnologías como la realidad virtual, los sensores y la inteligencia artificial necesitarán procesar y almacenar cada vez más datos.

En el desarrollo a corto plazo de microservicios, gRPC se convertirá en una popular herramienta de transmisión de comunicaciones y una interfaz pública entre servicios. Los clientes web podrán utilizar gRPC a través de la tecnología gRPC para la web. En comparación con la API REST, GraphQL es otra mejora importante. La industria todavía necesita algo de tiempo para comprender cómo diseñar y construir una arquitectura basada en microservicios. Crear un único microservicio es muy simple, pero crear un sistema de microservicios coordinado es otro asunto. Los contenedores y Kubernetes resuelven algunos de los problemas de las arquitecturas basadas en microservicios. Las nuevas tecnologías, como las redes de servicios, pronto llamarán la atención, y la computación sin servidor ayuda a los desarrolladores a implementar y actualizar aplicaciones más rápidamente. La combinación de contenedores y virtualización conducirá a sistemas más seguros. El operador hará realidad una gestión de bloques de construcción más grande y más útil. La federación de clústeres se convertirá en un nuevo campo de sistemas escalables.

En este punto, debe tener su propia comprensión del desarrollo futuro de estas tecnologías. Este conocimiento le permitirá planificar con anticipación y realizar sus propias evaluaciones de las tecnologías en las que se invertirá actualmente y qué tecnologías deben madurar aún más.

En resumen, estamos al comienzo de una nueva era emocionante y aprenderemos cómo construir sistemas confiables a una escala sin precedentes. Espero que pueda seguir trabajando duro, dominar estas increíbles tecnologías, crear su propio sistema y hacer su propia contribución a la comunidad.

El arquitecto senior de Google ha trabajado duro durante diez años para crear un documento práctico para los microservicios de Kubernetes.

 

Este documento [Kubernetes Microservices Actual Combat] tiene un total de 377 páginas. Si necesita una versión completa, puede reenviar este artículo y seguir al editor, ¡escanee el código a continuación para obtenerlo! !

Supongo que te gusta

Origin blog.csdn.net/bjmashibing001/article/details/112238472
Recomendado
Clasificación