바이브코딩하다 보면 .yaml, .json, .toml, .env 파일이 계속 나옵니다.
다 설정 파일 같은데 왜 이렇게 종류가 많을까요?

핵심은 누가 읽고, 얼마나 복잡한 설정을 담느냐입니다.

YAML

사람이 읽기 편한 설정 파일입니다.

server:
  port: 8080
  debug: true

주로 쓰는 곳:

  • Docker Compose
  • GitHub Actions
  • Kubernetes
  • CI/CD 설정

장점은 가독성이고, 단점은 들여쓰기 하나만 틀려도 오류가 날 수 있다는 점입니다.

복잡한 계층형 설정을 사람이 자주 수정할 때


JSON

프로그램끼리 데이터를 주고받을 때 가장 흔합니다.

{
  "port": 8080,
  "debug": true
}

주로 쓰는 곳:

  • API 응답
  • package.json
  • 웹 설정
  • 데이터 저장·전송

형식이 명확하고 거의 모든 언어가 지원하지만, 주석을 쓰기 어렵고 사람이 직접 편집하기엔 조금 딱딱합니다.

시스템 간 데이터 교환과 기계가 읽는 설정에 적합


TOML

설정 파일을 깔끔하고 명확하게 작성할 때 사용합니다.

port = 8080
debug = true

[database]
host = "localhost"

주로 쓰는 곳:

  • Python pyproject.toml
  • Rust Cargo.toml
  • 개발 도구 설정

YAML보다 문법 실수가 적고, JSON보다 사람이 읽기 편합니다.

개발 도구나 프로젝트 설정에 적합


.env

환경마다 달라지는 값을 저장합니다.

PORT=8080
DATABASE_URL=postgresql://localhost/app
API_KEY=secret

주로 쓰는 곳:

  • API 키
  • DB 주소
  • 포트
  • 개발·운영 환경 분리

구조는 단순하지만 비밀값이 들어가기 때문에 Git에 올리면 안 됩니다.

환경변수와 민감한 설정을 관리할 때


INI

오래된 프로그램이나 단순한 설정에서 자주 보입니다.

[server]
port=8080
debug=true

주로 쓰는 곳:

  • 오래된 앱
  • 데스크톱 프로그램
  • 간단한 서버 설정

구조가 단순해서 편하지만 복잡한 설정에는 잘 맞지 않습니다.


XML

태그를 사용해 데이터를 표현합니다.

<server>
  <port>8080</port>
  <debug>true</debug>
</server>

주로 쓰는 곳:

  • 오래된 기업 시스템
  • Java 설정
  • 문서 포맷
  • 일부 API

표현력은 강하지만 코드가 길고 복잡해지기 쉽습니다.


한눈에 정리

  • YAML — 사람이 읽는 복잡한 설정
  • JSON — 프로그램끼리 주고받는 데이터
  • TOML — 깔끔한 프로젝트 설정
  • .env — 환경값과 비밀키
  • INI — 단순하고 오래된 설정
  • XML — 복잡한 기업·문서 구조

쉽게 기억하면 됩니다.

사람이 자주 고치면 YAML
프로그램이 주로 읽으면 JSON
개발 도구 설정은 TOML
비밀값은 .env

바이브코딩할 때 AI가 파일을 만들어줘도, .env는 공개 저장소에 올리지 않는 것만큼은 꼭 기억해두세요.