팀 개발 환경 표준화: Flutter 버전 고정
목차
Flutter 버전을 3.44.2로 pinning하고, 빌드 signing secrets를 .gitignore에 추가했다. 한 줄짜리 변경처럼 보이지만, 이건 팀 개발 환경의 일관성과 보안을 동시에 강화하는 결정이었다.
문제: 개발자마다 다른 Flutter 버전의 혼란
앱 개발팀이 조금씩 성장하면서 반복된 문제가 있었다. 팀원들이 각자 다른 Flutter 버전을 쓰고 있었다. 누군가는 3.40, 누군가는 3.43, 또 다른 누군가는 최신 버전을 시도하던 중이었다.
그러면 무슨 일이 생길까:
- 로컬 머신에서는 빌드가 성공하는데, CI 파이프라인에서 실패한다
- "어라, 내 환경에서는 정상인데…" 같은 환경 이슈 디버깅이 반복된다
- PR 코드 리뷰를 할 때 먼저 "당신의 Flutter 버전이 뭐죠?" 하고 묻게 된다
- 새 팀원이 합류했을 때 온보딩 문서가 "아, 그냥 최신 Flutter 깔아도 괜찮을 거야"라는 모호한 지침으로 끝난다
Flutter처럼 빠르게 진화하는 프레임워크는 부 버전(3.40 → 3.41)에서도 런타임 동작, 기본 라이브러리 의존성, 빌드 도구 업그레이드 같은 변화가 포함된다. Gradle, Kotlin, 그리고 Android SDK와의 호환성도 미묘하게 변한다. 따라서 팀 전체가 같은 기반에서 시작해야 한다.
또 하나의 문제는 보안이었다. Android 앱의 서명(signing)에 필요한 keystore 파일, gradle.properties, signing config 같은 설정 파일들이 실수로 git에 커밋되는 일이 여러 번 발생했다. 민감한 비밀키가 git history에 올라가면, 나중에 제거하기가 훨씬 복잡해진다.
실행: FVM과 .gitignore로 표준화
이번엔 두 가지를 함께 정리했다.
먼저 .fvmrc 파일에 Flutter 3.44.2를 명시했다. 그러면 팀원들이 프로젝트를 git clone한 후 fvm install 한 번 실행하기만 해도, 자동으로 이 버전이 설치되고 활성화된다. 더는 "Flutter 버전이 뭐지?"라는 질문이 없다.
그리고 .gitignore에 signing secrets 관련 패턴을 추가했다. keystore 파일, 민감한 gradle properties, signing 설정이 실수로 커밋되지 않게 구조적으로 차단한 것이다.
| 항목 | 목적 | 효과 |
|---|---|---|
| .fvmrc | FVM에게 프로젝트 Flutter 버전 지정 | 각 개발자의 로컬 머신에서 자동으로 정확한 버전 설치/활성화 |
| .gitignore | signing secrets 안전 관리 | 인증서, 키스토어, 빌드 설정의 실수 커밋 방지 |
FVM의 가치:
- 프로젝트마다 다른 Flutter 버전을 관리할 수 있다 (팀이 여러 프로젝트를 진행할 때 특히 유용)
- 로컬 머신에 여러 Flutter 버전을 공존시킬 수 있어서, 전역 버전 하나로 제한할 필요가 없다
- 새 팀원 온보딩이 간단해진다 (git clone →
fvm install→ 끝) - CI/CD 파이프라인도
.fvmrc를 읽어 정확한 버전으로 빌드할 수 있으므로, 로컬과 CI 환경이 일치한다
Signing secrets를 .gitignore에 추가하는 이유:
이건 선택이 아니라 필수 관행이다. 개발 초기에 규칙으로 정해두지 않으면, 나중에 누군가는 실수로 민감 파일을 커밋할 수 있다. git history에 올라간 비밀키는 제거하기 복잡하고, 보안 감수 때마다 시끄러운 이슈가 된다.
팀 수준의 변화
이건 작은 변경처럼 보이지만, 실제로는 여러 가지 달라졌다:
- 개발 생산성 향상: 환경 설정 문제로 인한 디버깅 시간이 눈에 띄게 줄었다. "내 환경에선 되는데?" 같은 시간 낭비가 없다.
- PR 리뷰 집중력: 코드 변경 자체에만 집중할 수 있게 됐다. 리뷰 중에 "Flutter 버전이 뭐죠?"라는 환경 설정 논의가 없어진다.
- 신입 온보딩 간소화: 새 팀원이 첫날부터 정확히 같은 개발 환경에서 작업을 시작한다. 환경 이슈로 인한 좌절감이 줄어든다.
- 보안 리스크 구조적 차단: signing secrets 노출 가능성이 git 규칙으로 사전에 차단된다.
배운 점
이런 작업은 종종 "미루는 잡무"로 느껴진다. 실제 기능 개발이 아니니까. 하지만 지난 경험상, 개발 초기에 환경 설정을 명시적으로 정하는 데 드는 시간이, 나중에 발생할 환경 오류 디버깅 시간을 몇 시간 단축시킨다.
특히 팀 규모가 커지면서 이 효과는 기하급수적으로 증가한다. 5명 팀에서 한 번의 환경 설정 혼란은 5명에게만 영향을 주지만, 20명 팀에서는 그 파급 효과가 훨씬 크다. 그래서 조기에 투자하는 게 맞다.
또한 signing secrets 같은 보안 사안은, 문제가 터진 후 대응하는 것(git history 정리, 비밀키 재발급 등)이 예방보다 훨씬 비싸다. 보안은 사후 대응 비용이 크고 흔적이 남으므로, 애초에 git 규칙으로 차단하는 게 경제적이다.
이번 변경은 작지만, 팀 개발 문화에 "환경도 코드처럼 버전 관리하고 정책으로 보호한다"는 메시지를 담았다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.