Compartir a través de


Patrones de diseño en la nube

Los arquitectos diseñan cargas de trabajo mediante la combinación de servicios de plataforma, funcionalidad y código para cumplir los requisitos funcionales y no funcionales de las cargas de trabajo. El diseño de cargas de trabajo requiere comprender esos requisitos de carga de trabajo y, a continuación, elegir topologías y enfoques para resolver los desafíos presentados por las restricciones de la carga de trabajo. Patrones de diseño en la nube que abordan muchos desafíos comunes.

El diseño de sistemas está profundamente influenciado por los patrones de diseño. La infraestructura, el código y los sistemas distribuidos están diseñados en torno a una combinación de patrones de diseño. Estos patrones de diseño son útiles para crear aplicaciones confiables, seguras, optimizadas en costos, operativas, y de alto rendimiento en la nube.

Estos patrones de diseño no son específicos de ninguna tecnología y son relevantes para cualquier sistema distribuido, ya sea hospedado en Azure, otras plataformas en la nube y algunos incluso pueden extenderse a cargas de trabajo locales o híbridas.

Los patrones de diseño en la nube ayudan al proceso de diseño

Las cargas de trabajo en la nube son propensas a las falacias de la computación distribuida. Algunos ejemplos de falacias de diseño de nubes son:

  • La red es confiable
  • La latencia es cero
  • El ancho de banda es infinito
  • La red es segura
  • La topología no cambia
  • Hay un administrador
  • El control de versiones de componentes es sencillo
  • La implementación de observabilidad se puede retrasar

Los patrones de diseño no eliminan nociones como estas, pero pueden ayudar a tomar conciencia de ellas, compensarlas y mitigarlas. Cada modelo de nube tiene sus propias ventajas y desventajas. Debe prestar más atención a por qué está eligiendo un patrón determinado que a cómo implementarlo.

Una carga de trabajo bien diseñada considera cómo se deben utilizar estos patrones de diseño de toda la industria como bloques fundamentales de construcción para el diseño de cargas de trabajo. Cada pilar del Marco de buena arquitectura de Azure se representa en estos patrones de diseño, a menudo con el patrón de diseño que introduce inconvenientes con los objetivos de otros pilares.

Catálogo de patrones

Cada patrón de este catálogo describe el problema que aborda el patrón, las consideraciones para aplicar el patrón y un ejemplo basado en Microsoft Azure. Algunos patrones incluyen ejemplos de código o fragmentos de código que muestran cómo implementar el patrón en Azure.

Patrón Resumen Pilares de Azure Well-Architected Framework
Ambassador Crea servicios auxiliares que envían solicitudes de red en nombre de una aplicación o servicio de consumidor.
  • Fiabilidad
  • Seguridad
Anti-Corruption Layer Implementa una capa de fachada o de adaptador entre una aplicación moderna y un sistema heredado.
  • Excelencia operativa
Solicitud y respuesta asincrónicas Desacople el procesamiento de back-end de un host de front-end en el que el procesamiento de back-end tiene que ser asincrónico, pero en el que, aún así, el front-end necesita una respuesta clara.
  • Eficiencia del rendimiento
Backends for Frontends Cree servicios de backend separados para ser utilizados por aplicaciones o interfaces de frontend específicas.
  • Fiabilidad
  • Seguridad
  • Eficiencia del rendimiento
Bulkhead Aísle los elementos de una aplicación en grupos para que, si se produce un error, los demás seguirán funcionando.
  • Fiabilidad
  • Seguridad
  • Eficiencia del rendimiento
Cache-Aside Cargar datos a petición en una memoria caché desde un almacén de datos.
  • Fiabilidad
  • Eficiencia del rendimiento
Organización Permita a cada servicio decidir cuándo y cómo se procesa una operación empresarial, en lugar de depender de un orquestador central.
  • Excelencia operativa
  • Eficiencia del rendimiento
