BLOG | NGINX

Una nueva arquitectura de referencia de aplicaciones modernas de código abierto

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Damian Curry
Damián Curry
Publicado el 24 de agosto de 2021

En NGINX hemos estado hablando durante los últimos años sobre la necesidad de hacer que las aplicações sean verdaderamente modernas y adaptables: portátiles, nativas de la nube, resilientes, escalables y fáciles de actualizar. Más recientemente, han cobrado importancia dos conceptos que facilitan la creación y distribución de aplicaciones modernas. El primero es Platform Ops , donde un equipo de plataforma a nivel corporativo selecciona, mantiene, conecta y protege todas las herramientas que los equipos de desarrollo y DevOps necesitan para hacer su trabajo. El segundo es el desplazamiento hacia la izquierda , lo que implica integrar seguridad, redes y monitoreo de nivel de producción en las aplicações durante las primeras etapas del ciclo de vida del desarrollo. Los desarrolladores terminan con más responsabilidad sobre funciones que solían pertenecer a ITOps, pero al mismo tiempo tienen más opciones y más independencia en cómo exactamente implementan esas funciones.

Si bien esto suena bien, en realidad es un desafío implementar Platform Ops y “desplazar hacia la izquierda” la infraestructura y las herramientas operativas. Por un lado, cada vez se implementan más aplicaciones de formas altamente distribuidas, en entornos de contenedores y utilizando uno de los cada vez mayores motores de orquestación de Kubernetes. Las empresas también quieren implementar sus aplicaciones en múltiples entornos sin verse limitadas por las diferencias entre nubes y entre nubes y entornos locales.

Una “imagen dorada” para las aplicaciones modernas

Como debe ser, nuestros clientes y la comunidad continúan solicitando nuestra ayuda con los desafíos que enfrentan. Quieren tener todas las ventajas, pero unir todas las piezas (seguridad, redes, capacidad de observación y supervisión del rendimiento, escalabilidad) requiere mucho trabajo. Hacer que la plataforma resultante sea lo suficientemente robusta para los entornos de producción requiere aún más trabajo. Se preguntan: "¿Por qué no existe una 'imagen maestra' para las aplicaciones modernas que podamos ejecutar desde un único repositorio?"

Esa es una buena pregunta y asumimos como nuestro propio desafío llegar a una buena respuesta. En primer lugar, replanteamos la pregunta en términos más concretos. Creemos que nuestros clientes y la comunidad se están preguntando lo siguiente: "¿Puede ayudarnos a integrar diferentes productos de software en un todo más cohesivo, ajustar la pila para obtener las configuraciones y ajustes correctos y ahorrarnos trabajo y problemas? ¿Y se puede facilitar la ejecución de la aplicação en diferentes nubes sin tener que hacer grandes cambios de configuración debido a las diferencias en los servicios y funcionalidades subyacentes?”

Consideramos que una solución que realmente aborde estas preguntas es beneficiosa para toda la comunidad (no solo para nuestros socios de cientos de empresas y todos los principales proveedores de la nube): realmente es una victoria que no implica una suma cero . Lo ideal es que la solución no sea un “juguete”, sino un código sólido, probado y listo para implementarse en aplicações de producción en vivo que se ejecutan en entornos Kubernetes. Y, francamente, queremos que cualquiera pueda robar nuestro trabajo directamente desde GitHub.

Para ir al grano, hoy en NGINX Sprint 2.0 anunciamos el lanzamiento de nuestra solución: la primera iteración de la Arquitectura de Referencia de Aplicaciones Modernas (MARA), una arquitectura de código abierto y un modelo de implementación para aplicaciones modernas. Esperamos que os guste, lo uséis, lo robéis y, mejor aún, lo modifiquéis o lo bifurquéis para mejorarlo o personalizarlo. Esta publicación repasa lo que construimos y cómo funciona.

Diagrama que muestra la topología de la arquitectura de referencia de aplicaciones modernas de NGINX
La arquitectura de referencia de aplicaciones modernas de NGINX

Definición de aplicações adaptativas modernas

Primero, definamos la aplicación adaptativa ideal. Puede estar compuesto de microservicios, estar en contenedores y adherirse a los principios de diseño nativos de la nube (acoplado de forma flexible, fácil de escalar, no vinculado a la infraestructura), pero no tiene por qué ser así. Parte del espíritu de las aplicações modernas es diseñarlas específicamente para aprovechar la abstracción de la infraestructura. Esta definición es sencilla pero importante porque establece la plantilla básica para todas las arquitecturas de referencia.

Los pilares clave de una arquitectura de aplicação moderna incluyen portabilidad, escalabilidad, resiliencia y agilidad.

  • Portabilidad : es fácil implementar la aplicação en múltiples tipos de dispositivos e infraestructuras, en nubes públicas y en instalaciones locales.
  • Escalabilidad : la aplicación puede escalar hacia arriba o hacia abajo de manera rápida y sin problemas para adaptarse a picos o reducciones en la demanda, en cualquier parte del mundo.
  • Resiliencia : la aplicación puede conmutar sin problemas a clústeres o entornos virtuales recién creados en diferentes regiones de disponibilidad, nubes o centros de datos.
  • Agilidad : la aplicación se puede actualizar rápidamente a través de canales CI/CD automatizados; en el mundo de las aplicaciones modernas, esto también implica una mayor velocidad del código e impulsos de código más frecuentes.

