처음 보는 코드베이스 앞에서 길을 잃어본 적 있나요
새 회사에 입사했거나, 오픈소스 프로젝트에 기여하려고 남의 코드를 처음 열어봤을 때를 떠올려보세요. 파일은 수백 개고 함수는 수천 개인데, 도대체 이 코드가 어디서 시작해서 어디로 흘러가는지 감이 안 잡히죠. “이 함수를 고치면 대체 어디가 영향을 받는 거지?” 하는 그 막막함, 개발자라면 다들 겪어봤을 거예요.
이 문제를 정면으로 겨냥한 도구가 'Arcaide(아케이드)'예요. 코드를 '멀티레벨 콜 그래프'로 시각화해서 탐색할 수 있게 해주는 건데요. 콜 그래프가 뭔지부터 차근차근 풀어볼게요.
콜 그래프가 뭐냐면
콜 그래프(call graph)는 말 그대로 '어떤 함수가 어떤 함수를 호출하는가'를 화살표로 이어놓은 지도예요. 예를 들어 main()이 login()을 부르고, login()이 다시 checkPassword()와 createSession()을 부른다면, 이 관계를 점과 선으로 그려놓은 게 콜 그래프죠. 코드의 '흐름'을 글자가 아니라 그림으로 보는 거예요.
우리가 IDE에서 쓰는 '사용처 찾기(Find Usages)'나 '정의로 이동(Go to Definition)' 기능도 사실 이 관계를 이용하는 거예요. 그런데 이런 기능은 보통 한 번에 한 단계씩만 보여줘요. A가 B를 부른다는 건 알려주지만, B가 다시 C, D를 부르고 그게 또 어디로 이어지는지 전체 그림을 한눈에 보기는 어렵거든요. 결국 우리는 이 파일 저 파일을 왔다 갔다 하면서 머릿속으로 지도를 그리게 되죠.
'멀티레벨'이 핵심인 이유
Arcaide의 포인트는 '멀티레벨(multi-level)'이라는 단어에 있어요. 한 함수에서 시작해서 그게 부르는 함수, 또 그게 부르는 함수를 여러 단계까지 쭉 펼쳐서 보여준다는 거예요. 마치 지하철 노선도처럼, 하나의 역에서 출발해서 여러 갈래로 뻗어나가는 전체 경로를 한 화면에서 조망할 수 있는 거죠.
이게 왜 유용하냐면요. 버그를 추적하거나 기능을 이해할 때 우리가 진짜 알고 싶은 건 '이 하나의 호출'이 아니라 '이 동작이 만들어내는 연쇄 반응 전체'거든요. 예를 들어 결제 함수 하나를 고치기 전에, 그게 건드리는 재고 처리, 알림 발송, 로그 기록까지 죽 이어지는 흐름을 미리 볼 수 있다면 훨씬 안전하게 수정할 수 있어요. 반대로 위로 거슬러 올라가면서 “이 함수는 대체 누가 부르는 거야?”를 여러 단계 추적하는 것도 가능하고요.
비슷한 도구들과 비교하면
코드 탐색 도구가 아예 새로운 건 아니에요. 예전부터 Sourcegraph(대규모 코드 검색), Understand(정적 분석 기반 코드 지도), 그리고 각종 IDE의 콜 계층(Call Hierarchy) 기능 같은 게 있었죠. Doxygen 같은 문서화 도구도 콜 그래프를 그려주긴 했어요.
다만 기존 도구들은 무겁게 세팅해야 하거나, 그래프가 너무 빽빽해서 오히려 안 보이는 경우가 많았어요. Arcaide처럼 가볍게 접근해서 원하는 깊이만큼만 인터랙티브하게 펼쳤다 접었다 하는 방식은, '탐색' 그 자체의 경험을 매끄럽게 만드는 데 초점을 맞춘 거예요. 코드 이해라는 문제가 여전히 다 안 풀린 숙제라는 걸 보여주는 흐름이기도 하고요.
한국 개발자에게
실무에서 이런 도구가 빛을 발하는 순간은 명확해요. 바로 '온보딩'과 '레거시 코드 파악'이에요. 신입이나 경력 이직자가 낯선 코드베이스에 적응할 때, 콜 그래프로 전체 구조를 먼저 훑으면 적응 속도가 확 빨라지거든요. 문서화가 부실한(사실 대부분 그렇죠) 오래된 프로젝트를 유지보수할 때도 마찬가지고요.
요즘은 AI 코드 어시스턴트가 대세지만, AI에게 좋은 질문을 던지려면 결국 나부터 코드 구조를 어느 정도 파악하고 있어야 해요. 이런 시각화 도구는 그 '큰 그림'을 잡는 데 좋은 출발점이 될 수 있어요. 당장 팀에 도입하지 않더라도, 콜 그래프로 코드를 바라보는 관점 자체는 익혀둘 가치가 충분해요.
마무리
코드를 글자의 나열이 아니라 흐름의 지도로 본다 — Arcaide가 던지는 메시지는 이거예요. 처음 보는 코드베이스 앞에서 막막했던 경험을 조금이나마 덜어줄 도구인데요. 여러분은 낯선 코드를 파악할 때 주로 어떤 방법을 쓰시나요? 여전히 grep과 두 눈으로 승부하시나요?
🔗 출처: Hacker News