Circuit Breaker Controla los errores que pueden tardar una cantidad variable de tiempo en solucionarse durante la conexión a un recurso o servicio remoto.
  • Fiabilidad
  • Eficiencia del rendimiento
Comprobación de notificaciones Divida un mensaje grande en una comprobación de notificaciones y una carga para evitar sobrecargar un bus de mensajes.
  • Fiabilidad
  • Seguridad
  • Optimización de costos
  • Eficiencia del rendimiento
Compensating Transaction Deshace el trabajo realizado mediante una serie de pasos, que conjuntamente definen una operación definitivamente coherente.
  • Fiabilidad
Competing Consumers Permite que varios consumidores simultáneos procesen los mensajes recibidos en el mismo canal de mensajería.
  • Fiabilidad
  • Optimización de costos
  • Eficiencia del rendimiento
Compute Resource Consolidation Consolidar varias tareas o operaciones en una sola unidad de cálculo.
  • Optimización de costos
  • Excelencia operativa
  • Eficiencia del rendimiento
CQRS Segrega las operaciones de lectura de datos de las de actualización de datos mediante interfaces independientes.
  • Eficiencia del rendimiento
Sellos de implementación Implemente varias copias independientes de los componentes de la aplicación, incluidos los almacenes de datos.
  • Excelencia operativa
  • Eficiencia del rendimiento
Configuración de la carga de trabajo perimetral Centralice la configuración para abordar el desafío de configurar varios sistemas y dispositivos en la planta de la tienda.
Event Sourcing Usa un almacén de solo anexar para registrar la serie completa de eventos que describen las acciones realizadas en los datos de un dominio.
  • Fiabilidad
  • Eficiencia del rendimiento
External Configuration Store Extrae la información de configuración del paquete de implementación de la aplicación y la lleva a una ubicación centralizada.
  • Excelencia operativa
Federated Identity La autenticación se delega a un proveedor de identidad externo.
  • Fiabilidad
  • Seguridad
  • Eficiencia del rendimiento
Gatekeeper Protege aplicaciones y servicios mediante una instancia de host dedicada que actúa como agente entre los clientes y la aplicación o servicio, valida y sanea las solicitudes, y pasa las solicitudes y datos entre ellos.
  • Seguridad
  • Eficiencia del rendimiento
Gateway Aggregation Usa una puerta de enlace para agregar varias solicitudes individuales en una sola solicitud.
  • Fiabilidad
  • Seguridad
  • Excelencia operativa
  • Eficiencia del rendimiento
Gateway Offloading Descarga una funcionalidad de servicio compartida o especializada en un proxy de puerta de enlace.
  • Fiabilidad
  • Seguridad
  • Optimización de costos
  • Excelencia operativa
  • Eficiencia del rendimiento
Gateway Routing Enruta las solicitudes a varios servicios mediante un solo punto de conexión.
  • Fiabilidad
  • Excelencia operativa
  • Eficiencia del rendimiento
Nodo geográfico Implementar servicios back-end en un conjunto de nodos geográficos, cada uno de los cuales puede atender la solicitud de cualquier cliente en cualquier región.
  • Fiabilidad
  • Eficiencia del rendimiento
Health Endpoint Monitoring Implementa comprobaciones funcionales en una aplicación a la que pueden acceder herramientas externas a través de los puntos de conexión expuestos en intervalos regulares.
  • Fiabilidad
  • Excelencia operativa
  • Eficiencia del rendimiento
Index Table Crea índices en los campos de los almacenes de datos a los que suelen hacer referencia las consultas.
  • Fiabilidad
  • Eficiencia del rendimiento
Leader Election Coordina las acciones realizadas por una colección de instancias de tareas de colaboración de una aplicación distribuida mediante la elección de una instancia como líder que asume la responsabilidad de administrar las demás instancias.
  • Fiabilidad
