
YAML 이란? 서로 다른 시스템 간에 데이터를 주고받을 필요가 있을 때 데이터 연동과 호환성을 위해 포맷에 대한 규칙이 필요하다.
CSV, XML, JSON, Properties 등이 바로 이런 용도로 사용되는 파일들이다.
웹에서는 XML과 JSON 형식을 자바 애플리케이션에서는 properties 파일을 이용하여 필요한 값들을 정의하여 사용한다.
XML은 사용하기 까다롭고 가독성도 좋지 않기 때문에 요즘 들어 JSON 포매팅 방식이 많이 이용되는 편이지만, JSON 역시 주석을 달수 없는 등 약간의 제한이 있고 인용부호, 중괄호 그리고 대괄호의 사용으로 코드 길이가 강제적으로 길어지게 된다는 단점이 있다.

YAML은 원래 “Yet Another Markup Language”(또 하나의 마크업 언어)라는 의미였지만,
현재는 **“YAML Ain’t Markup Language”**로 의미가 바뀌었다.
👉 핵심은 “마크업”이 아니라 데이터 중심 언어라는 점을 강조하기 위한 변화이다.
(예: NoSQL → Not Only SQL 과 같은 맥락)
2. .yaml vs .yml 차이
두 확장자는 완전히 동일하다.
- 기능, 문법, 해석 모두 동일
- 차이는 단지 역사적인 이유
👉 과거 Windows에서 확장자 3글자 제한 → .yml 사용
👉 현재는 제한 없음 → .yaml 사용 권장
3. YAML 특징 (JSON과 비교)
구분YAMLJSON
| 구조 표현 | 들여쓰기(indent) | 중괄호 {} |
| 가독성 | 매우 높음 | 상대적으로 낮음 |
| 주석 | 가능 (#) | 불가능 |
| 사용 용도 | 설정파일, 복잡한 구조 | 데이터 통신 |
👉 웹 통신 → JSON
👉 설정 파일 / 복잡한 구조 → YAML
4. 기본 문법
4.1 Key : Value 구조
name: 둘리
age: 10
major: 컴퓨터공학
✔ 콜론 뒤에는 반드시 공백 필요
name:둘리 ❌ (에러)
name: 둘리 ⭕
4.2 콤마 없음
JSON과 달리 쉼표(,) 사용하지 않음
name: 둘리
age: 10
major: 컴퓨터공학
4.3 들여쓰기 (Indent)
YAML에서 가장 중요
student:
name: 둘리
age: 10
major: 컴퓨터공학
✔ 보통 2칸 또는 4칸 사용
5. 문자열 표현
5.1 따옴표 사용
- 생략 가능
- 필요 시 사용
name: 둘리
city: 서울
✔ 콜론 포함 시 반드시 따옴표 사용
ratio: "1:2"
5.2 큰따옴표 vs 작은따옴표
| 구분 | 특징 |
| "큰따옴표" | escape 문자 해석 |
| '작은따옴표' | 문자열 그대로 |
message1: "안녕하세요\n반갑습니다"
→ 줄바꿈 적용됨
message2: '안녕하세요\n반갑습니다'
→ \n 그대로 출력
6. 배열 (List)
6.1 단순 배열
members:
- 둘리
- 또치
- 도우너
또는 한 줄 표현
members: [둘리, 또치, 도우너]
6.2 객체 배열
students:
- name: 둘리
major: 국어
age: 10
- name: 또치
major: 영어
age: 11
- name: 도우너
major: 수학
age: 12
7. 객체 vs 리스트 개념
객체(Object)
person:
name: 홍길동
age: 25
city: 서울
👉 하나의 대상(덩어리)
리스트(List)
people:
- name: 홍길동
age: 25
city: 서울
- name: 김영희
age: 30
city: 부산
👉 여러 객체의 모음
8. Boolean 표현
YAML에서는 다양한 표현 가능 (대소문자 구분 없음)
booleans:
- yes
- no
- true
- false
- YES
- FALSE
✔ 문자열로 쓰려면 따옴표 사용
- "YES"
9. 주석
# 학생 정보
name: 둘리
major: 수학
👉 # 사용 (JSON과 차이점)
10. 여러 줄 문자열 (Multi-line)
10.1 > (folded)
줄바꿈 → 공백으로 변환
text: >
abc
def
ghi
👉 결과: "abc def ghi"
10.2 | (literal)
줄바꿈 그대로 유지
text: |
abc
def
ghi
👉 결과:
abc
def
ghi
11. 핵심 요약
✔ YAML = 들여쓰기로 구조 표현
✔ 콜론 뒤 공백 필수
✔ 콤마 없음
✔ 배열 = - 사용
✔ 주석 가능 (#)
✔ 가독성 좋음 → 설정 파일에 최적
🔗 참고 사이트
- JSON → YAML 변환
👉 https://json2yaml.com/
💡 한 줄 정리
👉 YAML은 사람이 읽기 쉬운 데이터 표현 언어이며,
특히 설정 파일과 복잡한 구조 표현에 강력하다.
YAML 멀티라인 & 고급 문법 정리
1. 여러 줄 문자열 (Multi-line String)
YAML은 일반적인 프로그래밍처럼 \n을 직접 쓰기보다,
블록 스타일 문법을 통해 더 직관적으로 여러 줄 문자열을 표현한다.
대표적으로 두 가지 방식이 있다.
2. | Literal Block Scalar
👉 줄바꿈을 그대로 유지
message: |
안녕하세요.
저는 YAML을 배우고 있습니다.
줄바꿈이 그대로 유지됩니다.
✔ 파싱 결과
안녕하세요.
저는 YAML을 배우고 있습니다.
줄바꿈이 그대로 유지됩니다.
✔ 특징
- 줄바꿈 (\n) 그대로 유지
- 사람이 보는 형태 = 실제 데이터
✔ 옵션 (|-)
👉 마지막 개행 제거
message: |-
hello
world
✔ 결과
hello
world
(맨 끝 줄바꿈 없음)
✔ 사용 상황
- 로그 출력
- 스크립트
- 문장 포맷 유지 (시, 가사 등)
- 줄바꿈이 중요한 데이터
3. > Folded Block Scalar
👉 줄바꿈을 공백으로 변환
message: >
안녕하세요.
저는 YAML을 배우고 있습니다.
줄바꿈이 공백으로 바뀝니다.
하지만 빈 줄은 유지됩니다.
✔ 파싱 결과
안녕하세요. 저는 YAML을 배우고 있습니다. 줄바꿈이 공백으로 바뀝니다.
하지만 빈 줄은 유지됩니다.
✔ 특징
- 일반 줄바꿈 → 공백(space)
- 빈 줄만 개행으로 유지
- 긴 문장을 보기 좋게 작성 가능
✔ 옵션 (>-)
👉 마지막 개행 제거
message: >-
hello
world
✔ 결과
hello world
✔ 사용 상황
- 긴 설명 (description)
- 설정 파일의 긴 문자열
- 실제로는 한 줄이어야 하는 데이터
4. | vs > 한눈에 비교
| 구분 | | (Literal) | > (Folded) |
|------|--------------|-------------|
| 줄바꿈 | 유지 | 공백으로 변환 |
| 빈 줄 | 유지 | 유지 |
| 용도 | 포맷 중요 | 가독성 중요 |
5. YAML Multiple Documents
YAML은 하나의 파일에 여러 문서 정의 가능
document: this is document 1
---
document: this is document 2
👉 --- : 문서 구분자
✔ 활용 예시 (환경 분리)
spring:
profiles: dev
datasource:
url: jdbc:mysql://
hikari:
minimum-idle: 1
maximum-pool-size: 3
---
spring:
profiles: prod
datasource:
url: jdbc:mysql://
hikari:
minimum-idle: 5
maximum-pool-size: 10
👉 하나의 YAML 파일에서
개발(dev) / 운영(prod) 환경을 동시에 관리 가능
6. YAML 작성 핵심 규칙
✔ 탭(Tab) 사용 ❌ → 스페이스만 사용
✔ 콜론(:) 뒤 공백 필수
✔ 들여쓰기로 구조 표현
✔ 리스트는 - 사용
7. YAML 주요 사용 분야
YAML은 설정 파일에서 특히 강력하다.
✔ DevOps / CI/CD
- GitLab CI → .gitlab-ci.yml
- GitHub Actions → .github/workflows/*.yml
- CircleCI → .circleci/config.yml
✔ 인프라 & 배포
- Docker → docker-compose.yml
- Kubernetes → 리소스 정의 (Pod, Deployment 등)
✔ 자동화 & 모니터링
- Ansible → 자동화 스크립트
- Prometheus → prometheus.yml
✔ 개발 & 문서
- Spring Boot → application.yaml
- OpenAPI (Swagger) → API 문서
- Sublime Text → 설정 파일
8. 핵심 요약
👉 | : 줄바꿈 그대로 유지
👉 > : 줄바꿈 → 공백 변환
👉 |-, >- : 마지막 개행 제거
👉 --- : 여러 문서 분리
👉 YAML = 사람이 읽기 쉬운 설정 파일 최적화 언어
💡 한 줄 정리
👉 YAML의 멀티라인 문법은
**“보기 좋게 쓰고, 원하는 방식으로 해석되게 만드는 기능”**이다.

'Dev > CI CD' 카테고리의 다른 글
| [DevOps] GitHub Actions (0) | 2026.06.01 |
|---|---|
| [Docker] 260415 실습 httpd, dockerfile (0) | 2026.04.15 |
| CI/CD 파이프라인 설계해보기 -1 (2) | 2024.02.04 |