파란배개 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 연동 방식으로 전환 검토