Pomona: Continuous Code Quality Improvement via Small, Automated Changes at Bloomberg
이 논문은 카이젠(Kaizen)에서 영감을 얻어 블룸버그에서 코드 품질을 지속적으로 개선하기 위해 소규모의 저위험 풀 리퀘스트를 통해 기술 부채의 발견과 점진적 수리를 자동화함으로써 높은 머지 성공률과 한 달간의 배포 기간 동안 강력한 엔지니어 채택을 달성한 경량 에이전틱 도구인 포모나(Pomona)를 소개한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신이 거대하고 북적이는 도서관(회사의 코드베이스)을 관리하는 관리자라고 상상해 보세요. 시간이 흐르면서 책들이 약간 잘못 꽂히기도 하고, 페이지에 커피 얼룩이 묻기도 하며, 지워야 할 연필 메모가 남겨지기도 합니다. 보통 사서들(소프트웨어 엔지니어들)은 새로운 책을 쓰는 데 너무 바빠서 이런 사소하고 성가신 문제들을 해결할 시간이 없습니다. 그들은 도서관을 정리해야 한다는 것을 알지만, 한꺼번에 다 할 시간은 없습니다.
여기에, 인간들이 미루곤 하는 '작은 일들'을 처리하기 위해 특별히 설계된 유능한 로봇 조수, **포모나(Pomona)**가 등장합니다.
포모나가 어떻게 작동하는지, 간단한 개념별로 나누어 설명하겠습니다.
1. 2단계 댄스: 스캐닝과 수리
포모나는 한 번에 모든 것을 고치는 마법 지팡이가 아닙니다. 대신, 특정한 루틴을 가진 부지런한 청소부처럼 두 가지 주요 '기술'을 사용하여 작동합니다.
스캐너 (눈): 이 부분은 도서관을 돌아다니며 작은 문제들을 찾습니다. 다음과 같은 것들을 체크합니다:
- 책이 잘못된 선반에 놓여 있는 경우 (린팅 에러).
- 몇 년 동안 방치된 "나중에 수정할 것"이라는 포스트잇 (TODO).
- 빈 페이지나 쓸모없는 페이지 (데드 코드).
- 인덱스에서 누락된 장 (테스트 격차).
일단 문제를 발견하면, 포모나는 이를 **백로그(Backlog, 할 일 목록)**에 기록하며, 중요도와 수정 용이성에 따라 분류합니다.
수리공 (손): 이 부분은 할 일 목록에서 가장 처음의, 가장 쉽고, 가장 중요한 항목을 하나 골라냅니다. 그리고 아주, 아주 작은 수정을 수행합니다. 예를 들어, 단 10줄의 텍스트를 재배열하거나 오타 하나를 고치는 식입니다. 도서관 전체를 재건축하려 하지 않고, 그저 작은 선반 하나를 고칠 뿐입니다.
2. "작은 풀 리퀘스트(Tiny Pull Request)" (인간의 확인)
여기서 가장 중요한 부분이 있습니다. 포모나는 스스로 책을 바꾸는 것이 아니라, **풀 리퀘스트(Pull Request, PR)**를 생성합니다.
풀 리퀘스트를 책 위에 붙여둔 포스트잇이라고 생각하세요. "이봐요, 이 페이지가 뒤집혀 있는 걸 발견했어요. 제가 바로잡았습니다. 제가 제대로 했는지 빠르게 살펴보고 알려주세요." 라고 적힌 포스트잇 말이죠.
- 작아서 안전함: 변경 사항이 매우 작기 때문에(약 10줄), 인간 사서는 몇 초 만에 훑어볼 수 있습니다.
- 인간 중심(Human in the Loop): 변경이 적용되기 전에 반드시 인간의 "승인"이 있어야 합니다. 이를 통해 엔지니어들이 통제권을 유지하고 신뢰를 쌓을 수 있습니다. 그들은 로봇이 실수로 도서관 전체를 삭제할까 봐 걱정하지 않습니다.
3. 카이젠(Kaizen) 철학
이 논문은 포모나를 일본의 철학인 **카이젠(Kaizen, 지속적인 개선)**에 비유합니다. 일 년에 한 번씩 거대하고 무서운 개보수 프로젝트를 진행하는 대신, 포이모나는 매일매일 아주 작은 개선을 제안합니다. 이는 주말 내내 집 전체를 청소하려고 애쓰는 것과, 매일 10분씩 방 하나를 정리하는 것의 차이와 같습니다.
4. 실제로 시도했을 때 어떤 일이 일어났나요?
블룸버그(Bloomberg, 거대 금융 기업) 팀은 한 달 동안 포모나가 작동하도록 내버려 두었습니다. 결과는 다음과 같습니다:
- 성공적이었습니다: 포모나가 제안한 17개의 작은 수정 사항 중 15개가 승인되어 코드에 병합되었습니다.
- 빠릅니다: 대부분의 수정 사항은 2시간 이내에 승인되고 종료되었습니다.
- 사람들이 좋아했습니다: 엔지니어들에게 포모나를 사용하고 싶은지 물었을 때, 10명 중 8명이 "예"라고 답했습니다. 그들은 변경 사항이 작고 읽기 쉽다는 점을 높게 평가했습니다.
- 병목 현상: 유일하게 문제가 되었던 때는 포모나가 너무 의욕이 앞서서, 첫 번째 수정 사항이 인간에 의해 확인되기도 전에 같은 것을 두 번 고치려고 했을 때였습니다. 팀은 포모나가 이미 진행 중인 수정 작업이 있는지 확인하도록 지시함으로써 이 문제를 해결했습니다.
5. 이것이 왜 중요한가
논문은 AI가 크고 복잡한 코드를 작성하는 데는 뛰어나지만, 현재로서는 작고 지루한 업무를 돕는 유능한 조수로서 가장 적합하다고 결론짓습니다.
- 신뢰: 엔지니어들은 AI가 큰 변화를 만드는 것에 대해서는 회의적이지만, 작고 명백한 수정 사항에 대해서는 신뢰합니다.
- 집중: 포모나가 "쓰레기 줍기"(데드 코드, 오래된 메모 등)를 처리하게 함으로써, 인간은 새로운 기능을 구축하는 데 집중할 수 있습니다.
- 통제: 이 시스템이 작동하는 이유는 항상 인간이 최종 결정권을 갖기 때문입니다.
요약하자면, 포모나는 인간이 직접 시간을 내어 수동으로 정리하기를 기다리는 대신, 작고 자동화되며 쉽게 승인할 수 있는 개선을 통해 팀이 코드를 깨끗하고 건강하게 유지하도록 돕는 도구입니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.