kkokkio - 프로젝트/ADR(의사결정문서)
Doppler 도입
파란배개
2025. 6. 2. 10:08
Context
문제 상황
지금 프로젝트를 시작하기 전 이전 프로젝트에서 대부분 팀원들은 다음과 같은 문제들을 겪었다.
- 보안 위험
- application.yml을 팀원이 각각 관리하고 공유가 필요할 때는 일일이 요청해서 slack 메신저로 공유했다. 당연하지만 보안 위험에 노출되어 있다.
- 실수로 Git에 환경변수를 올릴 수도 있다
- 협업 비효율
- 개발이 진행되어 감에 따라, 변경된 환경변수들로 인해 각자 버전이 달라저 일부 환경변수가 누락되기도 하고 중복되기도 해 서버에서 문제가 터지기도 했다.
- 환경 분리 시 비효율
- 환경이 분리되면서 관리해야 할 환경변수도 배로 늘어나는데 이를 각자 관리해서 버전 관리가 엉망이 되었다.
Decision
제안 내용 및 이유
이에 따라 프로젝트를 시작할 때 우리는 다른 팀원이 제안한 doppler를 고려하게 되었다.
Doppler
- 환경 변수 및 시크릿 통합 관리 플랫폼
- cli와 웹 UI를 동시에 지원해 환경변수를 관리 가능
- 환경별로 환경변수 분리 가능
- 여러 팀원이 동시 접속 가능
- 버전 이력이 기록디고 롤백을 지원
- cli 환경을 구성하면 간단한 명령어로 최신화 가능
Consequences
제안된 기술 도입의 장단점
장점
- 보안성 강화: Git에서 비밀키 노출 방지
- 웹 UI 제공: 브라우저에서 편리한 UI를 이용해 환경변수 조회/편집/롤백 가능
- CI/CD 연동 우수: GitHub Actions이나 Docker 등에서 토큰 기반으로 환경변수 주입
- 환경 분리 및 이력 관리: local/dev/prd 환경 분리, 변경 내역 자동 기록
- 로컬 개발 친화적: 개발자 로컬 환경에서 간단히 최신화 가능
단점
- 초기 학습 필요: CLI 설치 및 사용법 익숙해져야 함
- 적용 문서가 적음: 특정 상황에 대한 사용법이나 문서가 상대적으로 적음
- 프리 티어 한계: 한 번에 5명의 팀원만 로그인 가능(갱신 시에만 로그인하면 되므로 큰 문제는 아님)
Alternatives
다른 대안
-AWS Secrets Manager
- 웹UI 없음
- 변경 이력 관리 없음
- 유료
-HashiCorp Vault
- 웹UI 별도 구성 필요
- 학습 난이도 높음
- 오픈소스 버전 무료
-수동으로 관리
- 보안성 낮음
Adoption & Next Steps
최종 채택 사항 및 차후 과제
Doppler를 팀의 환경변수·시크릿 관리 도구로 채택하였다.
무엇보다 Doppler를 추천한 팀원이 기존에 Doppler를 사용해서 도입 시 학습장벽이 높지 않은 점이 컸다.
- 각 팀원의 개발 환경에 Doppler Cli를 설치하고 backend, infra 프로젝트별 local, dev, prd 환경에 맞는 환경변수를 구성하였다.
- terraform으로 배포 환경 구성시에도 개발 서버 배포, 프로덕션 서버 배포 각 환경에 맞게 환경변수가 입력되도록 설정하였다.
- CI/CD를 이용한 도커 이미지 생성 및 자동배포시에도 환경별 Doppler 토큰을 이용해 backend 도커가 자동 배포되게 설정하였다.
차후 과제
- GitHub Actions 내에서 Doppler 토큰을 직접 넣지 않고, Doppler 공식 GitHub Action 연동 방식으로 전환 검토