πΎ [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μ λ¨μνκ³ λ³΅μ‘ν λ°μ΄ν° ꡬ쑰λ₯Ό μ§κ΄μ μΌλ‘ νννλ λ° μ ν©ν ν¬λ§·μ λλ€.