주제 선정까지의 고민 과정
들어가며
이 글은 토스 러너스하이 2기를 진행하면서 쓰는 기록이다.
완료 후 회고가 아니라, 진행 중인 과정을 있는 그대로 남기려 한다.
아직 끝나지 않았고, 어떻게 될지도 모른다. 그래서 오히려 솔직하게 쓸 수 있을 것 같다.
1. 왜 지원했나
나는 4년차 개발자다 (22.05.30 입사).
공공 SM/SI 쪽에서 일해왔고, 최근까지 형사사법기록관 고도화 프로젝트에 투입되어 있었다 (25.11.10 종료).
러너스하이는 루퍼스 부트캠프 오픈톡방에서 우연히 알게 됐다.
지원 동기는 솔직히 두 가지였다
- 토스라는 1티어 기업이 궁금했다.
어떤 기준으로 사람을 보는지, 어떤 걸 중요하게 생각하는지, 어떻게 개발해 나가는지. - 배우는 것과 현실의 괴리감.
개인 공부할 때는 JPA, Redis, Spring Boot를 쓰는데, 실무에서는 JSP, iBatis, 전자정부프레임워크를 쓴다.
이 차이가 늘 불편했다.
만약 2기에 함께하게 된다면 러너스하이가 이 괴리를 좁힐 수 있는 계기가 될 것 같았다.

그리고 운좋게 선정이 되었다.
2. 주제 선정: 뭘 만들지?
사실 주제 선정이 가장 어려웠다.
러너스하이 OT에서는 주로 "현재 업무 효율을 개선하는 방향"이 좋다고 하시는것 같았다.
그런데 나는 프로젝트가 끝나고 본사 대기 상태였다.
게다가 공공 SI/SM 프로젝트 특성상 폐쇄망 환경이라 가지고 있는 프로젝트소스 코드도 없었다.
"지금 개선할 업무가 없는데?"

머리가 아파왔다.
열심히 최선을 다해보려고 다짐 했는데 기본 베이스부터 막히니 움츠러들었다.
많은 고민을 헀고 여기서 발상을 전환해봤다.
지금 당장이 아니라, 앞으로 투입될 프로젝트에서 도움이 될 것을 만들자.
형사사법기록관 프로젝트에서 느꼈던 Pain Point가 떠올랐다.
- 7개 기록물 유형별로 분기가 복잡해서 흐름 파악이 어려웠다
- Controller → Service → DAO → SQL까지 추적하려면 파일을 계속 오가야 했다
- 인수인계용 산출물 작성이 번거로웠다
"호출 흐름을 자동으로 분석하고 문서화하는 도구를 만들면 어떨까?"
이게 Code Flow Tracer의 시작이었다.
3. 기존 도구? 솔직히 몰랐다
부끄럽지만 솔직하게 쓴다.
IntelliJ의 Call Hierarchy 기능? 몰랐다. 공공 SI에서는 주로 Eclipse를 썼고, IntelliJ를 제대로 써본 적이 없었다.
SonarQube, Sourcetrail 같은 정적 분석 도구들도 프로젝트 중반에야 알게 됐다. 이미 개발을 시작한 후였다.
그래서 처음에는 "이미 있는 거 아닌가?" 하는 불안감이 있었다.
하지만 조사해보니 내 도구만의 차별점이 있었다
| 구분 | 기존 도구 | Code Flow Tracer |
|---|---|---|
| 환경 | IDE 필요 | 단일 JAR 실행 (폐쇄망 OK) |
| SQL 연동 | ❌ | iBatis/MyBatis XML 자동 연결 |
| 출력 | 화면 확인 | 엑셀 산출물 자동 생성 |
| 분석 범위 | 하나씩 수동 | URL 패턴으로 전체 일괄 |
"몰랐던 게 오히려 다행이었을지도."
처음부터 알았다면 시작도 안 했을 수 있다. 모르고 시작했기에 직접 부딪히면서 진짜 필요한 게 뭔지 알게 됐다.
4. 기술 스택 선정
기술 선택에는 나름의 이유가 있었다.
Java 17
- 분석 대상이 Java 프로젝트이므로 같은 언어가 자연스러웠다
- 레코드, 텍스트 블록 등 모던 문법 활용
JavaParser
- 정규식으로 파싱하면 엣지 케이스가 너무 많다
- AST 기반 파싱이 정확도와 유지보수 면에서 유리
JDOM2
- iBatis XML 파싱용
- DTD 검증 비활성화로 외부 네트워크 연결 차단 (폐쇄망 대응)
Apache POI
- 엑셀 출력용
- 공공기관에서 엑셀 산출물은 필수
Swing
- 폐쇄망에서 JAR 더블클릭으로 실행 가능
- 웹 기반이면 서버 설정이 필요해서 배포가 복잡해진다
Picocli
- CLI 인터페이스 구현
- 어노테이션 기반으로 깔끔하게 옵션 정의 가능
5. 결과물 미리보기
여태까지 구현한 실행 결과를 보여드린다.
콘솔 출력(CLI)

트리형태로 표출하여 간단하고 직관적으로 구조를 알 수 있도록 구성해봤다.
엑셀 출력

최대한 산출물 작성에 도움이되도록 구현해봤다.
실제 산출물에 따라 추후 구성이 변할수도 있을것 같다.
마치며
현재 MVP의 핵심 기능은 거의 완성됐다:
- 호출 흐름 추적 (Controller → Service → DAO → SQL)
- iBatis XML 파싱
- 콘솔/엑셀 출력
앞으로는 GUI 구현과 실제 전자정부 프로젝트로 테스트를 진행할 예정이다.
계속...
