D2 agora permite criar diagramas de arquitetura com TALA localmente, salvar o código no Git e comparar três motores sem reescrever o arquivo.
O que mudou no D2 v0.9.0?
TALA se tornou open source sob a licença MPL-2.0 e agora vem incluído no D2 v0.9.0. Anteriormente, a Terrastruct o distribuía separadamente como um mecanismo proprietário.
A mudança prática é mais interessante do que o anúncio da licença: um projeto D2 já pode usar TALA localmente sem uma instalação proprietária adicional. Você também pode renderizar o mesmo código com TALA, Dagre ou ELK e comparar os resultados diretamente.
TALA foi projetado especificamente para diagramas de arquitetura de software. Em vez de tratar cada diagrama como uma hierarquia que avança em uma única direção, otimiza aspectos como simetria, espaçamento, agrupamento e conexões ortogonais.
O que são D2 e TALA?
D2 é uma linguagem declarativa para criar diagramas: você descreve os componentes e suas relações através de texto, e D2 gera a representação visual.
TALA é um dos mecanismos que decide onde cada componente aparece. D2 inclui três opções principais:
- Dagre, o mecanismo padrão, gera rapidamente layouts hierárquicos ou em camadas.
- ELK é um mecanismo mais maduro para grafos direcionados, com bom suporte para hierarquias complexas, portas e grafos compostos.
- TALA se concentra em diagramas de arquitetura com uma distribuição mais similar à que um engenheiro desenharia em um quadro branco.
Essa separação é importante. O arquivo .d2 descreve a arquitetura; o mecanismo selecionado determina sua distribuição visual.
Como você pode criar um diagrama de arquitetura com D2?
Comece com uma arquitetura pequena que contenha vários grupos e dependências compartilhadas:
direction: right
client: Web client
edge: Edge {
gateway: API gateway
}
services: Services {
auth: Authentication
orders: Orders
}
data: Data {
database: PostgreSQL
cache: Redis
}
client -> edge.gateway
edge.gateway -> services.auth
edge.gateway -> services.orders
services.auth -> data.database
services.orders -> data.database
services.orders -> data.cache
Salve o código como architecture.d2. Depois de instalar D2 v0.9.0 ou uma versão posterior, confirme a versão instalada:
d2 version
A seguir, renderize o mesmo arquivo com cada mecanismo incluído:
d2 --layout=tala architecture.d2 architecture-tala.svg
d2 --layout=dagre architecture.d2 architecture-dagre.svg
d2 --layout=elk architecture.d2 architecture-elk.svg
SVG é o formato de saída padrão do D2. A CLI também pode exportar para PNG, PDF, PPTX, GIF e formatos de texto, embora a compatibilidade possa variar dependendo do mecanismo e do formato.
Você pode consultar os mecanismos disponíveis com d2 layout e as opções específicas de um deles com um comando como d2 layout dagre.
O que muda ao escolher outro mecanismo de distribuição?
Os componentes e as relações permanecem iguais, mas muda a forma como a arquitetura é visualmente apresentada.
| Mecanismo | Melhor ponto de partida | Principal vantagem | Principal desvantagem |
|---|---|---|---|
| TALA | Arquiteturas de serviços e infraestrutura | Diagramas equilibrados e ortogonais com maior controle espacial | É mais lento e visualmente menos estável em diagramas grandes |
| Dagre | Fluxos de requisições e cadeias de dependências simples | Resultado hierárquico rápido e previsível | Oferece menos flexibilidade para arquiteturas não hierárquicas |
| ELK | Grafos direcionados grandes e sistemas aninhados | Gestão madura de camadas, portas e grafos compostos | Pode produzir um resultado mais mecânico |
Graphviz dot |
Fluxos de trabalho existentes com DOT e grafos altamente configuráveis | Ecossistema maduro e controles de distribuição extensos | Requer um arquivo DOT separado em vez do código D2 |
| Mermaid | Diagramas incorporados em Markdown e plataformas de documentação | Integração conveniente com documentação e suporte para diferentes tipos de diagramas | Menor controle direto sobre a posição de uma arquitetura |
TALA, Dagre e ELK oferecem a comparação mais direta porque D2 pode enviar exatamente o mesmo diagrama para os três mecanismos.
Graphviz e Mermaid fazem parte da comparação por outro motivo: são alternativas que muitos desenvolvedores já usam. Eles não são mecanismos intercambiáveis dentro de D2, então reproduzir a arquitetura requer arquivos equivalentes em DOT e Mermaid.
TALA é melhor do que Graphviz para diagramas de arquitetura?
TALA é um melhor ponto de partida quando a organização espacial do diagrama comunica informações importantes sobre a arquitetura.
Por exemplo, TALA permite colocar um objeto perto de outro, aplicar direções diferentes dentro dos contêineres e fixar alguns nós através de top e left enquanto continua organizando automaticamente os demais. Esse controle híbrido é útil quando a distribuição automática está próxima do resultado desejado, mas alguns componentes precisam de uma posição deliberada.
Graphviz continua sendo uma opção convincente quando você já tem um fluxo de trabalho baseado em DOT ou precisa de sua coleção madura de mecanismos e atributos. Seu mecanismo dot funciona especialmente bem com hierarquias direcionadas: organiza os nós por patamares, orienta as conexões em uma direção coerente e tenta reduzir os cruzamentos e o comprimento das linhas.
Portanto, a decisão não é apenas visual. Também depende da linguagem de origem, das ferramentas e do grau de controle que você deseja manter.
Quando é melhor usar Dagre ou ELK em vez de TALA?
Use Dagre quando a velocidade e um fluxo claro de cima para baixo ou da esquerda para a direita forem mais importantes do que a composição arquitetônica. É um bom ponto de partida para grafos de dependências pequenos e pipelines simples.
Use ELK quando o grafo for grande, profundamente aninhado ou dominado por relações direcionadas. O ELK Layered oferece suporte para grafos compostos, portas, vários estilos de conexão e inúmeras opções de configuração.
Até mesmo o autor do TALA recomenda considerar Dagre ou ELK para grafos acíclicos direcionados e extensos. Um mecanismo especializado em arquitetura não ganha automaticamente com todos os conjuntos de dados que representam uma arquitetura.
Onde o Mermaid se encaixa?
Mermaid continua sendo uma alternativa prática quando o diagrama deve existir diretamente dentro de um fluxo de documentação baseado em Markdown.
Oferece uma sintaxe específica para diagramas de arquitetura baseada em grupos, serviços, conexões e pontos de junção. O Mermaid também pode usar Dagre ou ELK com vários tipos de diagramas. Isso demonstra por que „Mermaid versus TALAEssas limitações não são motivos para descartar TALA. São razões para manter o código do diagrama separado da decisão sobre o mecanismo e comparar várias opções antes de adotar uma como padrão.
Você deveria usar D2 e TALA para seus diagramas de arquitetura?
D2 com TALA merece uma tentativa se você quer manter seus diagramas de arquitetura como código versionado sem entregar todo o controle espacial a um mecanismo hierárquico genérico.
O fluxo de trabalho mais sólido também é o mais simples: descreva a arquitetura uma vez, renderize-a com TALA, Dagre e ELK, e conserve o resultado que comunique o sistema com maior clareza. Use Graphviz e Mermaid como comparações mais amplas do fluxo de trabalho, especialmente se DOT ou a integração com Markdown já são importantes para sua equipe.
A abertura do código de TALA facilita consideravelmente essa avaliação. Agora você pode executar localmente toda a pilha de mecanismos de D2, estudar seu comportamento e conservar tanto o código-fonte quanto os arquivos gerados dentro do mesmo fluxo de engenharia.