Auto Layout: organiza tus diagramas de arquitectura al instante
Hay una tarea a la que todo equipo de arquitectura se enfrenta eventualmente: el diagrama ha crecido. Lo que empezo como cinco sistemas bien organizados ahora son veintisiete elementos con cuarenta relaciones, la mitad de ellas cruzandose entre si. Alguien anadio un nuevo contenedor la semana pasada y lo solto en el unico espacio libre — la esquina inferior derecha, conectado por una linea que atraviesa tres nodos mas. El diagrama todavia contiene informacion precisa. Solo que es ilegible.
Entonces alguien pasa una tarde arrastrando cajas. La mitad superior queda bien, luego se dan cuenta de que mover la pasarela API rompe la alineacion de todo lo que esta debajo. Empiezan de nuevo. Una hora despues, el diagrama esta ligeramente mejor. La siguiente persona que anade un elemento lo pone en el lugar equivocado, y el ciclo se repite.
Este es un problema de disposicion, y los problemas de disposicion tienen soluciones algoritmicas. Eso es lo que hace Auto Layout.
Un clic, todo se mueve
Auto Layout esta en la barra de herramientas del diagrama. Haz clic en el boton, y cada elemento de tu diagrama — sistemas, contenedores, componentes, elementos de codigo, overlays y grupos compuestos — se mueve a una posicion optima calculada. Las relaciones se desenredan. Las aristas que se cruzan se separan. La jerarquia se vuelve visible.
La animacion tarda 400 milisegundos. Los nodos se deslizan desde sus posiciones actuales hasta las nuevas con una curva cubica suavizada. Ves la transformacion ocurrir, lo que te ayuda a mantener la orientacion espacial — puedes rastrear donde fue cada elemento en lugar de ver el diagrama saltar repentinamente a una disposicion desconocida.
Como funciona
Bajo el capo, Auto Layout usa ELK.js, el Eclipse Layout Kernel compilado a JavaScript. ELK es un motor de disposicion de grafos que implementa varias decadas de investigacion en dibujo automatico de grafos. Archyl usa su algoritmo por capas, que esta disenado especificamente para grafos dirigidos — exactamente lo que son los diagramas de arquitectura.
El proceso de disposicion se ejecuta en varias fases:
Asignacion de capas
ELK primero asigna cada nodo a una capa basandose en su posicion en el grafo de dependencias. Los elementos sin relaciones entrantes van a la primera capa. Los elementos que dependen solo de elementos de la primera capa van a la segunda. Y asi sucesivamente. Esto crea la jerarquia natural de arriba hacia abajo (o de izquierda a derecha) que hace los diagramas de arquitectura legibles.
Minimizacion de cruces
Dentro de cada capa, ELK reordena los nodos para minimizar el numero de aristas que se cruzan. Usa una tecnica llamada barrido de capas — pasando repetidamente por las capas e intercambiando posiciones de nodos hasta que el conteo de cruces se estabiliza. Menos cruces significa diagramas mas limpios y legibles.
Colocacion de nodos
Una vez que las capas y el orden estan determinados, ELK calcula las coordenadas x/y reales. Archyl usa el algoritmo de Brandes-Koepf con alineacion equilibrada, que produce disposiciones compactas donde los nodos conectados se alinean verticalmente (u horizontalmente en modo izquierda-derecha) siempre que es posible. Esto crea esas flechas rectas satisfactorias entre elementos relacionados.
Enrutamiento de aristas
ELK enruta las aristas usando trazados spline, y Archyl recalcula el punto de conexion optimo — arriba, abajo, izquierda o derecha — para cada relacion basandose en las posiciones finales de los nodos. Si un sistema esta encima de un contenedor, la relacion se conecta desde la parte inferior del sistema hasta la parte superior del contenedor. Si estan lado a lado, la conexion va de izquierda a derecha.
Soporte de grafos compuestos
Los diagramas de arquitectura no son planos. Los contenedores viven dentro de sistemas. Los componentes viven dentro de contenedores. Los overlays agrupan elementos relacionados. Auto Layout maneja todas estas relaciones de anidamiento.
Cuando un sistema contiene contenedores en el diagrama (mostrado como un nodo de grupo compuesto), ELK lo trata como un padre compuesto con hijos internos. Los hijos se disponen dentro del padre, y el padre se redimensiona para ajustarse. La disposicion interna usa el mismo algoritmo que el nivel superior — por capas, con minimizacion de cruces y alineacion — asi que la estructura dentro de un grupo de sistema es tan limpia como la estructura fuera de el.
Los overlays funcionan de la misma manera. Si un overlay tiene elementos configurados, esos elementos se tratan como hijos del overlay durante la disposicion. El overlay se redimensiona y reposiciona para abarcar a sus miembros con el relleno adecuado. Incluso los overlays "flotantes" — aquellos sin asignaciones explicitas de elementos — se manejan: Auto Layout detecta que nodos estan visualmente dentro de los limites del overlay y los mantiene juntos.
Post-procesamiento: alineacion y ajuste a la cuadricula
La salida bruta de ELK es buena pero no perfecta. Archyl aplica dos pasadas de post-procesamiento para refinarla.
Alineacion de cadenas encuentra nodos conectados que estan casi alineados en el eje perpendicular y los fuerza al mismo centro exacto. Esto usa una estructura Union-Find para agrupar cadenas de nodos conectados, luego calcula el centro mediano y alinea toda la cadena. El resultado: flechas perfectamente rectas entre elementos conectados — no mas lineas "casi verticales" que se ven descuidadas.
Resolucion de solapamientos detecta nodos que terminaron demasiado cerca despues de la alineacion y los separa. Se ejecuta iterativamente hasta cinco pasadas, lo que maneja desplazamientos en cascada donde mover un nodo crea un nuevo solapamiento con otro.
Despues de ambas pasadas, cada posicion se ajusta a una cuadricula de 20 pixeles que coincide con el fondo de React Flow. Esto significa que los elementos se alinean precisamente con las lineas de la cuadricula, creando una apariencia pulida e intencional.
Alternar direccion
Auto Layout soporta dos direcciones: De arriba hacia abajo y De izquierda a derecha. Un boton de alternancia junto al boton de Auto Layout te permite cambiar entre ellas.
De arriba hacia abajo es el valor predeterminado y funciona bien para la mayoria de los diagramas de arquitectura — actores externos arriba, sistemas en el medio, infraestructura abajo. De izquierda a derecha funciona mejor para arquitecturas tipo pipeline o vistas orientadas a flujos donde los datos se mueven horizontalmente a traves de etapas de procesamiento.
La direccion afecta todo: asignacion de capas, minimizacion de cruces, cadenas de alineacion y calculo de puntos de conexion. Cambia la direccion y el diagrama entero se reorienta.
Que se persiste
Auto Layout no es solo un efecto visual. Despues de que la animacion se completa, cada posicion calculada se persiste en el servidor. Posiciones de nodos, limites de overlays, dimensiones de grupos compuestos y puntos de conexion de aristas se guardan. Cierra el navegador, vuelve manana, y la disposicion es exactamente como Auto Layout la dejo.
Las actualizaciones de puntos de conexion de aristas se agrupan en una sola llamada API para eficiencia. Los redimensionamientos de overlays se persisten individualmente. Las posiciones de nodos se envian en lote. Nada se pierde.
Vista de Arquitectura Global
Auto Layout funciona tambien en la pagina de Arquitectura Global — no solo dentro de proyectos individuales. Cuando estas viendo sistemas a traves de toda tu organizacion con docenas de relaciones inter-proyecto, la disposicion manual es especialmente dolorosa. Auto Layout lleva la misma organizacion con un clic a la vista global, con el mismo soporte de grafos compuestos para grupos de sistemas que contienen sus contenedores.
Cuando usarlo
Auto Layout es mas util en tres escenarios:
Despues del descubrimiento por IA. Cuando la IA de Archyl analiza un repositorio y genera un modelo C4, las posiciones iniciales se calculan algoritmicamente pero pueden no reflejar la disposicion que tu elegirias. Auto Layout te da un punto de partida limpio.
Despues de cambios significativos. Has anadido cinco nuevos contenedores, reorganizado relaciones y movido componentes entre sistemas. El diagrama se ha desordenado. Auto Layout recalcula todo desde cero.
Al explorar un nuevo proyecto. Te has unido a un proyecto y quieres entender su arquitectura. El diagrama fue dispuesto segun el modelo mental de otra persona. Auto Layout produce una disposicion estandar y legible que hace clara la estructura.
Siempre puedes ajustar elementos individuales despues de ejecutar Auto Layout. Es un punto de partida, no una restriccion.
Para empezar
Auto Layout esta disponible ahora en todos los planes y en cada diagrama — a nivel de proyecto y global. Abre cualquier diagrama, haz clic en el boton Auto Layout en la barra de herramientas y observa como tu arquitectura se organiza sola.
Tu arquitectura merece ser legible. Auto Layout se asegura de que el diagrama no sea un obstaculo.
Para mas informacion sobre como crear diagramas de arquitectura efectivos, consulta la Introduccion al Modelo C4. Para entender como Auto Layout interactua con las vistas inter-proyecto, explora Colaboracion en Tiempo Real y Arquitectura Global. Para analizar las relaciones que Auto Layout organiza, prueba Impact Radar.