본문 바로가기

DevOps/Study

yaml 이란?

xml, json 과 같은 타 시스템간 데이터 교류를 위한 공통적 포맷이다.

reference

참조 링크


이직 후 severless 를 활용하며 configuration 으로 사용하였던 yaml 파일에 대해 정리하고자 한다.

Xml과 Json 파일 포맷으로 서버와 데이터를 주고 받았던 경험이 많다. 그때는 client 프로그램이 python 으로 개발되어 있었고, server는 java로 구성되어 있었기에 두 언어가 공통적으로 데이터를 주고 받기 위해서 이 양식들을 사용해야 한다고 생각했다.

인프런에서의 설명도 같았다.

우리가 타 시스템 간에 데이터를 주고 받을 때 데이터 포맷에 대한 약속이 필요하다.

개발을 할 때 타 시스템과의 연동은 필수적이다. aws 로 severless 를 구성할 때도 python 문법으로 작성된 파일의 어떤 폴더를 참조해서 람다 함수를 띄운다던지에 대한 명세가 필요하다. 일종의 configurator 로 활용된다.

이러한 문서들이 많아지고, 문서마다 데이터 양식이 다르다면? 이를 이해하고 실행시키는데도 많은 시간이 소요될 것이다. 이를 통일하기 위해서 XML, Json 같은 양식의 포맷을 정하고 공통으로 사용하는 것이다.

이 공통 데이터 포맷 중 하나가 Yaml 파일이다.


장점

왜 xml, json 같은 파일보다 yaml , yml 이 활용도가 높을까?

  1. 동일 파일 내에서 “참조” 가 가능하다.
  2. 가독성이 높다.
  3. 주석을 쓸 수 있다.
  4. 계층 구조를 가질 수 있고 , “” (double quotation mark) 없이 문자열 활용이 가능하다.

1.동일 파일 내에서 참조가 가능하다.

custom:
    stage: dev # 이 값을 -> provider stage의 value 값으로 사용한다.

provider:
    name: aws
    runtime: python 3.9
    stage: ${self:custom.stage} # 커스텀 스테이지 값을 설정할 수 있다.

functions:
    first:
      handler: src/first.hello 
    second:
      handler: src/second.hello
      events:
      - http:
          method: get
          path: second

2.가독성이 높다.

xml, json 과 비교했을 때 가독성이 높다.

출처: 인프런

3.주석을 쓸 수 있다.

4.계층 구조를 가질 수 있다.

기본적으로 key : value 쌍을 이루고 문자열도 가질수 있다

martin:
  name: Martin D'vloper
  job: Developer
  skill: Elite
---
martin:{name:Martin D'vloper, job:Developer, skill:Elite}

리스트 자료형도 나타낼 수 있다.

---
# A list of tasty fruits
- Apple
- Orange
- Strawberry
- Mango
...
fruits: ['Apple', 'Orange', 'Strawberry', 'Mango']