node.js / golang이  큰 장점을 가진 언어임에도 불구하고 쉽게 개발자들이 선뜻 적용하지 못하는 이유가 새로운 분야의 학습 곡선과 문제가 발생했을시 drill down해서 해결하는 노하우가 아직 널리 공유되지 못하는 이유이기도 하며, 여러 프레임워크의 아키텍처나 구조등이 개발자에게 널리 공유되지 못한것도 있다.

일전의 포스트에서와 본것과 같이 etcd를 요즘 살펴보고 있는데, go lang을 잘 적용한 프로젝트라서 보려고 해도 이 녀석의 아키텍처가 잘 공유되어 있지는 않다.

어떠한 철학으로 layering되어 있고, 의존성들은 어떻게 관리하는지 더 나아가 profiling까지 보고 싶으나… golang은 아직 역사가 짧기 때문에 profiling이나 의존성 관계를 파악하는 도구등이 java / .net 진영보다는 부족하다고 할수 있다.

급한데로 찾아보니 나랑 비슷한 고민을 해본 사람이 있고 나름 괜찮은 프로젝트가 있어서 공유한다.

go 파일간의 dependency를 그래프로 시각해 주는 툴들

살펴본 결과 goviz가 더 나아 보인다.  일단 depth 별로 추출해주는 기능과 다양한 포멧을 지원해서 편하다.

goviz 사용법

1. graphviz 설치

운영체제 별로 적절한 도구를 활용해 설치하시길

 brew install graphviz 

2. go get 으로 goviz 다운 받기

 go get github.com/hirokidaichi/goviz

3. 분석할 프로젝트 go get으로 다운 받기

 go get github.com/coreos/etcd

4. goviz로 graph 생성하기

 goviz -i github.com/coreos/etcd | dot -Tpng -o etcd.png

5. goviz로 depth별로 graph 생성하기
depth별로 생성할수 있는 기능에 칭찬을 하고 싶다.

goviz -i github.com/coreos/etcd -s github.com/coreos/etcd -d 1 | dot -Tpng -o etcddepth1.png
goviz -i github.com/coreos/etcd -s github.com/coreos/etcd -d 2 | dot -Tpng -o etcddepth2.png
goviz -i github.com/coreos/etcd -s github.com/coreos/etcd -d 3 | dot -Tpng -o etcddepth3.png 

생성된 결과물들.

etcd 레이어상 1단계는 사실 별 의미없는 결과물이 나오는듯 하다.  depth(단계) 별로 나온 결과물을 공유한다.

아쉬운 점은 d3를 통해서 collapsible 하게 접힌다거나, circular dependency를 상위개념에서 볼수 있다면 정말 좋을듯 하다.

 

  • 2단계

etcddepth2

  • 3단계

etcddepth3

  • 전체

etcd

 

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

카테고리

Framework

태그

, ,