YAML(YAML Ain't Markup Language)은 사람이 쉽게 읽을 수 있는 데이터 직렬화 형식입니다. 설정 파일, 구성 파일, 데이터 교환 등 다양한 분야에서 널리 사용되며, 특히 Docker, Kubernetes, Ansible 등 인프라 자동화 도구에서 핵심적인 역할을 합니다.
JSON과 유사한 역할을 하지만, 더 간결하고 직관적인 문법 덕분에 많은 개발자들에게 사랑받고 있습니다. 이 글에서는 YAML의 기본 문법을 초보자도 쉽게 이해할 수 있도록 정리해 드리겠습니다.
1. YAML의 기본 원칙
YAML의 문법은 몇 가지 핵심 원칙에 기반합니다.
- 들여쓰기(Indentation): YAML은 들여쓰기로 계층 구조를 표현합니다. 반드시 스페이스(Space)를 사용해야 하며, 탭(Tab)은 사용할 수 없습니다. 들여쓰기의 깊이는 2칸 또는 4칸을 주로 사용하지만, 일관성만 유지하면 됩니다.
- 주석(Comment): # 기호를 사용하여 주석을 작성할 수 있습니다.
- 대소문자 구분: 키(Key)는 대소문자를 구분합니다.
- 파일 확장자: .yaml 또는 .yml을 사용합니다.
2. YAML의 기본 데이터 타입
YAML은 크게 세 가지 기본 데이터 타입을 사용합니다.
2.1. 스칼라 (Scalars)
단일 값을 나타내는 가장 기본적인 데이터 타입입니다. 문자열, 숫자, 불리언(boolean) 등이 있습니다.
- 문자열 (String)
- 따옴표('', "") 없이 작성할 수 있습니다.
- 여러 줄의 문자열은 | (리터럴 블록) 또는 > (접힌 블록)을 사용합니다.
- |는 줄 바꿈(New Line)을 그대로 유지합니다.
- >는 줄 바꿈을 공백으로 변환하여 한 줄로 만듭니다.
# 따옴표 없이 작성
name: 김개발
# 따옴표를 사용하면 특수 문자를 포함할 수 있습니다.
message: "Hello, World!"
# 여러 줄 문자열 (줄 바꿈 유지)
bio: |
안녕하세요.
저는 백엔드 개발자입니다.
# 여러 줄 문자열 (한 줄로 합침)
description: >
YAML은 사람이 읽기 쉬운
데이터 직렬화 형식입니다.
- 숫자 (Number)
- 정수, 실수, 16진수 등을 따옴표 없이 작성합니다.
age: 30
price: 99.99
hex_value: 0x2A
- 불리언 (Boolean)
- 참(true, True, TRUE) 또는 거짓(false, False, FALSE)을 표현합니다.
is_enabled: true
is_admin: False
- 널(Null)
- 값 없음은 null 또는 ~로 표현합니다.
optional_value: null
no_value: ~
2.2. 리스트 (Lists)
순서가 있는 데이터의 집합입니다. - (하이픈) 뒤에 공백 한 칸을 두고 값을 작성합니다.
# 리스트 예시
fruits:
- apple
- banana
- orange
# 중첩된 리스트도 가능합니다.
hobbies:
- coding
- reading
- sports:
- soccer
- basketball
2.3. 맵 (Maps)
키(Key)와 값(Value)의 쌍으로 이루어진 데이터 구조입니다. 키: 값 형태로 작성하며, 콜론 뒤에는 반드시 공백 한 칸을 두어야 합니다.
# 맵 예시
user:
name: 김개발
email: dev.kim@example.com
age: 30
# 리스트와 맵의 조합
project:
name: My Awesome Project
version: 1.0
features:
- user_login
- data_analysis
- real_time_updates
3. YAML 심화 문법
3.1. 앵커(Anchors)와 별칭(Aliases)
반복되는 데이터를 간결하게 표현할 때 사용합니다.
- & (앰퍼샌드)로 앵커를 정의합니다.
- * (별표)로 앵커의 별칭을 참조합니다.
- <<: (병합)으로 맵을 병합할 수 있습니다.
# 앵커를 사용한 예시
default_db_config: &db_config
host: localhost
port: 5432
user: admin
password: password123
production_db:
<<: *db_config # default_db_config의 모든 키-값을 상속
database: prod_db
test_db:
<<: *db_config
database: test_db
password: test_password # 별칭의 값을 덮어쓰기
3.2. 인라인 표기법 (Inline Notation)
YAML은 한 줄로 리스트나 맵을 표현하는 인라인 표기법도 지원합니다. 이는 JSON과 유사하여 간단한 데이터에 유용합니다.
# 인라인 리스트
fruits: [apple, banana, orange]
# 인라인 맵
user: {name: "김개발", age: 30}
3.3. 문서 분리자 (Document Separator)
하나의 YAML 파일에 여러 개의 문서를 포함시킬 때 --- (하이픈 3개)를 사용하여 문서를 분리할 수 있습니다.
# 첫 번째 문서
#---
apiVersion: v1
kind: Service
metadata:
name: my-service
---
# 두 번째 문서
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
4. YAML 작성 시 주의사항
- 들여쓰기 일관성: 가장 중요한 규칙입니다. 스페이스의 개수를 항상 일정하게 유지해야 합니다.
- 콜론 뒤 공백: key: value에서 콜론 뒤에 공백이 없으면 파싱 에러가 발생합니다.
- 따옴표 사용: on, off, yes, no, true, false, null 등 특정 값은 YAML 파서에 의해 불리언이나 널(null)로 인식될 수 있으므로, 문자열로 사용하고 싶다면 따옴표("", '')로 감싸주어야 합니다.
- ports: 80 (숫자로 인식)
- name: 'yes' (문자열로 인식)
- 특수 문자: !, &, *, %, @ 등 YAML에서 특별한 의미를 갖는 문자를 포함한 문자열은 따옴표로 감싸는 것이 안전합니다.
YAML은 깔끔하고 가독성이 높아 협업 시에도 유리한 형식입니다. 이 기본 문법 가이드를 통해 YAML 파일 작성에 자신감을 갖고, 다양한 도구의 설정 파일을 효과적으로 관리해 보시길 바랍니다.
'개발' 카테고리의 다른 글
스노우플레이크(Snowflake) vs. 데이터브릭스(Databricks) 심층 비교: 최적의 데이터 플랫폼은? (0) | 2025.08.01 |
---|---|
리눅스 명령어,, 병렬 수행이 가능하다!?! (0) | 2025.07.31 |
리눅스 기초 명령어 정리 (초보자용) (1) | 2025.07.31 |
전통 RDB → 레이크하우스(Lakehouse)로의 전환 시 고려할 점 (1) | 2025.07.30 |
DB Connection Pool Exhaustion 디버깅 방법: 데이터베이스 연결 고갈 현상 해결 가이드 (1) | 2025.07.30 |