YAML(YAML Ain't Markup Language)은 사람이 읽기 쉬운 데이터 직렬화 형식입니다. 주로 설정 파일 및 데이터 교환에서 사용되며, JSON이나 XML의 대안으로 널리 사용됩니다. YAML은 인간이 쉽게 읽을 수 있도록 설계되었으며, 간단하고 직관적인 문법을 가지고 있습니다.
YAML의 특징
- 가독성: YAML은 공백과 들여쓰기를 통해 구조를 표현합니다. 중괄호나 대괄호 대신 들여쓰기를 사용하기 때문에 코드가 직관적이고 가독성이 높습니다.
- 데이터 표현: YAML은 스칼라 값(숫자, 문자열 등), 리스트, 맵(키-값 쌍)을 표현할 수 있습니다. 복잡한 데이터 구조를 단순하게 표현할 수 있습니다.
- 타입 추론: 기본적으로 데이터 타입을 명시할 필요가 없으며, YAML은 대부분의 경우 타입을 자동으로 추론합니다. 그러나 필요할 경우 타입을 명시할 수도 있습니다.
- 플랫폼 독립적: YAML은 다양한 언어와 플랫폼에서 지원되며, 특정 언어나 플랫폼에 종속되지 않습니다.
- 주석: # 기호를 사용하여 주석을 추가할 수 있습니다. 주석은 YAML 파일의 어느 위치에든 추가할 수 있습니다.
YAML 문법
1. 기본 데이터 구조
# 키-값 쌍
name: John Doe
age: 30
# list
items:
- Apple
- Orange
- Banana
# 네스티드 구조
employee:
name: John Doe
age: 30
skills:
- Python
- YAML
- Docker
2. 들여쓰기
들여쓰기는 YAML에서 매우 중요합니다. 들여쓰기를 통해 데이터의 계층 구조를 정의합니다. 일반적으로 공백 2칸이나 4칸을 사용합니다.
3. 문자열 표현
YAML에서는 문자열을 다양한 방법으로 표현할 수 있습니다.
# 단일 줄 문자열
single_line: "This is a single line string"
# 여러 줄 문자열
multi_line: |
This is a multi-line string.
Each new line will be part of the string.
# 접기된 문자열
folded_string: >
This is a folded string.
The new lines will be folded into a single space.
4. 앵커와 별칭
YAML에서는 데이터 중복을 줄이기 위해 앵커(&)와 별칭(*)을 사용할 수 있습니다.
default: &default_values
name: John Doe
age: 30
employee1:
<<: *default_values
job: Developer
employee2:
<<: *default_values
job: Designer
5. 데이터 타입
YAML은 기본적으로 문자열, 정수, 부동소수점, 부울, 날짜 등을 표현할 수 있으며, 자동으로 타입을 추론합니다. 필요하면 명시적으로 타입을 지정할 수도 있습니다.
# 타입 지정 예시
integer: !!int 42
float: !!float 3.14
boolean: !!bool true
YAML의 용도
YAML은 다양한 용도로 사용됩니다.
- 설정 파일: YAML은 구성 파일에 자주 사용됩니다. 예를 들어, CI/CD 툴인 Jenkins, CircleCI 등의 설정 파일은 YAML 형식으로 작성됩니다.
- 데이터 교환: YAML은 JSON의 대안으로 데이터 교환에도 사용됩니다. YAML 데이터를 JSON으로 쉽게 변환할 수 있으며, 그 반대도 가능합니다.
- 인프라 코드: 도커 컴포즈(Docker Compose) 파일, Ansible 플레이북 등에서 YAML이 사용됩니다.
YAML은 사람이 읽고 쓰기 쉽게 설계된 데이터 표현 형식으로, 특히 설정 파일이나 구성 관리에서 많이 사용됩니다. 직관적인 문법과 높은 가독성 덕분에 널리 채택되고 있습니다.
'기타' 카테고리의 다른 글
JWT란? 구조, 사용 사례, 그리고 보안 팁 (3) | 2024.10.24 |
---|---|
VS Code에서 Git 자동 로그인 설정하기: 사용자 정보와 자격 증명 저장 방법 (1) | 2024.08.30 |
npm과 npx를 사용하는 이유와 차이점 (1) | 2024.08.16 |
Node.js란 무엇인가? 입문자를 위한 필수 개념 정리(node 설치) (2) | 2024.08.14 |
TablePlus를 사용해 데이터베이스에 쉽게 접속하는 방법 (0) | 2024.08.14 |