환경 변수와 설정 관리 - 안전하고 유연한 앱 설정

환경 변수란

환경 변수는 프로그램 외부에서 설정값을 전달하는 방법입니다. 40년간 배포를 해온 저로서는 환경 변수가 환경별 설정 분리의 핵심이라고 확신합니다. 개발, 스테이징, 프로덕션에서 코드 변경 없이 다른 설정을 사용합니다. 비밀 정보를 코드에 하드코딩하지 않습니다.

12-Factor App 원칙

12-Factor App은 환경 변수로 설정을 관리할 것을 권장합니다. 코드와 설정을 분리합니다. 환경에 따라 달라지는 것(DB 연결, API 키)은 환경 변수로. 배포 환경을 변경해도 코드 수정이 필요 없습니다. 이식성과 확장성이 높아집니다.

비밀 관리

비밀번호, API 키, 토큰을 코드에 넣지 마세요. Git에 커밋되면 큰 문제입니다. .env 파일은 .gitignore에 추가합니다. 프로덕션에서는 더 안전한 방법을 사용합니다. AWS Secrets Manager, HashiCorp Vault, Kubernetes Secrets. 자동 로테이션을 고려합니다.

설정 라이브러리

dotenv: .env 파일을 환경 변수로 로드합니다. config: Node.js 설정 관리. python-decouple: Python 환경 변수. 12factor-gem: Ruby. 환경별 설정 파일(config.development.yml)도 사용됩니다. 계층적 설정(기본 + 환경별 오버라이드)이 유용합니다.

모범 사례

예제 설정 파일(.env.example)을 커밋합니다. 필수 환경 변수를 문서화합니다. 시작 시 필수 값이 있는지 검증합니다. 민감하지 않은 기본값은 코드에 둘 수 있습니다. 환경 변수 이름을 명확하게 짓습니다. 접두어를 사용합니다(APP_DB_HOST).

댓글

0
첫 번째 댓글을 작성해보세요!
← 목록으로