Diseño de nuestra arquitectura de referencia

Queríamos crear una plataforma que cumpliera con los requisitos básicos de nuestro patrón de definición e implementación de aplicaciones modernas. Además de los objetivos técnicos, queríamos ilustrar los principios de diseño de aplicaciones modernas y alentar a nuestra comunidad a implementarlas en Kubernetes. Y sí, queríamos ofrecer código “robable” con el que los desarrolladores, los equipos de DevOps y Platform Ops pudieran jugar, modificar y mejorar. En resumen, queríamos ofrecer:

  • Una arquitectura de Kubernetes lista para producción y de fácil implementación que no es un juguete
  • Una plataforma que destaca cómo funcionan los productos de los socios en Kubernetes
  • Un botón para crear e implementar fácilmente un controlador de ingreso de Kubernetes
  • Un entorno de prueba para futuras integraciones de productos y alianzas
  • Un marco de implementación conectable
  • Un único repositorio de código fuente abierto para simplificar el descubrimiento y la adopción

Estas son las opciones de diseño y asociación que hemos elegido para la primera versión de la plataforma (para conocer nuestros planes para la próxima versión, consulte Muchas más integraciones y más flexibilidad en la versión 2 ). Creemos firmemente que hacer que nuestra aplicación de referencia incluya a los socios es clave para impulsar la participación tanto de los socios como de la comunidad.

Cómo se implementa el código

Para instalar e implementar la aplicação de muestra, se emite un único comando para invocar el script de inicio y los siguientes proyectos Pulumi se ejecutan en el orden indicado. Cada nombre de proyecto se asigna a un nombre de directorio relativo al directorio raíz del repositorio . Para obtener más detalles, consulte el archivo README .

vpc: define e instala VPC y subredes para usar con EKS └─eks: implementa EKS
└─ecr: configura ECR para su uso en el clúster EKS
└─kic-image-build: crea una nueva imagen del controlador de ingreso NGINX
└─kic-image-push - Envía la imagen creada en el paso anterior a ECR
└─kic-helm-chart: Implementa el controlador de ingreso NGINX en EKS
grupo
└─logstore: implementa el almacén de registros elástico en el clúster EKS
└─logagent: implementa el agente de registro Elastic (filebeat) en
Clúster EKS
└─certmgr - Implementa el gráfico Helm de cert-manager.io en EKS
grupo
└─anthos - Implementa la aplicação Bank of Anthos en EKS
grupo

Muchas más integraciones y más flexibilidad en la versión 2

Reconocemos que nuestro esfuerzo inicial podría no brindar todas las integraciones que necesita para su entorno de Kubernetes. Platform Ops se trata de una elección inteligente, pero no ilimitada. Para que sea más fácil para los equipos de Platform Ops, DevOps y desarrolladores probar y potencialmente adoptar nuestra nueva plataforma de referencia, planeamos muchas mejoras en el corto plazo, que incluyen:

  • Stand Up Digital Ocean, OpenShift, Rancher, vSphere y otros entornos de Kubernetes
  • Integrar con NGINX Controller> para administrar y monitorear NGINX Plus Ingress Controller

    [ Editor : NGINX Controller ahora es F5 NGINX Management Suite ].

  • Proporcionar configuración lista para usar para NGINX App Protect
  • Integre con productos y servicios de F5 como BIG‑IP , Cloud Services y Volterra
  • Integración con NGINX Service Mesh y Aspen Mesh basado en Istio
  • Integre de forma nativa con Terraform y otras herramientas de automatización
  • Admite otras opciones de CI/CD
  • Implementar clústeres separados o múltiples para servicios de infraestructura y aplicação

Esperamos que nuestro trabajo pueda convertirse en un marco para otras plataformas de referencia y un punto de partida “robable” para desarrollar todo tipo de aplicações modernas diferenciadas. Debido a que Kubernetes es un mecanismo tan poderoso tanto para crear aplicações modernas como para potenciar las operaciones de plataformas y la cultura de cambio a la izquierda, cuanto más expansiva y conectable sea nuestra arquitectura de referencia, mejor. Estamos entusiasmados por ver lo que ustedes, la comunidad, piensan de nuestro trabajo y, lo que es más importante, lo que construyen con él.

Introducción a la arquitectura de referencia

Descarga nuestra plataforma de referencia y pruébala. Cuéntanos qué piensas y qué quieres que construyamos a continuación. Las solicitudes de extracción son más que bienvenidas. Estamos ansiosos de asociarnos con usted en la próxima generación de aplicações modernas, adaptables y “robables” que transmitan su conocimiento a la comunidad y a todos los desarrolladores.

Publicaciones relacionadas

Esta publicación es parte de una serie. A medida que vayamos añadiendo capacidades a MARA, publicaremos los detalles en el blog:


"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.