피드로 돌아가기
Dev.toBackend
원문 읽기
AST 기반 의존성 분석을 통한 10초 내 리포지토리 구조 시각화
I built an open-source tool that reverse-engineers any GitHub repo in 10 seconds
AI 요약
Context
대규모 코드베이스 온보딩 시 파일 간 관계 파악에 과도한 시간이 소요되는 문제 발생. 정적 분석 도구의 부재로 인한 진입점 파악 어려움과 변경 사항에 따른 Blast Radius 예측 불가능성을 해결해야 하는 상황.
Technical Solution
- 모든 소스 코드를 AST(Abstract Syntax Tree)로 파싱하여 파일 간 Import 관계를 정밀하게 추출하는 구조 설계
- Vercel Serverless Timeout(504) 회피를 위해 AST 추출용 Fast Extractor와 LLM 추론 전용 Inference Engine으로 엔드포인트 분리
- Web ReadableStream을 통한 AI 응답 스트리밍 및 Partial JSON Repair 알고리즘 적용으로 실시간 UI 업데이트 구현
- 역방향 인접 리스트(Reverse Adjacency List) 기반의 BFS Traversal을 통해 특정 파일 수정 시 영향을 받는 전파 범위 산출
- Edge API를 활용한 SVG Health Badge 생성으로 리팩토링 결과의 실시간 가시성 확보
Impact
- 기존 수일이 소요되던 코드 분석 시간을 약 10초 수준으로 단축
- 출시 14일 만에 262건의 Unique Clone 및 66개의 Star 달성
Key Takeaway
Serverless 환경의 실행 시간 제약을 극복하기 위해 무거운 작업을 비동기적 파이프라인으로 분리하고, 스트리밍 데이터를 실시간으로 복구하여 사용자 경험을 최적화하는 전략이 유효함.
실천 포인트
1. Serverless Timeout 발생 시 API 경로를 기능별로 분리하고 클라이언트 사이드 트리거링 도입 검토
2. LLM 응답 대기 시간을 줄이기 위해 ReadableStream과 Partial JSON 파싱 로직 적용
3. 영향도 분석 기능 구현 시 역방향 인접 리스트와 BFS 알고리즘을 통한 의존성 추적 고려