우공이산(愚公移山)

자신과 세상을 바꾸는 것은 머리좋고 가진것이 많은 사람이 아니라 결코 포기하지 않는 의지로 꾸준히 노력해 가는 사람이다. 오늘이 쌓여 내일을 만들고, 내일이 쌓여 인생을 만든다.

Code Story

[개발] yaml 파일 이란?

보노보노 2021. 1. 2. 18:11

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