YAML은 인프라 곳곳에 있습니다 — Kubernetes 매니페스트, GitHub Actions 워크플로, Docker Compose 파일, Ansible 플레이북. 읽기 쉽고 간결하지만, 들여쓰기가 모호해지거나 공백 대신 탭이 들어가거나 JSON만 이해하는 도구에 데이터를 넣어야 할 때까지만 그렇습니다.
둘 사이를 손으로 변환하는 것은 기계적이지만 지루한 작업입니다: YAML의 들여쓰기 기반 중첩이 JSON의 중괄호와 대괄호로 바뀌어야 하고, 따옴표 없는 YAML 문자열에는 따옴표가 필요하며, YAML의 더 관대한 문법(따옴표 없는 불리언, 여러 줄 문자열, 앵커와 참조)이 항상 JSON의 더 엄격한 규칙에 깔끔하게 대응되는 것도 아닙니다.
두 형식이 모두 필요한 이유
읽고 버전 관리하기 쉽다는 이유로 Kubernetes 매니페스트를 YAML로 작성하지만, JSON을 기대하는 스크립트나 API 호출, jq 파이프라인에 넣기 위해 JSON 버전이 필요할 수 있습니다. 또는 CI 파이프라인의 YAML 설정이 예상대로 파싱되지 않는 이유를 디버깅하고 있는데, 아래에 있는 JSON 구조를 보면 공백에 민감한 YAML이 때때로 그렇지 않은 방식으로 실제 중첩을 명확하게 만들어 줍니다.
형식 간 즉시 변환하기
Bellows는 41가지 개발자 도구 중 하나로 YAML to JSON 변환기를 포함합니다. YAML을 붙여넣으면 중첩과 타입이 그대로 보존된 동등한 JSON 구조를 즉시 얻을 수 있습니다 — 수동 재포맷팅도, 들여쓰기 수준을 추측할 필요도 없습니다.
Kubernetes와 CI 설정 디버깅하기
매니페스트가 예기치 않게 동작할 때, 기저의 JSON 구조를 보면 YAML이 실제로 어떻게 중첩되었는지에 대한 모호함이 사라집니다 — 잘못 놓인 들여쓰기가 조용히 어떤 키가 어느 부모 객체에 속하는지 바꿔놓았을 때 유용합니다.
스크립트에 설정 값 넣기
많은 스크립팅 및 자동화 도구는 YAML보다 JSON을 더 자연스럽게 다룹니다. 설정 파일을 한 번 변환해서 JSON 출력을 다운스트림으로 전달하는 것이, 파이프라인의 모든 스크립트에 YAML을 직접 파싱하도록 가르치는 것보다 대체로 더 간단합니다.