TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 21 READS

D2의 자동배치 엔진 'TALA' 오픈소스화, 아키텍처 다이어그램에 무엇이 달라지나

D2의 자동배치 엔진 'TALA' 오픈소스화, 아키텍처 다이어그램에 무엇이 달라지나
SOURCE IMAGE · HACKER NEWS

다이어그램을 코드로 정의하는 도구 D2를 만든 Terrastruct가 자사의 자동배치(autolayout) 알고리즘 TALA(Terrastruct's AutoLayout Algorithm)를 오픈소스로 공개했다. 라이선스는 D2와 동일한 MPL-2.0이며, TALA는 D2 v0.9.0에 번들로 포함돼 배포된다. 별도 설치나 계정 없이 D2를 설치한 뒤 --layout=tala 옵션을 지정하면 바로 쓸 수 있고, 100% 클라이언트 사이드로 동작하는 웹 플레이그라운드(play.d2lang.com)에서도 시험해볼 수 있다. 그동안 D2의 기본 배치 엔진과 함께 선택지로만 존재하던 TALA가 소스까지 열리면서, 배치 로직을 뜯어보거나 개선을 제안할 수 있는 길이 열린 셈이다.

DAG가 아니라 화이트보드에 가까운 배치

TALA의 성격을 이해하려면 기존 자동배치 방식과의 차이를 짚어야 한다. 소프트웨어 다이어그램에서 흔히 쓰이는 배치 엔진은 방향성 비순환 그래프(DAG)를 기반으로 한 방향으로 뻗어나가는 형태가 많다. 위에서 아래로, 혹은 왼쪽에서 오른쪽으로 노드가 층층이 쌓이는 트리 형태가 대표적이다. 이런 방식은 흐름이 분명한 파이프라인이나 의존성 그래프에는 잘 맞지만, 실제 소프트웨어 아키텍처를 손으로 그릴 때의 모습과는 거리가 있다.

TALA는 소프트웨어 아키텍처 다이어그램을 염두에 두고 설계된 직교(orthogonal) 배치 엔진이다. 즉 한 방향으로 성장하는 대신, 사람이 화이트보드에 그리는 그림에 더 가까운 배치를 지향한다. 개발사는 TALA가 여러 그래프 드로잉 연구 논문의 아이디어를 조합하고 여기에 자체 기법을 더해 미학적인 다이어그램을 만든다고 설명한다. 인용된 논문들은 소스 코드에 명시돼 있다. 여기서 말하는 '미학'은 단일 지표가 아니라 대칭성, 중앙값 거리, 흐름, 유사한 노드의 군집화 등 여러 목표를 동시에 고려한 결과다. 이런 다목적 최적화가 TALA를 일반적인 계층형 배치와 구분 짓는 핵심이다.

부분 고정(pinned) 배치라는 실용적 선택지

이번 공개에서 눈여겨볼 부분은 완전 자동 배치와 수동 배치 사이의 절충점이다. 함께 제시된 예시들은 노드 일부만 좌표를 고정하고 나머지는 알고리즘에 맡기는 '부분 위치 지정'을 보여준다. 예컨대 인쇄 장비 다이어그램에서 네 개의 CMYK 스테이션은 상단 좌표를 공유하고 좌측 좌표를 등간격으로 고정해 인쇄 순서의 기계적 정렬을 유지하도록 했다. 나머지 피더, 카메라, 정합 컨트롤러, 건조기, 프리프레스, 후가공 단계에는 top·left 좌표를 주지 않고 TALA가 알아서 배치했다. 또 다른 예시에서는 섀시 사각형의 앞뒤 모서리에 네 개의 모터 어셈블리를 고정해두고, 그 사이와 주변에 컨트롤러·센서·전원·안전 노드를 배치하는 식이다.

실무적으로 이 방식은 의미가 크다. 다이어그램의 뼈대가 되는 몇몇 요소는 물리적·논리적 정렬이 중요해 손으로 고정하고 싶지만, 나머지 잔가지까지 일일이 좌표를 잡는 것은 유지보수 부담이 크다. 부분 고정은 핵심만 통제하고 세부는 자동화하는 절충을 코드 수준에서 가능하게 한다. 공개된 예시에서 부분 지정 사례는 명시된 고정 노드에만 top/left를 적용하고, 그 외 모든 노드와 모든 컨테이너는 자동으로 배치된다는 점이 분명히 명시됐다.

비교 방식과 남는 한계

함께 공개된 일곱 개의 실제 레이아웃 비교는 D2의 실사용 픽스처에서 가져온 공개 프로젝트 다이어그램을 사용했다. 동일한 D2 소스와 동일한 컴파일러 빌드를 두고 배치 엔진만 바꿔 비교했으며, 소스의 스타일·테마·명시적 그리드 제약은 그대로 유지했다. 일부 픽스처 아이콘은 내장 도형으로 대체된 상태였다. 조건을 통제한 비교라는 점에서, 배치 엔진 교체가 결과물에 미치는 영향을 가늠하기에 적합하다.

다만 개발사 스스로 TALA가 트레이드오프가 없는 도구는 아니라고 못 박은 점은 흘려듣지 말아야 한다. 미학을 위한 다목적 최적화는 그만큼 결과가 상황에 따라 갈릴 수 있다는 뜻이기도 하다. 명확한 단방향 흐름을 강조해야 하는 다이어그램이라면 오히려 DAG 기반 배치가 더 나을 수 있고, 직교 배치 특유의 결과가 모든 그래프에 최적이라고 보장되지도 않는다. 결국 --layout=tala는 기본값을 대체하는 만능 스위치가 아니라, 다이어그램의 성격에 따라 골라 쓰는 선택지로 접근하는 편이 현실적이다.

오픈소스화가 가진 진짜 무게는 여기에 있다. 배치 알고리즘의 결과가 마음에 들지 않을 때 그동안은 블랙박스에 가까웠지만, 이제 소스를 열어 로직을 확인하고 커뮤니티가 개선안을 제출할 수 있다. 개발사도 오픈소스가 가져올 개선을 기대한다고 밝혔다. TALA에 폭넓게 기여한 Gavin Nishizawa와 계층 알고리즘 등을 맡은 Júlio César Batista에 대한 감사도 함께 전해졌다. 다이어그램을 코드로 관리하는 팀이라면, TALA를 도입할지 여부와 별개로 한 번쯤 자사 아키텍처 그림에 적용해 결과를 비교해볼 만하다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://d2lang.com/blog/tala-is-open-source/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...