YAML 이란 무엇인지 yaml 기본 사용 방법 정리

yaml 또는 yaml 파일을 자주 보게 되는데요. 요즘 많은 소프트웨어와 애플리케이션에서 설정 파일을 작성하고 관리하는 데 YAML(YAML Ain't Markup Language)1형식을 자주 보게 되는데요. YAML은 괄호나 따옴표처럼 복잡한 구문 기호가 없고 들여쓰기에 기반한 구조와 간단한 반각기호로 구성된 키와 값 구분자가 사용되어 JSON과 비슷한 구조를 가졌습니다.

그래서 YAML형식을 사용하면 구성 파일과 같은 일반적인 사용자들이 쉽게 읽을 수 있는 중심적인 데이터 구조를 구성할 수 있습니다. 공식 사이트인 https://yaml.org 를 열어보면 사이트 레이아웃 자체가 YAML 형식으로 구성되어 있어 보다 단순하고 직접적인 정보 전달 방식을 가지고 있는 것을 확인할 수 있습니다.

이번 글에서는 YAML의 개념, 기본 사용법, 그리고 실전적인 팁들을 하나씩 정리해 보도록 하겠습니다.

아래 설명은 iboxcomein.com 에서 테스트 및 검증 후 작성 된 내용이지만 이것이 본문의 내용의 정확성이나 신뢰성에 대해 보증을 하는 것은 아니니 단순 하게 참고용으로 확인바랍니다.

튜토리얼 환경: YAML 1.2 버전

YAML이란

YAML은 사람과 기계 모두에게 읽기 쉬운 형식을 제공하며, 주로 설정 파일, 데이터 전송 및 저장 등에 사용됩니다. YAML은 프로그래밍 언어와 독립적이며, 다양한 프로그래밍 언어에서 지원되는 표준으로 사용됩니다. 우선 YAML 기본적인 정의 사용처와 YAML과 유사하게 활용되는 JSON과의 차이점도 같이 정리합니다.

파워포인트 PPT 로 배경이 투명한 이미지 사진 그림 만들어 저장 하는 방법

기본적인 정의 사용처

  • 구성 설정 파일: 소프트웨어나 프레임워크의 구성 설정 파일로 사용됩니다. 예를 들어, 서버 설정, 데이터베이스 연결 정보, 로깅 설정 등을 YAML 파일에 작성할 수 있습니다.
  • 프레임워크 설정: 다양한 프레임워크에서 YAML을 사용하여 설정 정보를 관리합니다. 예를 들어, 웹 프레임워크에서 URL 라우팅 규칙, 데이터베이스 연결 정보, 보안 설정 등을 YAML 파일에 정의할 수 있습니다.
  • 데이터 교환: YAML은 데이터를 표현하고 전송하기 위한 형식으로 사용될 수 있습니다. 다양한 시스템 간에 데이터를 교환하거나, 다른 시스템에서 처리할 수 있는 형식으로 변환하기 위해 YAML을 사용할 수 있습니다.

JSON과의 차이점

JSON 과 YAML 비교
JSON 과 YAML 비교

JSONJavaScript Object Notation 파일도 데이터 교환 형식을 나타내는 텍스트 파일입니다. JSON 파일은 .json 확장자를 가지며, 웹 상에서 데이터를 전송하는 데 주로 사용됩니다. YAML과 JSON은 모두 데이터 직렬화 형식으로 유사한 부분이 많지만, 다음과 같은 몇 가지 차이점이 있습니다.

  • 가독성: YAML은 가독성에 더 초점을 맞춘 디자인으로, 들여쓰기를 사용하여 계층 구조를 표현하고 중괄호({})나 대괄호([]) 등의 기호를 사용하지 않습니다. 반면에 JSON은 구조를 대괄호와 중괄호로 구분합니다.
  • 주석: YAML은 주석을 지원하며, '#' 문자를 사용하여 주석을 작성할 수 있습니다. JSON에서는 주석이 지원되지 않습니다.
  • 기본 데이터 타입: YAML은 스칼라, 시퀀스, 매핑의 세 가지 기본 데이터 타입을 지원합니다. JSON은 기본 데이터 타입으로 문자열, 숫자, 부울, 객체, 배열, null을 지원합니다. 두 형식 모두 형식 간 변환을 지원하기 때문에 데이터 타입의 차이를 해결할 수 있습니다.
  • 파싱 속도: JSON이 일반적으로 더 빠른 파싱 속도를 보이며, 더 대중적인 라이브러리나 파서를 지원합니다. YAML은 상대적으로 느린 파싱 속도를 가지고 있습니다.
  • 용도: 일반적으로, JSON은 웹 API, 파이프라인, 프론트엔드 및 백엔드 사이의 응용 프로그램간 데이터 전송에 사용됩니다. 반면에 YAML은 구성 파일, 프레임워크 설정 등 인간과 직접적으로 인터랙션 하는 경우에 적합합니다.
여러가지 운영체제 선택 설치 멀티 부팅 USB 만들기 - Ventoy

기본 사용법

YAML의 기본 구조적인 요소들인 들여쓰기와 구분 등과 같은 중요한 작성법을 소개합니다.

기본 구문

key1: value1
key2:
  - item1
  - item2
key3:
  nested_key1: nested_value1
  nested_key2: nested_value2

위의 예제에서 key1value1을 가지고 있고, key2는 리스트 형태로 item1item2를 가지고 있습니다. key3는 중첩된 구조를 가지며, nested_key1nested_key2라는 하위 키를 가지고 있습니다.

  • 키-값 쌍: 각 라인은 YAML에서 키-값 쌍을 나타냅니다.
    • key1value1을 가지고 있는 키-값 쌍입니다.
    • key2는 리스트 형태로 - item1- item2를 가지고 있는 맵입니다.
    • 리스트는 하이픈(-)으로 시작하며, 여러 값을 포함하는 배열을 나타냅니다.
    • key3은 중첩된 구조를 가지는 맵입니다.
    • nested_key1nested_key2라는 하위 키를 가지며, 이들은 각각 nested_value1nested_value2 값을 갖습니다.
  • 들여쓰기와 구분: 들여쓰기는 계층 구조를 나타내는 데 사용됩니다.
    • 예를 들어, key2key3key1과 같은 레벨에 있지 않고 들여쓰기로 구분되어 있습니다. 이것은 key2key3key1의 하위 요소임을 나타냅니다.
    • 들여쓰기는 공백 문자로 구성되며, 일반적으로 공백 2칸 또는 공백 4칸을 사용합니다. 중요한 것은 일관성을 유지하는 것입니다.
    • 모든 하위 요소는 그들의 상위 요소와 동일한 들여쓰기를 가져야 합니다.
    • 이를 통해 YAML은 계층 구조를 시각적으로 표현하고 데이터의 관계를 명확하게 표현할 수 있습니다.

YAML을 이용한 대표적인 구성 파일의 예로 Docker Compose 파일을 들 수 있습니다. YAML 형식을 사용하여 구성 파일을 작성하면 코드의 가독성이 좋아지며, 데이터를 쉽게 파악할 수 있습니다.

version: '3.8'
services:
  web:
    build: .
    ports:
      - '80:80'
  database:
    image: 'mysql:5.7'
    environment:
      MYSQL_ROOT_PASSWORD: 'password'
      MYSQL_DATABASE: 'app_db'
  redis:
    image: 'redis:alpine'

위의 예시는 다음과 같은 내용을 포함합니다.

  • version: Docker Compose 구성 파일의 버전을 나타냅니다.
  • services: 이 컴포즈 파일에서 정의할 컨테이너(서비스) 목록을 나타냅니다.
  • web: 웹 서비스를 구성하며, 현재 디렉토리의 Dockerfile을 이용하여 빌드하고 호스트와 컨테이너의 80 포트를 바인딩합니다.
  • database: MySQL 데이터베이스 서비스를 구성하며, mysql:5.7 이미지를 사용하고 환경변수를 설정합니다.
  • redis: Redis 데이터 저장소 서비스를 구성하며, redis:alpine 이미지를 사용합니다.
윈도우 클립보드에 복사 된 내용 파일로 바로 폴더에 저장하는 방법

YAML의 다양한 요소

YAML의 다양한 요소에서는 목록, 사전, 스트링, 멀티라인 문자열 등 다양한 데이터 유형과 작성법을 설명합니다. 주석과 앵커 및 별칭 사용 등 주요 기능에 대해 다룹니다. 기본 문법에서 다룬 내용들이 중복될 수 있지만 이해를 돕기 위한 것이니 다시 한번 더 확인합니다.

목록 작성

YAML에서 목록은 순서가 지정된 항목의 컬렉션입니다. 목록 항목은 하이픈(-)으로 시작하며, 균일한 들여쓰기를 사용합니다.

shopping_list:
  - apples
  - bananas
  - oranges

groceries:
  - fruits:
    - apples
    - bananas
    - oranges
  - vegetables:
    - carrots
    - lettuce
    - spinach

mixed_data_list:
  - item1
  - 42
  - True
  - sub_list:
    - item2
    - item3
  - key: value

YAML에서 목록은 강력한 구조를 제공합니다. 간단한 문자열을 나열하는 일상적인 작업에서부터 복잡한 데이터 구조를 표현하는 데 사용되며, 작성 및 파싱이 쉽게 되어 있어 이해하기 쉽게 합니다. 이러한 옵션들로 인해 YAML에서 목록의 사용성이 더욱 강화됩니다.

  • 기본 문법: 목록 항목은 하이픈(-)으로 시작하며, 각 항목은 하이픈 앞에서 동일한 들여쓰기를 사용해야 합니다. 이렇게 하면 목록 구조가 더 명확하게 표현됩니다.
  • 중첩 목록: YAML 목록은 groceries:과 같이 중첩이 가능합니다. 이를 통해 계층 구조를 가진 목록을 쉽게 작성할 수 있으며, 들여쓰기를 사용하여 서브 목록을 추가할 수 있습니다.
  • 복합 데이터 유형: YAML 목록은 mixed_data_list:와 같이 다양한 데이터 유형을 포함할 수 있습니다. 예를 들어 문자열, 숫자, 불리언 값뿐만 아니라 사전dictionary또는 다른 목록list 등 복합 데이터 유형을 포함할 수 있습니다.

사전(Dictionary)

YAML에서 사전Dictionary은 키-값 쌍으로 구성된 데이터 구조로서, 매핑mapping이라고도 불립니다.

person:
  name: John Doe
  age: 25
  city: New York
  education:
    high_school: Good High School
    university: Best University

위의 예시에서 사전을 표현한 person내부에 name, age, city, 그리고 education이라는 키(key)가 있는 것을 확인할 수 있습니다.

  • 각 키에 대응하는 값(value)은 콜론(:)을 기준으로 오른쪽에 위치했습니다.
  • 또한, 한 단계 더 들어간 education 키에는 또 다른 사전이 중첩되어 있어 더 복잡한 데이터 구조를 보여줍니다. 들여쓰기는 사전의 계층 구조를 표현하는 데 사용됩니다.

스트링(String)

YAML에서 문자열은 큰따옴표("") 또는 작은따옴표('')를 사용하거나 따옴표 없이 작성할 수 있습니다. 큰 따옴표 사용시 공백 문자와 이스케이프 문자를 인식할 수 있습니다. 작은 따옴표를 사용하면 문자열을 원시 문자열로 작성할 수 있습니다.

simple_string: Hello, world!
double_quoted: "Hello, world! \nThis is a new line."
single_quoted: 'Hello, world! \nThis is not a new line.'

YAML 파일에서 문자열을 작성할 때 어떤 따옴표를 사용할지는 상황과 주어진 문자열에 따라 판단합니다. 이스케이프 문자를 염두에 두고 큰따옴표를 사용하거나, 원시 문자열을 사용하려면 작은따옴표를 사용하십시오. 이를 통해 YAML 문자열에 대한 처리 방식을 효과적으로 구분하고 제어할 수 있습니다.

  • 따옴표 없이 입력: 기본적인 문자열에서는 따옴표 없이 작성 가능합니다. 이 경우 간단하고 직관적인 문자열 표현을 위한 방법입니다.
  • 큰따옴표(" ") 사용: 큰따옴표로 문자열을 감싸면 이스케이프 문자가 유효하게 작동하며, 공백 문자와 개행 등의 제어 문자를 처리할 수 있습니다. 예를 들어, \n은 개행(newline)으로 인식되고 처리되며, 여러 공백 문자와 제어 문자도 유효하게 작동합니다.
  • 작은따옴표(' ') 사용: 작은따옴표로 문자열을 감싸면 원시 문자열(raw string)을 작성할 수 있습니다. 이 경우 이스케이프 문자는 일반 문자로 처리되며, 제어 문자의 동작이 무시됩니다.

멀티라인 문자열

YAML에서 멀티라인 문자열을 작성할 때는 > 또는 |를 사용합니다.

folded_multiline: >
  This is a folded
  multiline string.
  All newlines are removed.

literal_multiline: |
  This is a literal
  multiline string.
  All newlines are preserved.

>를 사용하면 개행 문자를 무시하고 문자열을 한 줄로 표시합니다. |는 문자열에 개행 문자를 유지합니다.

  • 접기 지시자 사용: > 기호를 사용하여 멀티라인 문자열을 작성하면, 개행 문자는 무시되고 문자열이 접혀 한 줄로 표시됩니다. 연속된 개행 문자는 하나의 개행 문자로 처리되어 단락을 구분할 수 있습니다.
  • 리터럴 지시자 사용: | 기호를 사용하여 멀티라인 문자열을 작성하면, 개행 문자가 문자열 내에 유지됩니다. 이를 통해 원래 문자열의 줄바꿈 구조를 그대로 보존할 수 있습니다.

주석

주석은 코드의 가독성과 이해를 높이는 데 도움을 주는 유용한 도구입니다. 주석을 활용하여 데이터의 의도를 명확하게 설명하고, 다른 사람들과 코드를 공유할 때 추가적인 정보를 제공할 수 있습니다. YAML에서 주석은 옥타샵(#) 기호로 시작합니다.

# This is an example of a standalone comment
person:
  name: John Doe # This is an inline comment
  age: 25

주석은 독립된 줄에 작성하거나 데이터의 뒤쪽에도 추가할 수 있습니다.

  • 독립된 주석: 주석이 별도의 줄에 작성됩니다. 주석 기호(#) 이후에 나오는 모든 내용은 주석으로 처리됩니다. 이러한 주석은 데이터 구조와 독립적으로 사용되며, 해당 줄의 데이터와는 직접적인 연관이 없습니다. 다른 사람이 코드를 이해하거나 유지보수하는 데 도움을 주는 역할을 합니다.
  • 인라인 주석: 주석이 데이터 구조 내의 특정 위치에 인라인으로 작성됩니다. 인라인 주석은 데이터 구조와 함께 사용되며, 해당 줄의 데이터와 관련된 설명을 제공합니다.

앵커 및 별칭 사용

YAML에서 앵커(&)와 별칭(*)을 사용하여 중복되는 구조를 재사용할 수 있습니다. 앵커를 사용해 구조에 이름을 지정하고, 별칭을 사용해 해당 구조를 참조합니다.

person: &person_anchor
  name: John Doe
  age: 25

employee:
  <<: *person_anchor
  position: Developer

위의 예시에서 앵커와 별칭을 사용해 personemployee의 구조가 동일하게 유지되는 것을 볼 수 있습니다. 이는 중복을 피하고 데이터를 재사용할 수 있어 유지보수성을 향상시키는 데 도움이 됩니다.

  • person은 앵커 &person_anchor를 가지는 맵입니다. 이 맵은 nameage라는 키-값 쌍으로 구성되어 있습니다.
  • employee는 별칭 *person_anchor를 사용하여 person의 데이터를 참조합니다. 이를 통해 employee의 데이터는 person과 동일한 구조를 가지게 됩니다. 또한 position이라는 추가적인 키-값 쌍을 가질 수 있습니다.

확장자

YAML 파일은 일반적으로 .yaml 또는 .yml 확장자를 가지는 텍스트 파일로 저장됩니다. 이러한 확장자는 YAML 포맷을 나타내고 해당 파일이 YAML 문법을 따른 데이터를 포함하고 있음을 나타냅니다.

  • 확장자 .yaml.yml은 기능적으로 동일하며, YAML 파일을 구분하고 인식하는 데 사용됩니다. 어느 확장자를 선택하더라도 YAML 파일을 읽고 쓸 수 있습니다. 두 확장자는 기능상 동일하며, 프로젝트 또는 개발자의 선호에 따라 선택할 수 있습니다. 파일 확장자와 관계없이 파일 내용은 동일한 YAML 구문을 따릅니다.
  • 예를 들어, 서버 설정, 데이터 교환, 프레임워크 설정 등을 YAML 파일로 저장한다면, config.yaml 또는 settings.yml와 같은 파일명으로 사용할 수 있습니다. 그러나 이러한 확장자는 일반적인 관례이지 강제적인 규칙은 아닙니다. 파일명과 확장자는 개발자의 선호도나 팀의 규칙에 따라 다를 수 있습니다.
  • YAML 파일은 구조적인 데이터를 표현하기 위해 사용되며, 키-값 쌍, 리스트, 맵 등의 요소를 활용하여 계층적인 구조를 표현하는 것으로 확장자는 단지 해당 파일이 YAML 포맷을 따르고 있는지를 나타내는 용도로 사용됩니다.
어도비 포토샵 모든 색 회색 흑백으로 나오는 문제 해결하기

사용 팁

YAML 파일을 작성할 때 몇 가지 사용 팁을 따르면 가독성을 높이고 효율적인 구조를 구성할 수 있습니다.

가독성 높이기

  • 적절한 들여쓰기: 들여쓰기는 계층 구조를 나타내는 데 중요합니다. 일관된 들여쓰기 규칙을 사용해 코드를 깔끔하게 유지합니다.
  • 데이터 유형에 맞는 따옴표 사용: 문자열을 입력할 때 원시 문자열을 유지해야 할 경우 작은따옴표('')를 사용하고, 이스케이프 문자 등의 특수 문자를 인식해야 할 경우 큰따옴표("")를 사용합니다.
  • 주석 사용: YAML 파일의 가독성을 높이려면 주석을 사용하여 구조, 데이터 또는 다른 중요한 부분을 설합니다. 이를 통해 동료 개발자나 코드를 처음보는 사람들이 이해하기 쉽게 도와줍니다.
맥 OS-X 마이크로소프트 오피스 자동 업데이트 비활성화 해서 끄는 방법

효율적인 구조 구성

  • 앵커 및 별칭 활용: 중복되는 데이터 구조가 있는 경우 앵커(&)와 별칭(*)을 사용하여 중복을 피하고 코드를 간결하게 만듭니다.
  • 적절한 데이터 유형 사용: 사용 사례에 맞게 데이터 유형을 선택하여 구조 구성을 개선합니다 (예: 목록, 사전, 숫자 및 논리 값). 이렇게 하면 데이터를 탐색하고 사용하기 쉬워집니다.
  • 복잡한 계층 구조 피하기: 가능하다면 단순한 계층 구조를 유지하여 코드를 관리하고 이해하기 쉽게 만드는 것이 좋습니다. 용도에 맞게 구조를 효과적으로 분리할 수 있으며, 이를 통해 유지 관리가 용이해집니다.

마치며

YAML 이란 무엇인지 yaml 파일의 기본적인 사용 방법에 대해서 알아보았습니다. 최근에는 노트앱의 기본 설정도 YAML 파일을 사용하는 경우도 어렵지 않게 경험할 수 있는데요. 이는 YAML 파일이 가독성이 좋고 사용자 친화적인 특성 때문입니다. 이로 인해 개발자뿐만 아니라 일반 사용자들도 설정 파일을 쉽게 작성하고 수정할 수 있게 되었습니다.

YAML의 발전으로 많은 소프트웨어와 도구들이 YAML 파일을 기본 설정으로 사용하기 시작했습니다. 이는 표준화와 확장성을 제공하며, 애플리케이션 간 데이터 교환을 편리하게 해줍니다. 결과적으로, YAML이 다양한 애플리케이션에서 설정 파일의 선호하는 포맷이 되었으며, 점차 다양한 분야에서 더 많이 사용될 것으로 예상됩니다.

따라서 앞으로 노트 앱, 텍스트 에디터, 개발 도구 등 다양한 애플리케이션에서 YAML 파일로 설정을 관리하고 변경하는 경험이 더 많아질 것으로 기대할 수 있습니다. 가독성과 편의성을 바탕으로 더 많은 사용자들이 YAML 형식의 설정 파일에 접근할 수 있다는 것은 직접 설정을 변경하며 애플리케이션을 자신의 환경에 맞춰 사용하는 데 큰 도움이 됩니다.

다음 팟플레이어 구버전 1.6.63891 설치 하기_파일 다운로드 가능

관련 글

댓글로 남기기 어려운 내용은 Contact Form 에서 개별적으로 문의 할 수 있습니다. 해당 글과 연관 된 내용은 Copy를 이용해 현재 페이지의 주소를 복사 후 문의 폼에 입력시 보다 정확한 답을 얻을 수 있습니다.

Leave a Comment