YAML์ ๋ฌด์์ ์ํด ์ฌ์ฉ๋ฉ๋๊น?
๋ ๋ค๋ฅธ ํ ์คํธ ๋ฐ์ดํฐ ํ์์ YAML( Yet Another Markup Language ; ๋์ค์ YAML Ai't Markup Language )์ ๋๋ค. ๋คํธ์ํฌ๋ฅผ ํตํ ์ ์ก์ ์ํด ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค(XML ๋ฐ JSON์ด ์ด ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ฒ๋ผ). ์ฌ๋์ด ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์ Docker, Kubernetes, Ansible ๋ฑ๊ณผ ๊ฐ์ ๊ตฌ์ฑ ํ์ผ์ ์์ฑํ๋ ๋ฐ์๋ ์ฌ์ฉ๋ฉ๋๋ค. YAML์ ํ์ผ(์: ๊ตฌ์ฑ ํ์ผ)์ ์ ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ ๊ฐ์ง ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ์ฅ์: .yaml ๋๋ .yml.
์ธ์ด ๊ตฌ๋ฌธ
XML์์ ๊บพ์ ๊ดํธ( <> )๋ ํ๊ทธ๋ฅผ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. JSON์์๋ ์ค๊ดํธ( {} )๋ฅผ ์ฌ์ฉํฉ๋๋ค. YAML์ ์ ์ค๊ณผ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ดํฐ๋ ํค-๊ฐ ์์ผ๋ก ์ ์ฅ๋๋ฉฐ ์ฌ๊ธฐ์ ํค๋ ๋ฌธ์์ด์ด๊ณ ๊ฐ์ ๋ค์ํ ๋ฐ์ดํฐ ์ ํ(๋ฌธ์์ด, ์ซ์, ์ฐธ/๊ฑฐ์ง, ๋ฐฐ์ด ๋ฑ)์ด ๋ ์ ์์ต๋๋ค. ํค๋ ๋ฐ์ดํ ์์ด ์์ฑ๋ฉ๋๋ค.
์ ๋ณด๊ฐ YAML์ ์ ์ฅ๋๋ ๋ฐฉ์์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ ํ | ์๋ฐ | YAML |
---|---|---|
์ ์ |
|
๋ฒํธ: 5
|
๋ถ์ |
|
๋ฒํธ: 4.3
|
๋ถ์ธ ๋ณ์ |
|
์ ํจ: ๊ฑฐ์ง
์ ํจ: ์๋์ ์ ํจ: ๊บผ์ง * ์ ํจํ ๋ถ์ธ ๊ฐ: ์ฐธ/๊ฑฐ์ง, ์/์๋์ค, ์ผ๊ธฐ/๋๊ธฐ. |
๋ |
|
๋์: ๋ด์
์: '๋ด์' ๋์: "๋ด์" * ์ธ ๊ฐ์ง ์ต์ ๋ชจ๋ ๋์ผํฉ๋๋ค. |
ํน์ ๋ฌธ์๊ฐ ํฌํจ๋ ๋ฌธ์์ด |
|
์ค: "aaa\nbbb"
|
์ฝ๋์ ์ฃผ์ |
|
# ๋
ผํ
|
๋ฌผ์ฒด |
* ๊ฐ์ฒด์ ํด๋์ค๋ฅผ ๋ถ์ฌํ์ฌ ๊ฐ์ฒด์ ๊ตฌ์กฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. |
์ฌ๋:
์ด๋ฆ: "๋ฐ๋์ค" ๋์ด: 32 * ์์ฑ ์ ๋ค์ฌ์ฐ๊ธฐ์ ์ฃผ์ํ์ธ์. ๋ชจ๋ ์์ฑ์ ๋ํด ๋์ผํด์ผ ํฉ๋๋ค. |
๋จ์ ๊ฐ ๋ชฉ๋ก |
|
๋์ด: [1, 3,5,9,78, -5]
๋์ด: - 1 - 3 - 5 - 9 - 78 - -5 * ๋ ์ต์
๋ชจ๋ ๋์ผํฉ๋๋ค. |
๊ฐ์ฒด ๋ชฉ๋ก |
|
์ฌ๋๋ค:
- ์ด๋ฆ: "Ian" ๋์ด: 21 - ์ด๋ฆ: "Marina" ๋์ด: 25 - ์ด๋ฆ: "Owen" ๋์ด: 73 |
Java์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชฉ๋ก์ ์์๋ ๋ชฉ๋ก์ด ๋ ์ ์์ต๋๋ค. ์ฆ, ๊ฐ์ฒด๋ ์๋ก ์ค์ฒฉ๋ ์ ์์ต๋๋ค. ๋ชฉ๋ก์ ๋ค์ ์์๋ฅผ ๋ํ๋ด๋ ํ์ดํ์ ์์ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ํ์ผ๋ก ์คํ์ ๋๊ฑฐ๋ ๋ฐ๋ก ์๋์ ์์นํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ชจ๋ ์์์ ํ์์ด ๋์ผํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํผ๋๊ณผ ๋ชจํธํ ์ค์ฒฉ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํผํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ฐ๋ น:
- 1 - 3 - 5 - 9 - 78 - -5 |
์ฐ๋ น:
- 1 - 3 - 5 - 9 - 78 - -5 |
ํ ์คํธ ๊ฐ์ผ๋ก ์์ ํ ๋ ๋ ๊ฐ์ง ๋์์ค๊ฐ ๋ ์์ต๋๋ค.
-
์ฌ๋ฌ ์ค ํ ์คํธ. ๋ค์๊ณผ ๊ฐ์ด ํ ์คํธ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค.
multilineText: "๋ผ์ธ 1\n๋ผ์ธ 2\n....๋ผ์ธ n"๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ฝ์ผ๋ ค๊ณ ์๋ํ๋ ๊ฒ์ ๋งค์ฐ ๋ถ์พํ ๊ฒ์ ๋๋ค. ๊ทธ๋์ | (ํ์ดํ) ๊ธฐํธ: ํ ์คํธ๋ฅผ ๋ค๋ฅด๊ฒ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ๋ฌ ์ค ํ ์คํธ: |
๋ผ์ธ 1
๋ผ์ธ 2
....
๋ผ์ธ n๋ ๋ฒ์งธ ์ต์ ์ด ๋ ํธ๋ฆฌํ๋ค๋ ๋ฐ ๋์ํ์๊ฒ ์ฃ ?
-
๊ธด ์ค. ํ ์คํธ๋ฅผ ํ ์ค์ ์ ์งํ๋ฉด์ IDE์ ๋ณด์ด๋ ์์ ๊ณต๊ฐ์๋ ๋ง์ถ๋ ค๋ฉด > (๋ณด๋ค ํผ) ๊ธฐํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
singlelineText: >
์์
...
๊ฐ์ ์ค ๊ณ์
...
์ข ๋ฃ๋ชจ๋ ํ ์คํธ๋ ํ ์ค๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ฌ๋ฌ YAML ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ๋์ ํ์ผ์ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ --- (ํ์ดํ 3๊ฐ) ๋ก ๊ตฌ๋ถํด์ผ ํฉ๋๋ค . ์ค์ ๋ก ์ด๊ฒ์ด ํ์ํ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ง๋ง ์ด๋ฌํ ๊ฐ๋ฅ์ฑ์ ์ธ์ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
YAML ๋ฌธ์์ ์
Java ๋ฐ์ดํฐ ๊ตฌ์กฐ(ํด๋์ค)์ ํด๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ฐ์ฒด๋ฅผ YAML๋ก ํํํด ๋ด ์๋ค.
class Family {
private Date weddingDate;
private Person wife;
private Person husband;
private List<Person> children;
// Getters and setters are omitted
}
class Person {
private final String name;
private final boolean isWoman;
private int age;
public Person(String name, int age, boolean isWoman) {
this.name = name;
this.age = age;
this.isWoman = isWoman;
}
// Getters and setters are omitted
}
public static void main(String[] args) {
Person wife = new Person("Ann", 37, true);
Person husband = new Person("Alex", 40, false);
var children = List.of(
new Person("Iris", 12, true),
new Person("Olivia", 5, true)
);
Date weddingDate = new Date(/* some long */);
Family family = new Family();
family.setWeddingDate(weddingDate);
family.setWife(wife);
family.setHusband(husband);
family.setChildren(children);
}
YAML์ ์ ํจํ ํํ:
weddingDate: 2000-12-03
์๋ด:
์ด๋ฆ: Ann
๋์ด: 37
isWoman: ์
๋จํธ:
์ด๋ฆ: Alex
๋์ด: 40
isWoman:
์๋ ์์:
- ์ด๋ฆ: Iris
๋์ด: 12
isWoman: true
- ์ด๋ฆ: Olivia
๋์ด: 5
isWoman: ์ฌ์ค
---
GO TO FULL VERSION