RUNWEBTOOLS
한국어
데이터 포맷 & 인코딩

YAML 설명 + JSON vs. YAML

업데이트 2026-07-06

Docker Compose, GitHub Actions, Kubernetes 같은 현대적 도구의 설정 파일을 편집해 봤다면 이미 YAML을 써 본 것입니다. 사람이 가장 읽기 좋게 설계된 데이터 포맷이지만, 그 가독성에는 몇 가지 날카로운 모서리가 따라옵니다. 이 가이드는 YAML이 어떻게 동작하는지, 조심할 함정, 그리고 JSON과 어떻게 비교되는지 설명합니다.

YAML이란

YAML(“YAML Ain’t Markup Language”)은 JSON이 표현하는 것과 같은 것 — 키/값 쌍, 리스트, 중첩 구조 — 을 표현하는 데이터 포맷이지만, 사람이 손으로 읽고 쓰기 좋게 조율된 문법을 가집니다. 설정 파일의 정석으로 쓰이는 이유가 바로 훑어보기 쉽기 때문입니다.

name: RunWebTools
active: true
tags:
  - json
  - free
address:
  city: London
  postcode: null

문법이 동작하는 방식

세 가지 개념이 YAML의 대부분을 설명합니다:

  • 들여쓰기가 구조를 나타냅니다. 중첩은 중괄호가 아니라 공백으로 표현됩니다. 같은 들여쓰기 수준의 항목은 형제입니다.
  • 키/값 쌍key: value를 씁니다(콜론 뒤 공백은 필수).
  • 리스트는 각 항목 앞에 -를 붙입니다.

함정들

공백이지, 탭은 안 됩니다

YAML은 들여쓰기에 탭 문자를 금지합니다 — 파싱 에러를 냅니다. 에디터가 공백을 넣도록 설정하세요. 화면에서는 둘이 똑같아 보이지만 유효한 건 하나뿐입니다.

“노르웨이 문제”

YAML은 타입을 추측하려 하는데, 이게 가끔 역효과를 냅니다. 따옴표 없는 no, yes, on, off는 불리언이 됩니다 — 유명하게도, 노르웨이의 국가 코드 NOfalse로 변할 수 있습니다. 문자 그대로의 문자열을 의도했다면 따옴표로 감싸세요: "NO".

들여쓰기 실수는 조용합니다

공백이 의미를 지니기 때문에, 한 줄만 어긋나도 아무 에러 없이 구조가 바뀔 수 있습니다 — 파일은 그저 당신이 의도하지 않은 무언가로 파싱됩니다. 파싱 결과를 다시 출력해 주는 YAML 검증기에 통과시켜 보는 것이, YAML이 실제로 무엇을 이해했는지 확인하는 가장 빠른 방법입니다.

YAML vs. JSON

둘은 같은 데이터를 표현할 수 있습니다 — 사실 모든 유효한 JSON은 유효한 YAML이기도 합니다. 트레이드오프는:

  • 가독성: 사람에게는 YAML이 이깁니다 — 중괄호나 따옴표가 없고, 주석(#)을 지원하는데 JSON은 못 합니다.
  • 엄격함: 기계에게는 JSON이 이깁니다 — 그 빡빡한 문법은 YAML이 허용하는 타입 추측과 들여쓰기 사고의 여지를 거의 남기지 않습니다.
  • 용도: 사람이 편집하는 파일(설정)엔 YAML을, 프로그램이 주고받는 데이터(API)엔 JSON을 택하세요.

둘 사이를 오가야 하나요? YAML 포매터JSON 포매터로 어느 쪽이든 서식화하고 검사하세요. YAML이 까다롭게 느껴진다면, JSON과 흔한 오류에 대한 가이드가 좋은 짝 읽을거리입니다.

데이터 포맷 & 인코딩 더 보기

데이터 포맷 & 인코딩 가이드 전체 보기 →

이 가이드에서 언급한 도구