git worktree로 병렬 개발하기: Calyx
AI 요약
AI 시대에는 병렬 개발 방식이 더욱 중요해지고, 이를 위해 Git worktree를 사용하여 개발자의 속도를 높이는 방법을 제안합니다. worktree를 통해 작업 분할 및 컨텍스트 관리를 효율적으로 수행하고, 핵심 프로토콜과 디자인에 대한 수정은 주로 main 디렉토리에서 확정된 후 worktree에서 진행하는 방식으로 권장됩니다. 병렬 개발을 통한 속도 향상은 개발자의 역할을 설계 및 코드 리뷰에 집중시키는 데 초점을 맞추어 효율적인 프로세스를 구축합니다.
왜 병렬 개발이 중요한가?
-
ai가 발전하면서, 몇 년전 인간이 개발하는 동기적인 개발 방식은 이제 가장 비효율적인 방식이 되었습니다. ai 시대, 더 세부적으로는 에이전틱 ai 시대에 맞게, 개발자 또는 빌더들도 개발 방식을 진화시켜야 합니다.
-
제가 현재 개발하고 있는 Calyx는 iOS 앱입니다. 에이전트 하나가 유저의 캘린더 전체를 보고, 내부에 5개 도메인 모듈(Sleep·Diet·Workout·Relax·Study)이 각자 관심사를 맡습니다. 구현체가 거의 독립이라 저는 클로드 코드 세션 여러 개를 동시에 굴릴 수 있었다고 판단해, 어떻게 병렬 개발을 할까 고민중이었습니다.
-
결국 ai로 인해 무언가를 만들 수 있는 도구가 모든 사람들의 손에 쥐어지게 된다면, 가장 중요한 것은 실행력과 속도입니다. 먼저 기획을 하고 프로덕트를 만들고 시장에 검증을 받는 것이 핵심입니다. 병렬 개발은 빌더의 속도를 수 배 이상으로 높여줄 수 있습니다.
그래서 git worktree를 어떻게 사용해야 하는거야?
-
먼저 worktree를 담을 새로운 디렉토리(ios-worktree)를 만듭니다. 기존의 개발 디렉토리(ios)는 git main 전용으로 두고, 작업 복사본과 worktree를 담는게 주 목적입니다. 저는 worktree를 만들고, PR을 하고, worktree를 닫는 각각의 과정을 skill(command 등록)로 만들어서 손쉽게 사용할 수 있게 했습니다.
-
/new-worktree : git worktree add, ios 기준 프로젝트 빌드, worktree에서 사용할 CONTEXT.md를 생성합니다.
-
/new-pr: pr 생성해 개발한 기능을 올립니다. 이후 제가 pr에 정리한 내용을 마지막으로 확인하고, merge합니다.
-
/end-worktree: worktree 디렉토리와 이제 필요없어진 내용을 삭제합니다.
-
-
가장 중요한 건 어떤 부분을 안 건드리게 lock을 거느냐입니다. 특히, 핵심 프로토콜, 도메인 모델, 디자인 토큰, project.yml은 병렬 개발 중 수정을 금지시켜야 합니다. main에서 먼저 확정한 뒤, 각 worktree에서 세션을 다시 열고, 개발을 시작하면 됩니다.
다른 병렬 개발 방식과 뭐가 다른가
- 브랜치만 분기해 쓰는 방식은 stash와 checkout 왕복 비용이 큽니다. 단일 체크아웃에서 에이전트 여러 명을 같은 세션에 띄우면 컨텍스트 창을 나눠 쓰고 파일 레이스(race condition)가 납니다. worktree는 물리적 작업 복사본을 쪼개기 때문에 세션 컨텍스트 격리와 1:1로 붙습니다. Xcode와 시뮬레이터 같은 머신 리소스는 여전히 직렬이지만, 병렬의 이득은 "에이전트가 생각하고 쓰는 단계"에서만 나오기 때문에 그 구간을 가장 깨끗하게 격리할 수 있는 도구면 충분했습니다.
그러면 사람이 해야 하는 역할은?
- 주로 설계(방향성 설정)와 ai 코드 리뷰를 합니다. 제가 하는 일은 Locked Contract와 worktree 경계를 설정하는 것, CONTEXT 문서에 스코프를 지정하는 것, 올라오는 PR을 꼼꼼히 읽는 것 세 가지입니다. 특히 "하지 말 것"을 명시하는 쪽이 "해야 할 것"보다 훨씬 효과적이었습니다.
댓글 (0)
아직 댓글이 없습니다.