JSON은 기계가 읽기 좋고 사람이 쓰기엔 조금 불편해요. YAML은 같은 정보를 사람이 손으로 편하게 쓸 수 있도록 다시 표현한 형식이에요.
JSON 예시에 나온 데이터를 그대로 가져와 볼게요. 여기서 중괄호, 따옴표, 쉼표를 다 빼고 들여쓰기 목록으로 나열하면 그게 YAML이에요.
같은 세 가지 정보를 나란히 비교해 보면. JSON:
{ "name": "Cat", "city": "Austin", "orders": 3 }
YAML:
name: Cat
city: Austin
orders: 3
괄호도 없어요. 따옴표도 없고요. 빼먹기 쉬운 마지막 쉼표도 없어요. 항목명, 콜론, 값, 그리고 무엇이 어디에 속하는지 나타내는 들여쓰기. 스스로 적어두는 메모처럼 읽혀요.
핵심은 누가 읽느냐예요. JSON은 기계끼리 주고받는 형식이에요. YAML은 사람이 직접 설정을 잡아야 할 때 쓰는 형식이고요. 같은 계열이지만 대상이 달라요.
실제로 만나는 곳은 설정 파일과 config 파일이에요. 도구가 어떻게 동작할지 지시하는 내용은 YAML 파일에 담기는 경우가 많고, 사용자나 에이전트가 그 파일을 직접 수정해요. 중괄호가 가득한 파일보다 열어서 고치기 훨씬 편하거든요. 그래서 사람이 손대야 하는 부분에 많은 도구들이 YAML을 선택한 거예요.
한 가지 함정이 있어요. 한 번쯤은 반드시 걸려요. YAML에서는 들여쓰기 자체가 의미예요. 공백은 장식이 아니에요. 줄 정렬이 하나라도 어긋나거나 탭과 스페이스가 섞이면 파일 전체가 망가져요. 눈으로 봐서는 멀쩡해 보이니 찾기가 정말 짜증스럽죠. YAML이 "안 불러진다"며 아무리 봐도 멀쩡해 보이면 들여쓰기를 먼저 확인해 보세요. 거의 항상 거기서 문제가 나거든요.
비개발자가 신경 써야 하는 이유: 어떤 도구가 ".yaml 파일에서 설정을 수정하세요"라고 하면, 그게 단순히 정돈된 들여쓰기 목록이지 코드가 아니라는 걸 이제 아셨을 거예요. 값을 바꾸거나, 기능을 켜고 끄거나, 이름을 설정하는 일은 주변 내용을 건드리지 않고도 대부분 할 수 있어요. 공백만 지키면 돼요.
JSON은 기계를 위한 형식이에요. YAML은 같은 데이터를 사람을 위해 펼쳐놓은 거고요. 항목명, 콜론, 값, 그리고 의미를 갖는 들여쓰기.