Home > CS > 2024 > ๐Ÿ’พ [CS] yml์ด๋ž€?

๐Ÿ’พ [CS] yml์ด๋ž€?
CS

๐Ÿ’พ [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 ํŒŒ์ผ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •์ด๋‚˜ ์„œ๋ฒ„ ์„ค์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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์€ ๋‹จ์ˆœํ•˜๊ณ  ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•œ ํฌ๋งท์ž…๋‹ˆ๋‹ค.