구성 파일(Configuration File)은 소프트웨어 프로그램, 운영 체제, 또는 시스템의 초기 설정값과 매개변수를 저장하기 위해 사용되는 파일이다. 사용자나 관리자가 프로그램의 동작 방식을 코드 수정 없이 변경할 수 있도록 외부화한 설정 데이터를 담고 있다.
주요 특징
- 형식: 텍스트 기반(인코딩: 주로 UTF-8, ASCII)이 대부분이며, INI, XML, JSON, YAML, TOML, Properties 등 다양한 포맷이 사용된다. 일부 시스템은 이진 형식(Binary)을 사용하기도 한다.
- 구조: 키-값 쌍(Key-Value Pair), 계층적 구조(Hierarchical Structure), 섹션(Section) 등의 방식으로 데이터를 조직화한다.
- 적용 시점: 주로 프로그램 시작 시(부팅/실행 시) 읽어들여 메모리에 적재하며, 일부 애플리케이션은 런타임 중 변경 사항을 감지하여 동적으로 반영(Hot Reloading)하기도 한다.
주요 용도
- 애플리케이션 동작 모드 설정(개발/운영/테스트 환경 구분 등)
- 데이터베이스 연결 정보, API 키, 포트 번호, 경로 설정 등 인프라 연동 정보 관리
- 사용자 인터페이스 테마, 언어, 단축키 등 사용자 맞춤 설정 저장
- 시스템 서비스(데몬) 및 커널 매개변수 제어
대표적 예시
- 운영 체제:
/etc/디렉토리 하위의 각종.conf파일(Linux/Unix), 레지스트리(Windows, 파일 기반은 아님 개념적 유사),hosts,fstab,resolv.conf - 웹 서버:
nginx.conf,httpd.conf(Apache),web.config(IIS) - 개발 도구:
.gitconfig,.editorconfig,tsconfig.json,webpack.config.js,Dockerfile(빌드 설정),docker-compose.yml - 애플리케이션:
application.properties/application.yml(Spring Boot),config.json(Node.js),settings.py(Django),php.ini
보안 고려사항
구성 파일에는 데이터베이스 비밀번호, API 토큰, 암호화 키 등 민감한 정보(Credentials)가 포함되는 경우가 많다. 따라서 버전 관리 시스템(Git 등)에 커밋되지 않도록 .gitignore 등에 등록하거나, 비밀 정보 관리 도구(Vault, AWS Secrets Manager, Kubernetes Secrets 등)를 연동하여 런타임에 주입하는 방식이 권장된다.