[WAFFLE] 03-3 Application Settings

1 minute read

Published:

In this post, concepts of Application Settings will be provided.

Application Settings

  • 애플리케이션 설정은 애플리케이션을 실행할 때 사용되는 상수 값들.
    • db URL, 암호화 비밀키 등.
  • 항상 동일한 환경에서만 애플리케이션이 실행된다면, 설정이 필요 없을 수 있음.
  • 여러분의 애플리케이션에, 데이터베이스가 필요하다고 가정해보자.
    • 그런데 배포 시에서는 RDS에 연결하고 로컬에서는 로컬 MySQL 서버에 연결하고 싶다면?

Environment Variable

  • 애플리케이션의 설정으로 사용가능한 가장 간단한 방법은 환경 변수
  • 환경 변수: OS 레벨에서 프로세스에 전달되는 키-값 쌍
  • 환경 변수를 사용하면, 애플리케이션의 설정을 실행 시점에 제어할 수 있음
export DATABASE_URL="mysql://user:password@localhost/db"

python -c 'import os; print(os.environ["DATABASE_URL"])'
  • 환경 변수를 설정하는 방법은 OS에 따라 다름
  • 리눅스, 맥에서는 export 명령어를 사용해서 현재 쉘 프로세스에 환경 변수를 설정
  • 특정 프로세스에만 임시로 설정하고 싶다면, KEY=VALUE python app.py 와 같이 기존 명령어 앞에 환경 변수를 설정할 수 있음

dotenv

DATABASE_URL=mysql://user:password@localhost/db
SECRET_KEY=supersecretkey    # public repository에는 이렇게 사용하지 말 것
DEBUG=true
..
  • 환경변수가 많아지면, 항상 위와 같이 설정하는 것이 번거로울 수 있음
  • dotenv 라이브러리 등으로 파일을 통해 환경 변수를 관리할 수 있음
  • 예컨데 .env.local, .env.dev, .env.prod 등으로 각 환경에 필요한 상수들을 정의해놓고, dotenv 라이브러리를 이용해서 로드할 수 있음
    • 환경 변수를 통해서 지금의 환경을 전달해주면 애플리케이션은 거기에 매칭되는 .env 파일을 파싱해서 애플리케이션 설정을 불러옴.
  • 과제 2에서 스켈레톤 코드 참조!

Leave a Comment