
Opus 4.8이 5/28에 풀린 직후부터, 본인 안드로이드 멀티 모듈 프로젝트의 마이그레이션 작업을 (아직 Research Preview 단계인) dynamic workflows로 굴려봤어요. 작업 범위는 :core-logic 유지, DI는 Hilt로 통일, 8개 feature 모듈의 build.gradle.kts를 카탈로그 참조로 치환, 모듈별 assembleDebug 통과 시 다음 작업 진행 정도로 짧게 잡았습니다.

1. 성공한 케이스 — 의존성 카탈로그 치환
8개 모듈 중 6개의 하드코딩된 의존성을 libs.versions.toml 참조로 바꾸는 작업에 subagent 6개를 동시에 띄웠습니다. 22분 만에 끝났는데, 수동으로 하면 모듈당 30~40분씩 걸리던 작업이라 체감 효율 차이가 컸어요.
2. 부분 실패 — Hilt 모듈 재구성
이게 dynamic workflows의 진짜 가치를 느낀 자리였습니다. 모듈 간 @InstallIn 스코프 충돌로 한 모듈에서 빌드가 깨졌는데, 다른 subagent들의 상태는 그대로 유지된 채 실패 지점에서 멈춰주더군요. 실패한 모듈만 재지정해서 14분 만에 풀었습니다. 처음부터 다시 돌렸으면 한 시간은 더 썼을 거예요.

3. 완전 실패 — R8 룰과 manifest 병합
productFlavors 충돌, ProGuard의 reflection 규칙 영역은 자동화가 안 됐습니다. verify 단계는 통과했는데 release 빌드가 깨지는 사고가 한 번 났어요. 이쪽은 LLM 학습 데이터가 부족한 영역으로 보입니다.
안드 멀티모듈 자동화 운영 함정 3가지

1. 불투명한 과금 단위
subagent별로 비용이 분리돼 나오지 않아서 어느 작업이 얼마를 먹었는지 추적이 어려웠습니다. fast mode로 전환한 다음에야 비용이 어느 정도 잡혔어요.
2. CI와의 이중 검증 충돌
클로드의 verify와 깃허브 액션의 lint·detekt가 서로 통과 기준이 달라서 충돌이 났습니다. 결국 로컬 클로드 verify → CI lint → 사람 리뷰, 이렇게 3단계로 분리하니 머지 사고가 사라졌어요.
3. AI PR 리뷰 합의 부재
AI가 만든 PR을 누가 1차로 책임지고 보는지가 처음에는 모호했습니다. "AI PR은 작성자가 1차 검토 후 리뷰어를 지정한다"는 규칙을 디스코드 채널에 박은 다음에야, 머지 리드타임이 1.8일에서 0.6일 안팎으로 줄었습니다.
닷새 ROI와 다음 주 검증 계획
수동 12~14인일 분량 작업을 닷새 만에 끝냈고, 셋업·롤백 시간 빼면 순수 절감은 6~7인일 정도였습니다. 토큰 비용은 약 41달러. 외주 견적이 약 2,400달러였던 걸 생각하면 비용 효율은 분명한데, R8·flavors처럼 자동화가 안 되는 영역은 인건비가 그대로 들어가니까 "완전 자동화"라는 말은 좀 과한 표현인 것 같습니다.

dynamic workflows는 한 세션에서 수백 개까지 subagent를 병렬로 띄울 수 있는 구조지만, 저는 모듈 경계와 검증 부담을 감안해 동시 실행을 한 번에 몇 개씩 끊어 굴리는 쪽으로 운영했습니다. 다음 주에는 모듈을 제가 잡아둔 동시 실행 한도에 맞춰 4개 그룹으로 미리 쪼개놓을 계획입니다. verify 통과 기준에 release 빌드까지 포함시켜서, "병렬"이 아니라 "재개 가능한 상태"가 진짜 가치였다는 이번 가설을 한 번 더 검증해보려 합니다.
마치며

본문 내내 '병렬'과 '재개'를 같이 짚었는데, 둘 중 하나만 골라야 한다면 저는 망설임 없이 재개 쪽을 고릅니다. 수백 개 병렬 동시성은 모듈 경계가 잘 짜인 위에서만 의미가 살아나는 숫자이고, 경계가 흐릿한 상태에서 켜면 첫날부터 환각성 PR이 잔뜩 쌓이는 풍경을 그대로 가속할 뿐이거든요. Hilt 충돌로 멈춘 한 모듈을 14분 만에 다시 살려낸 그 자리에서 본 건, 도구가 아키텍처를 새로 그려주지는 않는다는 사실입니다. 기존 구조의 일관성을 지키는 자리에서만 dynamic workflows의 병렬 실행이 의미를 갖는다는 그림, 닷새 동안 가장 진하게 박힌 인상이었어요.
'Android 개발 > Gradle・빌드' 카테고리의 다른 글
| CI에서만 죽는 Gradle OutOfMemory, -Xmx 를 줄여야 살아나는 이유 (0) | 2026.07.21 |
|---|---|
| 카톡으로 .apk 보내던 시절 끝 — Firebase App Distribution으로 QA 배포 자동화한 기록 (0) | 2026.07.19 |
| KMP 새 기본 프로젝트 구조로 옮겨보니 모듈 책임이 또렷해졌습니다 (0) | 2026.06.29 |
| Aluminium OS 가을 출시 D-150, 안드로이드 앱이 챙길 첫 PR 5가지 (0) | 2026.05.29 |
| Gradle 빌드가 갑자기 느려졌을 때 가장 먼저 보는 곳 (0) | 2026.05.05 |