Archyno
UMLPráctica del modelado

Arquitectura AWS, modelada en UML

El diagrama de AWS habitual es un muro de iconos de servicios que dice qué productos has comprado. Este es el otro tipo: dos diagramas que dicen qué puede alcanzar qué, por qué puerto, y qué partes son tuyas y reemplazables.

8 min de lecturaUML 2.5.135 de 35

La respuesta corta

  • Un muro de iconos dice qué productos has comprado. Un diagrama de despliegue nombra protocolos, puertos y direcciones, que es lo que pregunta una revisión de seguridad.
  • Una VPC o una región es un nodo que contiene a los demás. La relación es la contención, así que no hace falta flecha y la frontera se ve.
  • Incluye un servicio si un camino de petición lo atraviesa o guarda estado que tendrías que migrar. Deja fuera IAM, CloudWatch y Secrets Manager.
  • Parte la imagen en dos. La vista de componentes sobrevive intacta a un cambio de plataforma; solo la de despliegue cambia con la infraestructura.
Diagrama de despliegue UML de una carga en AWS. Un navegador alcanza CloudFront y S3 por HTTPS. CloudFront alcanza un Application Load Balancer, que alcanza un servicio ECS Fargate que contiene un artefacto api.jar. El servicio alcanza RDS PostgreSQL por TCP 5432. Todo salvo el navegador está dentro de una frontera AWS eu-central-1.
Una carga de AWS como diagrama de despliegue. La caja alrededor de cuatro de los cinco nodos es la región; las etiquetas de las rutas son el protocolo y el puerto, que es la información que un diagrama de iconos deja fuera.

01Dos tipos de diagrama de AWS#

El familiar es un lienzo de iconos de servicios con líneas entre ellos. Es genuinamente bueno en una cosa - mostrar qué productos están en juego a alguien que ya sabe qué hacen esos productos - y por eso toda presentación de AWS contiene uno.

Lo que no lleva es dirección, protocolo, puerto, ni si una línea significa "llama por la red" o "lo configura". Esos cuatro son todo el contenido de una revisión de seguridad, y son lo que alguien mirando una alerta a las tres de la mañana intenta reconstruir. Un diagrama de despliegue los lleva, a costa de parecerse menos a un folleto.

02Leer la topología#

Tres cosas de la figura de cabecera merecen copiarse a la tuya, y ninguna va de AWS.

  1. La región es una caja, no una etiqueta. El anidamiento es la relación de contención, así que la pregunta de frontera - qué está dentro de eu-central-1 y qué no - la responde la geometría en vez de una leyenda. Que el navegador esté fuera es el hecho más importante del diagrama.
  2. Cada ruta lleva un protocolo y un puerto."HTTPS", "TCP 5432". Una línea sin etiquetar entre un balanceador y un servicio es una línea que nunca se ha contrastado con un grupo de seguridad.
  3. El artefacto va dentro del nodo que lo ejecuta. api.jar dentro del servicio Fargate, y no al lado con una flecha. Qué está desplegado dónde es la pregunta para la que existe esta clase de diagrama.

Lo que falta a propósito: IAM, CloudWatch, Secrets Manager, la pasarela NAT. Todos son reales y ninguno es participante de una ruta de petición: son configuración, y ponerlos en el diagrama duplica su tamaño sin responder a ninguna pregunta que alguien haya hecho.

03El mismo sistema sin los proveedores#

Diagrama de componentes UML. Un componente Order API depende de una interfaz IOrderStore que realiza un adaptador de RDS, y de una interfaz IFileStore que realiza un adaptador de S3.
La vista de componentes. Aquí nada se llama RDS ni S3 salvo los dos adaptadores, así que la pregunta "¿qué costaría salir de AWS?" tiene una respuesta a la que puedes señalar.

Este es el diagrama que hace la arquitectura en la nube revisable en vez de solo documentada. La Order API depende de IOrderStore e IFileStore; los adaptadores nombran los productos. Todo lo que está por encima de los adaptadores es portable por construcción, y todo lo que no lo es cabe en dos cajas que puedes contar.

Es además la mitad que no cambia cuando cambia la infraestructura. Pasa de ECS a EKS, o de eu-central-1 a dos regiones, y la figura de cabecera se redibuja mientras esta queda intacta, que es la razón práctica para tenerlas separadas en vez de fundirlas en una sola imagen impresionante.

En una línea cada uno

  1. 01Los diagramas de iconos nombran productos; los de despliegue nombran rutas, protocolos y puertos.
  2. 02Dibuja la región como un nodo contenedor: el anidamiento es la frontera, no hace falta flecha.
  3. 03Etiqueta cada ruta de comunicación con su protocolo y su puerto, o no se ha comprobado.
  4. 04Pon los artefactos dentro del nodo que los ejecuta.
  5. 05Deja fuera IAM, los registros y los secretos: son configuración, no participantes.
  6. 06Mantén aparte la vista de componentes: sobrevive al cambio de plataforma que invalida la topología.

El mismo tratamiento aplicado a una tienda está en la arquitectura de comercio electrónico, modelada, y la cuestión de las fronteras de servicio se lleva más lejos en el ejemplo de microservicios.

04Preguntas frecuentes#

¿Un diagrama de arquitectura AWS debe ir en UML o con iconos de AWS?

Ambos, para lectores distintos. El diagrama de iconos es mejor para vender y para incorporar a alguien, porque todo el mundo reconoce los productos; un diagrama de despliegue UML es mejor documento de trabajo, porque nombra protocolos, puertos y direcciones, que es lo que preguntan una revisión de seguridad y una incidencia a las tres de la mañana.

¿Cómo se dibuja una VPC o una región en UML?

Como un nodo que contiene a los demás, dibujado anidándolos dentro. La relación es la contención misma, así que no hace falta flecha, y la pregunta de la frontera - qué queda dentro de la región y qué fuera - se ve en la imagen en vez de en una leyenda.

¿Hay que dibujar todos los servicios de AWS que usamos?

No, y dibujarlos todos es lo que vuelve inservibles estos diagramas. Incluye un servicio si un camino de petición lo atraviesa o si guarda estado que tendrías que migrar; deja fuera lo que es configuración y no participante, como IAM, CloudWatch o Secrets Manager.

¿Cómo evitar que un diagrama cloud quede obsoleto tras una migración?

Pártelo en dos. La vista de componentes nombra contratos de los que depende tu código y sobrevive intacta a un cambio de plataforma; solo la vista de despliegue tiene que cambiar, con lo que un redibujado completo se convierte en editar un diagrama.

En esta serie

Lecturas relacionadas

Todos los artículos