Compartir a través de


Resumen: Diseño de aplicaciones nativas de la nube

Sugerencia

Este contenido es un extracto del libro electrónico “Architecting Cloud Native .NET Applications for Azure” (Diseño de la arquitectura de aplicaciones .NET nativas en la nube para Azure), disponible en Documentos de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.

Cloud Native .NET apps for Azure eBook cover thumbnail.

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

  • Nativo de la nube consiste en diseñar aplicaciones modernas que adoptan cambios rápidos, grandes escalas y resistencia, en entornos modernos y dinámicos, como nubes públicas, privadas e híbridas.

  • La Cloud Native Computing Foundation (CNCF) es un influyente consorcio 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:

    Cloud-native foundational pillars

    Figura 11-1. Pilares básicos de los elementos 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 que se elige 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 volúmenes de cargas de trabajo fluctuantes.

  • La Comunicación de servicio se convierte en una decisión de diseño significativa al construir una aplicación nativa en 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 de trabajo moderno de alto rendimiento que desarrolla el protocolo de llamada a procedimiento remoto (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 mensajes entre un 60 y un 80 % más pequeños. gRPC es de código abierto y administrada 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 compartida clásica 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.

  • Las bases de datos NoSQL se refieren a los almacenes de datos no relacionales y de alto rendimiento. Destacan por su facilidad de uso, escalabilidad, resistencia y disponibilidad. Los servicios de gran volumen que requieren tiempos de respuesta por debajo de un segundo dan prioridad a los almacenes de datos NoSQL. Es necesario insistir en la importancia de la proliferación de las tecnologías NoSQL en sistemas nativos de nube distribuidos.

  • NewSQL es una tecnología de bases de datos emergente que combina la escalabilidad distribuida de NoSQL y las garantías ACID de una base de datos relacional. Las bases de datos de NewSQL son importantes para conseguir sistemas empresariales que tienen que procesar grandes volúmenes de datos, en entornos distribuidos, con compatibilidad completa con ACID. La Cloud Native Computing Foundation (CNCF) (Fundación de Informática Nativa de Nube) cuenta con varios proyectos de bases de datos NewSQL.

  • La Resilienciaes la habilidad de un sistema para reaccionar frente a un error 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 a errores 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 los otros retos transversales. Desacoplan las responsabilidades transversales del código empresarial. Estas responsabilidades se mueven a un proxy de servicio. Conocido como el Sidecar pattern, el proxy se implementa en un proceso independiente para proporcionar aislamiento del código de tu negocio.

  • La observabilidad es una consideración de diseño clave 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, se convierten en obligatorios. Azure Monitor es una colección de herramientas basadas en la nube diseñadas para proporcionar visibilidad del 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. Las herramientas como Azure Resource Manager, Terraform y Azure CLI, te permiten programar de forma declarativa la infraestructura de 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 de DevOps completos.