yaml은 xml과 json 포맷과 같이 타 시스템 간에 데이터를 주고받을 때 약속된 포맷(규칙)이 정의되어있는 파일 형식이다.
( xml, json등과 같이 데이터 전송 파일로 최근에 간결한 포맷으로 인해 많이들 사용하고 있다. )
그럼 우선 xml과 json 포맷이 어떻게 생겼는지 보면서 자연스럽게 yaml로 넘어가 보자. 먼저 xml형태의 포맷부터 보자.
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<apiVersion>v1</apiVersion>
<kind>Test</kind>
<metadata>
<name>Welcome</name>
<labels>
<app>hello</app>
</labels>
</metadata>
<spec><!-- --------------------------------------------Object -->
<containers><!-- ------------------------------------Array -->
<name> this is containers </name>
<image> img/container_image </image>
<ports>
<containerPort>8080</containerPort>
<!-- Key --> <!-- Value -->
</ports>
</containers>
</spec>
</root>
위와 같이 Tag형식을 통해 Key와 Value를 구분하고, Tag안에 또 Tag를 넣어서 부모와 자식관계의 구조를 표현한다.
이와 똑같은 내용으로 Json 포맷을 만들어 보면, 아래와 같이 명확하게 만들 수 있다.
{
"apiVersion":"v1"
"kind":"Test"
"metadata":{
"name":"Welcome"
"labels":{
"app":"hello"
}
},
"spec":{ <!-- -------------------------------------------- Object -->
"containers":[ <!-- ------------------------------------ Array -->
{
"name":"this is containers",
"image":"img/container_image",
"ports":[
{
"containerPort":8080
} <!-- Key --> <!-- Value -->
]
}
]
}
}
그리고 Object의 경우 { }로 감싸주고 있고, Array일 경우 [ ]로 감싸주고 있어서 구분도 잘된다. Key / Value 도 명확하다.
다음으로 yaml포멧으로 만들어 보자.
apiVersion:v1
kind: Test
metadata:
name: Welcome
labels:
app: hello
spec:
containers:
- name: this is containers
image: img/container_image
ports:
- containerPort: 8080
훨씬 간단하고 보기 좋다. 추가로 "-"을 이용하여 Array를 표현하는 것도 알 수 있다.
그럼 마지막으로 각 포멧을 비교해 보면서 마무리하겠다.
xml |
json |
yaml |
![]() |
![]() |
![]() |
참고 : ko.wikipedia.org/wiki/YAML
YAML - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. YAML은 XML, C, 파이썬, 펄, RFC2822에서 정의된 e-mail 양식에서 개념을 얻어 만들어진 '사람이 쉽게 읽을 수 있는' 데이터 직렬화 양식이다. 2001년에 클라크 에반스가
ko.wikipedia.org
'Code Story' 카테고리의 다른 글
[Admob] eCPM을 높여라 (0) | 2021.01.12 |
---|---|
[Tistory] 이미지 넣기 (0) | 2021.01.10 |
[GitLab] 버전 변경 및 반영하기 (0) | 2021.01.10 |
[GitLab] Project 생성 및 git Clone. (0) | 2021.01.08 |
[Tistory] HTML/CSS 편집하기 (0) | 2021.01.06 |