2500만 라인 코드베이스, 하룻밤 만에 서식 지정 성공!

by DD
4주 전
조회수 12

스트라이프(Stripe)가 2500만 라인 규모의 루비(Ruby) 코드베이스에 rubyfmt를 적용하여 하룻밤 만에 서식 지정을 완료함

.git-blame-ignore-revs를 활용하여 코드 변경 이력을 유지하고, 자동화된 코드 서식 지정(Automated Code Formatting)을 통해 일관성을 확보함

커뮤니티에서는 기술적 구현보다 내부 협업(Internal Coordination)의 어려움을 강조하며, 프로젝트 관리의 중요성을 언급함

코드 서식 지정의 기술적 구현

스트라이프(Stripe)는 rubyfmt를 사용하여 2500만 라인 규모의 루비(Ruby) 코드베이스에 대한 자동 서식 지정을 하룻밤 만에 완료했다. 특히, .git-blame-ignore-revs를 활용하여 코드 변경 이력을 유지함으로써, 개발자들이 코드 변경으로 인한 혼란 없이 작업할 수 있도록 했다. 기술적으로는 루비 VM을 러스트(Rust) 바이너리에 연결하여 파스 트리(Parse Tree)를 메모리 내에서 처리하는 방식을 사용했다. 이는 빠른 파싱(Fast Parsing)효율적인 서식 지정(Efficient Formatting)을 가능하게 했다.

내부 협업과 프로젝트 관리의 중요성

커뮤니티에서는 기술적인 측면보다 내부 협업(Internal Collaboration)의 어려움을 강조한다. 대규모 코드베이스의 서식 지정을 위해서는 기존 코드에 의존하는 도구, 특정 라인 번호에 묶인 개발자의 이해, 그리고 수백 개의 오픈 PR(Pull Request)을 처리하는 등, 다양한 문제들을 해결해야 한다고 지적한다. 따라서, 성공적인 코드 서식 지정을 위해서는 정교한 프로젝트 관리(Sophisticated Project Management)팀 간의 원활한 소통(Smooth Communication)이 필수적이다.

과거 코드 이력 관리의 딜레마

일부 개발자는 코드 서식 지정 후 과거 커밋(Past Commits)까지 소급하여 서식을 적용하는 방안을 고려할 수 있다고 언급한다. 하지만, 스트라이프(Stripe)와 같은 대규모 코드베이스에서는 이러한 작업이 현실적으로 어렵다는 점을 지적한다. 대신, .git-blame-ignore-revs와 같은 기술을 활용하여 코드 변경 이력을 관리하고, 코드 가독성(Code Readability)유지 보수성(Maintainability)을 향상시키는 방향으로 접근하는 것이 일반적이다.

Formatting an entire 25 million line codebase overnight: the rubyfmt story