Introducción a las aplicaciones nativas en la nube
Otro día, en la oficina, trabajando en "lo siguiente importante".
Los anillos de los teléfonos móviles. Es su contratador descriptivo, el que llama a diario con nuevas oportunidades interesantes.
Pero esta vez es diferente: inicio, capital y mucha financiación.
La mención de la nube, los microservicios y la tecnología de vanguardia le impulsa sobre el perímetro.
Avance rápidamente unas semanas y ahora es un nuevo empleado en una sesión de diseño que diseña una aplicación de comercio electrónico importante. Va a competir con los sitios de comercio electrónico líderes.
¿Cómo se compilará?
Si sigue las instrucciones de los últimos 15 años, lo más probable es que compile el sistema que se muestra en la figura 1.1.

Figura 1-1. Diseño monolítica tradicional
Construye una aplicación principal de gran tamaño que contiene toda la lógica de dominio. Incluye módulos como Identity, Catalog, Ordering, etc. Se comunican directamente entre sí dentro de un único proceso de servidor. Los módulos comparten una base de datos relacional grande. El núcleo expone la funcionalidad a través de una interfaz HTML y una aplicación móvil.
¡Enhorabuena! Acaba de crear una aplicación monolítica.
No todo es malo. Los monolíticas ofrecen algunas ventajas distintas. Por ejemplo, son fáciles de...
- build
- test
- implementar
- Solucionar problemas
- escalado vertical
Muchas aplicaciones correctas que existen hoy en día se crearon como monolíticas. La aplicación es un éxito y continúa evolucionando, iteración tras iteración, agregando más funcionalidad.
Sin embargo, en algún momento empieza a sentirse incomod. Se encuentra con la pérdida del control de la aplicación. A medida que pasa el tiempo, la sensación se vuelve más intensa y, finalmente, entra en un estado conocido como Fear Cycle :
- La aplicación se ha vuelto tan abrumadoramente complicada que ninguna persona la entiende.
- Teme realizar cambios: cada cambio tiene efectos secundarios impositivos y costosos.
- Las nuevas características o correcciones se vuelven complicadas, lentas y costosas de implementar.
- Cada versión es lo más pequeña posible y requiere una implementación completa de toda la aplicación.
- Un componente inestable puede bloquear todo el sistema.
- Las nuevas tecnologías y marcos de trabajo no son una opción.
- Es difícil implementar metodologías de entrega ágiles.
- La arquitectura establece en a medida que la base de código se degrada con "correcciones rápidas" sin fin.
- Por último, los consultores vienen y le dicen que vuelva a escribirlo.
¿Le resulta familiar?
Muchas organizaciones han abordado este ciclo monolítica del miedo mediante la adopción de un enfoque nativo de la nube para crear sistemas. En la figura 1-2 se muestra el mismo sistema creado que aplica técnicas y prácticas nativas de la nube.

Figura 1-2. Diseño nativo de la nube
Observe cómo la aplicación se descompone en un conjunto de microservicios aislados pequeños. Cada servicio es independiente y encapsula su propio código, datos y dependencias. Cada uno se implementa en un contenedor de software y se administra mediante un orquestador de contenedores. En lugar de una base de datos relacional grande, cada servicio posee su propio almacén de datos, cuyo tipo varía en función de las necesidades de datos. Observe cómo algunos servicios dependen de una base de datos relacional, pero otros de bases de datos NoSQL. Un servicio almacena su estado en una caché distribuida. Observe cómo todo el tráfico se enruta a través de un servicio de puerta de enlace de API responsable de enrutar el tráfico a los servicios back-end principales y aplicar muchos problemas transversales. Lo más importante es que la aplicación aprovecha al máximo las características de escalabilidad, disponibilidad y resistencia que se encuentran en las plataformas en la nube modernas.
Informática nativa en la nube
Hmm... Se acaba de usar el término Nativo de la nube. Su primera reflexión podría ser"¿ Qué significa exactamente eso?" ¿Otra palabra del sector que los proveedores de software han creado para comercializar más cosas?"
Afortunadamente, es muy diferente y esperamos que este libro le ayude a convencerle.
En poco tiempo, la nube nativa se ha convertido en una tendencia impulsora en el sector del software. Es una nueva manera de construir sistemas grandes y complejos. El enfoque aprovecha al máximo las prácticas modernas de desarrollo de software, las tecnologías y la infraestructura en la nube. La nube nativa cambia la forma en que diseña, implementa, implementa y operacionaliza los sistemas.
A diferencia de la publicidad continua que impulsa nuestro sector, la nube nativa es real. Considere cloud native computing foundation (CNCF), un consorcio de más de 400 grandes empresas. Su mente es hacer que la informática nativa de la nube sea ubicua entre la tecnología y las pilas de nube. Como uno de los grupos de código abierto más importantes, hospeda muchos de los proyectos de código abierto de más rápido crecimiento en GitHub. Estos proyectos incluyen Kubernetes, Prometheus, Helm, Envoyy gRPC.
LA CNCF fomenta un ecosistema de código abierto y neutralidad del proveedor. A continuación, este libro presenta principios, patrones y procedimientos recomendados nativos de la nube que son independientes de la tecnología. Al mismo tiempo, analizamos los servicios y la infraestructura disponibles en la nube Microsoft Azure para construir sistemas nativos de la nube.
Por lo tanto, ¿qué es exactamente Cloud Native? Relajese y deje que le ayudemos a explorar este nuevo mundo.