Compartir a través de


Resumen: Diseño de aplicaciones nativas de nube

Sugerencia

Este contenido es un extracto del libro electrónico, Arquitectura de aplicaciones .NET nativas de nube para Azure, disponible en .NET Docs o como un PDF descargable gratuito que se puede leer sin conexión.

Miniatura de la portada del libro electrónico

En resumen, estas son conclusiones importantes de esta guía:

  • Nativo en la nube consiste en diseñar aplicaciones modernas que permiten adaptarse a cambios rápidos, funcionar a gran escala y ser resilientes, en entornos modernos y dinámicos como nubes públicas, privadas e híbridas.

  • Cloud Native Computing Foundation (CNCF) es un consorcio influyente de código abierto de más de 300 grandes corporaciones. Es responsable de impulsar la adopción de la informática nativa en la nube en las pilas de tecnología y en la nube.

  • Las directrices de CNCF recomiendan que las aplicaciones nativas de la nube adopten seis pilares importantes, como se muestra en la figura 11-1:

    Pilares fundamentales nativos de la nube

    Figura 11-1. Pilares fundamentales nativos de la nube

  • Estos pilares nativos de la nube incluyen:

    • La nube y su modelo de servicio subyacente
    • Principios de diseño modernos
    • Microservicios
    • Contenedorización y orquestación de contenedores
    • Servicios de respaldo basados en la nube, como bases de datos y agentes de mensajes
    • Automatización, incluida la infraestructura como código y la implementación de código
  • Kubernetes es el entorno de hospedaje preferido para la mayoría de las aplicaciones nativas de la nube. Los servicios más pequeños y simples a veces se hospedan en plataformas sin servidor, como Azure Functions. Entre muchas características clave de automatización, ambos entornos proporcionan escalado automático para controlar los volúmenes de cargas de trabajo fluctuantes.

  • La comunicación del servicio se convierte en una decisión de diseño significativa al construir una aplicación nativa de la nube. Las aplicaciones suelen exponer una puerta de enlace de API para administrar la comunicación de cliente front-end. A continuación, los microservicios de back-end se esfuerzan por comunicarse entre sí mediante la implementación de patrones de comunicación asincrónicos, siempre que sea posible.

  • gRPC es un marco moderno y de alto rendimiento que evoluciona el protocolo de llamada a procedimientos remotos (RPC) antiguo. Las aplicaciones nativas de la nube suelen adoptar gRPC para simplificar la mensajería entre los servicios back-end. gRPC usa HTTP/2 como protocolo de transporte. Puede ser hasta 8 veces más rápido que la serialización JSON con tamaños de mensaje de 60 a 80% más pequeños. gRPC es de código abierto y está administrado por Cloud Native Computing Foundation (CNCF).

  • Los datos distribuidos son un modelo que a menudo implementan las aplicaciones nativas de la nube. Las aplicaciones separan la funcionalidad empresarial en microservicios pequeños e independientes. Cada microservicio encapsula sus propias dependencias, datos y estado. El modelo de base de datos compartido clásico evoluciona en una de las muchas bases de datos más pequeñas, cada una de las cuales se alinea con un microservicio. Cuando se calman las aguas, emergemos con un diseño que expone un modelo database-per-microservice.

  • No-SQL las bases de datos hacen referencia a almacenes de datos no relacionales y de alto rendimiento. Se destacan en sus características de facilidad de uso, escalabilidad, resistencia y disponibilidad. Los servicios de gran volumen que requieren tiempo de respuesta en subsegundos favorecen las bases de datos NoSQL. La proliferación de tecnologías NoSQL para sistemas nativos en la nube distribuidos no puede ser exagerada.

  • NewSQL es una tecnología emergente de base de datos que combina la escalabilidad distribuida de NoSQL y las garantías ACID de una base de datos relacional. Las bases de datos NewSQL tienen como destino sistemas empresariales que deben procesar grandes volúmenes de datos, entre entornos distribuidos, con cumplimiento transaccional o ACID completo. Cloud Native Computing Foundation (CNCF) cuenta con varios proyectos de base de datos NewSQL.

  • La resistencia es la capacidad de su sistema de reaccionar ante errores y seguir siendo funcional. Los sistemas nativos de la nube adoptan una arquitectura distribuida en la que el error es inevitable. Las aplicaciones deben construirse para responder elegantemente al error y volver rápidamente a un estado de funcionamiento completo.

  • Las mallas de servicio son una capa de infraestructura configurable con funcionalidades integradas para controlar la comunicación del servicio y otros desafíos transversales. Desacoplan las responsabilidades transversales del código empresarial. Estas responsabilidades se trasladan a un intermediario de servicio. Conocido como Sidecar pattern, el proxy se implementa en un proceso independiente para proporcionar aislamiento del código empresarial.

  • La observabilidad es una consideración clave de diseño para las aplicaciones nativas de la nube. A medida que los servicios se distribuyen en un clúster de nodos, el registro centralizado, la supervisión y las alertas, son obligatorios. Azure Monitor es una colección de herramientas basadas en la nube diseñadas para proporcionar visibilidad sobre el estado del sistema.

  • La infraestructura como código es una práctica ampliamente aceptada que automatiza el aprovisionamiento de plataformas. La infraestructura y las implementaciones son automatizadas, coherentes y repetibles. Herramientas como Azure Resource Manager, Terraform y la CLI de Azure, le permiten generar scripts declarativos de la infraestructura en la nube que necesita.

  • La automatización del código es un requisito para las aplicaciones nativas de la nube. Los sistemas de CI/CD modernos ayudan a cumplir este principio. Proporcionan pasos de compilación e implementación independientes que ayudan a garantizar código coherente y de calidad. La fase de compilación transforma el código en un artefacto binario. La fase de versión recoge el artefacto binario, aplica la configuración del entorno externo e lo implementa en un entorno especificado. Azure DevOps y GitHub son entornos completos de DevOps.