๐พ [CS] yml์ด๋?
YML(๋๋ YAML, YAML Aniโt Markup Language) ์ ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ๋ฐ์ดํฐ ์ง๋ ฌํ ํ์์ ๋๋ค.
์ฃผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ(configuration) ํ์ผ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
YAML์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํํํ๊ธฐ ์ํ ๊ฐ๋จํ๊ณ ๊ฐ๋ ์ฑ ๋์ ํฌ๋งท์ผ๋ก, Python์ ๋ค์ฌ์ฐ๊ธฐ ๋ฐฉ์๊ณผ ์ ์ฌํ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
JSON๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉด์๋ ๋ ๊ฐ๊ฒฐํ๊ณ ์ธ๊ฐ์ด ์ฝ๊ณ ์ฐ๊ธฐ ์ฌ์ด ๋ฌธ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
1๏ธโฃ YAML์ ์ฃผ์ ํน์ง.
1. ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ.
- YAML์ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํํํฉ๋๋ค.
- ๊ตฌ๋ถ ๊ธฐํธ๋ก ์ฃผ๋ก ์ฝ๋ก (:), ํ์ดํ(-) ๋ฑ ์ ์ฌ์ฉํ๊ณ , ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํตํด ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ํ๋ ๋๋ค.
- ์ด๋ฌํ ๊ฐ๋จํ ๊ตฌ์กฐ๋ ์ฌ๋๊ณผ ๊ธฐ๊ณ ๋ชจ๋ ์ฝ๊ฒ ์ฝ์ ์ ์๋๋ก ๋์์ค๋๋ค.
2. ๊ณ์ธต์ ๋ฐ์ดํฐ ๊ตฌ์กฐ.
- YAML์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํตํด ๊ณ์ธต์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํํํฉ๋๋ค.
- ์ด๋ ํค-๊ฐ ์, ๋ชฉ๋ก, ์ค์ฒฉ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง๊ด์ ์ผ๋ก ํํํ๋ ๋ฐ ์ ๋ฆฌํฉ๋๋ค.
3. ๋ค์ํ ๋ฐ์ดํฐ ํ์ ์ง์.
- YAML์ ๋ฌธ์์ด, ์ซ์, ๋ฐฐ์ด, ๊ฐ์ฒด ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ ํ์ ์ ์ง์ํฉ๋๋ค.
- ์ด๋ฅผ ํตํด ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง๋ ฌํํ๊ณ ์ ์กํ ์ ์์ต๋๋ค.
4. ์ฃผ๋ก ์ค์ ํ์ผ๋ก ์ฌ์ฉ.
- YAML์ ๊ตฌ์ฑ ํ์ผ์ ์ ์ํ๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
- ์๋ฅผ ๋ค์ด,
Docker
,Ansible
,Kubernetes
,Spring Boot
์ ๊ฐ์ ๋๊ตฌ๋ค์ ์ค์ ์ ์ ์ํ๊ธฐ ์ํด YAML์ ์ฌ์ฉํฉ๋๋ค.
5. ์ฃผ์ ์ง์.
- YAML์ ์ฃผ์์ ์ง์ํ๋ฉฐ, ์ฃผ์์ # ๊ธฐํธ๋ก ์์ํฉ๋๋ค.
- ์ฃผ์์ ์ค๋ช ์ ์ถ๊ฐํ์ฌ ์ฌ๋์ด ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ๋์์ค๋๋ค.
2๏ธโฃ YAML ๋ฌธ๋ฒ ์์
1. ํค-๊ฐ ์(Key-Value Pairs)
name: Kobe
age: 30
email: kobe@example.com
- ์ด ์์๋ ํค-๊ฐ ์์ ์ ์ํ๋ YAML์ ๊ธฐ๋ณธ ํํ์ ๋๋ค.
- ๊ฐ ํค๋ ์ฝ๋ก (:) ์ผ๋ก ๊ฐ๊ณผ ๊ตฌ๋ถ๋๋ฉฐ, ๊ฐ๊ฒฐํ๊ฒ ํํ๋ฉ๋๋ค.
2. ๋ฆฌ์คํธ(List)
fruits:
- Apple
- Banan
- Orange
- ํ์ดํ(-) ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์คํธ ํญ๋ชฉ์ ๋ํ๋ ๋๋ค.
- ์ด ๋ฆฌ์คํธ๋
fruits
๋ผ๋ ํค์ ์ฐ๊ฒฐ๋ ๋ฐฐ์ด์ ๋๋ค.
3. ์ค์ฒฉ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ(Nested Data)
person:
name: Kobe
age: 25
contact:
email: kobe@example.com
phone: 123-4567-8910
- YAML์์๋ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ํ๋ ๋๋ค.
-
contact
๋person
๊ฐ์ฒด ์์ ํฌํจ๋ ์ค์ฒฉ๋ ๊ฐ์ฒด์ ๋๋ค.
4. ๋ฆฌ์คํธ์ ํค-๊ฐ ์์ ํผํฉ
employees:
- name: Minseong
age: 30
position: Developer
- name: Naeun
age: 25
position: Designer
- ์ด ์์์์๋ ๋ฆฌ์คํธ ์์ ์ฌ๋ฌ ๊ฐ์ฒด๊ฐ ํฌํจ๋ ๊ตฌ์กฐ๋ฅผ ๋ํ๋ ๋๋ค.
- ๊ฐ ๊ฐ์ฒด๋
name
,age
,position
๊ณผ ๊ฐ์ ํค-๊ฐ ์์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
5. ์ฃผ์.
# ์ด ํ์ผ์ ์๋ฒ ๊ตฌ์ฑ ํ์ผ์
๋๋ค.
server:
host: localhost
port: 8080 # ๊ธฐ๋ณธ ํฌํธ๋ 8080์
๋๋ค.
-
#
์ ์ฌ์ฉํด ์ฃผ์์ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, ์ฃผ์์ ํ์ผ์ ์ค๋ช ์ ์ถ๊ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
3๏ธโฃ YAML์ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก
1. ๊ตฌ์ฑ ํ์ผ(Configuration Files)
- YAML์ ์ฃผ๋ก ๊ตฌ์ฑ ํ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ค์ ์ ์ ์ํ๊ณ , ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋จํ๊ฒ ํํํ๋ ๋ฐ ์ ํฉํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, Spring Boot์
application.yml
ํ์ผ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ์ด๋ ์๋ฒ ์ค์ ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด, Spring Boot์
2. DevOps ๋๊ตฌ
- YAML์ Ansible, Docker Compose, Kubernetes์ ๊ฐ์ DevOps ๋๊ตฌ์ ์ค์ ํ์ผ ํ์์ผ๋ก ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
- YMAL์ ์ฌ์ฉํ์ฌ ์๋ฒ ์ค์ , ์ปจํ ์ด๋ ์ค์ , ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ์ ๋ต ๋ฑ์ ์ ์ํ ์ ์์ต๋๋ค.
์์: Docker Compos ์ค์ ํ์ผ
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
db:
image: postgres
enviroment:
POSTGES_USER: user
POSTGRES_PASSWORD: password
4๏ธโฃ YAML์ ์ฅ์ .
1. ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ฌ์.
- YAML์ ์ฌ๋์ด ์ฝ๊ณ ์ฐ๊ธฐ ์ฝ๊ฒ ์ค๊ณ๋ ๋ฐ์ดํฐ ํ์์ ๋๋ค.
- ์ค์ฒฉ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง๊ด์ ์ผ๋ก ํํํ ์ ์์ด, JSON๋ณด๋ค ๋ ๊ฐ๊ฒฐํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค.
2. ๋ค์ํ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ.
- YAML์ ๋ค์ํ ์์คํ ๊ณผ ๋๊ตฌ์์ ๊ตฌ์ฑ ํ์ผ๋ก ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ, ๋ฐ์ดํฐ ์ง๋ ฌํ ํฌ๋งท์ผ๋ก ํ์ฉ๋ฉ๋๋ค.
3. ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ํํ.
- YAML์ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง๊ด์ ์ด๊ณ ๋ช ํํ๊ฒ ํํํ ์ ์์ด, ์ค์ฒฉ๋ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ๋ค๋ฃจ๊ธฐ ์ ํฉํฉ๋๋ค.
4. ์ฃผ์ ์ง์.
- ์ฃผ์์ ํตํด ๊ตฌ์ฑ ํ์ผ์ ์ค๋ช ์ ์ถ๊ฐํ ์ ์์ด ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
5๏ธโฃ YAML์ ๋จ์ .
1. ๊ณฐ๋ฐฑ์ ๋ฏผ๊ฐ.
- YAML์ ๋ค์ฌ์ฐ๊ธฐ๊ฐ ์ค์ํ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์, ์๋ชป๋ ๋ค์ฌ์ฐ๊ธฐ๋ ๊ณต๋ฐฑ์ผ๋ก ์ธํด ํ์ฑ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ์ ํํ ๊ณต๋ฐฑ๊ณผ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
2. ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋นํจ์จ์ฑ.
- YAML์ ์ฃผ๋ก ๊ตฌ์ฑ ํ์ผ๊ณผ ๊ฐ์ ๊ฐ๋จํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํํํ๋ ๋ฐ ์ ํฉํ๋ฉฐ, ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํํ ๋๋ JSON์ด๋ ๋ค๋ฅธ ํฌ๋งท๋ณด๋ค ํจ์จ์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
7๏ธโฃ ์์ฝ.
- YAML(YML) ์ ๊ฐ๊ฒฐํ๊ณ ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ๋ฐ์ดํฐ ์ง๋ ฌํ ํฌ๋งท์ผ๋ก, ์ฃผ๋ก ๊ตฌ์ฑ ํ์ผ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ์ธต์ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ฉฐ, ์ฌ๋ฌ DevOps ๋๊ตฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ํ์ผ์์ ๋๋ฆฌ ํ์ฉ๋ฉ๋๋ค.
- YAML์ ์ฝ๊ธฐ ์ฝ๊ณ ์ฃผ์์ ์ง์ํ๋ ์ฅ์ ์ด ์์ง๋ง, ๋ค์ฌ์ฐ๊ธฐ์ ๋ฏผ๊ฐํ๊ธฐ ๋๋ฌธ์ ๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.
- YAML์ ๋จ์ํ๊ณ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง๊ด์ ์ผ๋ก ํํํ๋ ๋ฐ ์ ํฉํ ํฌ๋งท์ ๋๋ค.