Materialized View Genera vistas rellenadas previamente de los datos en uno o más almacenes de datos cuando los datos no tienen el formato idóneo para las operaciones de consulta requeridas.
  • Eficiencia del rendimiento
Puente de mensajería Cree un intermediario para habilitar la comunicación entre sistemas de mensajería que, de lo contrario, son incompatibles debido al protocolo o al formato.
  • Optimización de costos
  • Excelencia operativa
Pipes and Filters Desglosa una tarea que realiza un procesamiento complejo en una serie de elementos independientes que se pueden volver a utilizar.
  • Fiabilidad
Priority Queue Clasifica por orden de prioridad las solicitudes enviadas a los servicios para que aquellas con una prioridad más alta se reciban y procesen más rápidamente que las que tienen una prioridad más baja.
  • Fiabilidad
  • Eficiencia del rendimiento
Publicador y suscriptor Permita que una aplicación anuncie eventos de forma asincrónica a varios consumidores interesados, sin necesidad de emparejar los remitentes con los receptores.
  • Fiabilidad
  • Seguridad
  • Optimización de costos
  • Excelencia operativa
  • Eficiencia del rendimiento
Cuarentena Asegúrese de que los recursos externos cumplen un nivel de calidad acordado por el equipo antes de autorizarlos a consumirlos en la carga de trabajo.
  • Seguridad
  • Excelencia operativa
Queue-Based Load Leveling Usa una cola que actúa como búfer entre una tarea y un servicio que invoca para equilibrar cargas pesadas intermitentes.
  • Fiabilidad
  • Optimización de costos
  • Eficiencia del rendimiento
Patrón de límite de frecuencia Puede usar un patrón de limitación para ayudarle a evitar o minimizar los errores de limitación relacionados con estos límites y para ayudarle a predecir con más precisión el rendimiento.
  • Fiabilidad
Retry Permite que una aplicación trate los errores temporales anticipados cuando intenta conectarse a un servicio o un recurso de red, mediante el reintento de forma transparente de una operación que anteriormente produjo error.
  • Fiabilidad
Saga Administre la coherencia de los datos entre los microservicios en escenarios de transacciones distribuidas. Una saga es una secuencia de transacciones que actualiza cada servicio y publica un mensaje o evento para desencadenar el siguiente paso de la transacción.
  • Fiabilidad
Scheduler Agent Supervisor Coordina un conjunto de acciones en un conjunto distribuido de servicios y otros recursos remotos.
  • Fiabilidad
  • Eficiencia del rendimiento
Convoy secuencial Procesa un conjunto de mensajes relacionados en un orden definido, sin bloquear el procesamiento de otros grupos de mensajes.
  • Fiabilidad
Sharding Divida un almacén de datos en un conjunto de particiones horizontales o particiones de base de datos.
  • Fiabilidad
  • Optimización de costos
Sidecar Implementa componentes de una aplicación en un proceso o contenedor independientes para proporcionar aislamiento y encapsulación.
  • Seguridad
  • Excelencia operativa
Static Content Hosting Implemente contenido estático en un servicio de almacenamiento basado en la nube que pueda entregarlo directamente al cliente.
  • Optimización de costos
Fig Strangler Migra de forma incremental un sistema heredado reemplazando gradualmente funciones específicas por los servicios y aplicaciones nuevas.
  • Fiabilidad
  • Optimización de costos
  • Excelencia operativa
Limitaciones Controlan el consumo de recursos que usa una instancia de una aplicación, un inquilino individual o un servicio completo.
  • Fiabilidad
  • Seguridad
  • Optimización de costos
  • Eficiencia del rendimiento
Valet Key Usa un token o clave que proporciona a los clientes acceso directo restringido a un recurso o servicio específico.
  • Seguridad
  • Optimización de costos
  • Eficiencia del rendimiento

Paso siguiente

Revise los patrones de diseño desde la perspectiva del pilar de Azure Well-Architected que el patrón busca optimizar.