YAML과 JSON의 차이점은 무엇인가요?

YAML과 JSON은 사람이 판독 가능한 데이터 교환 메커니즘을 제공하는 두 가지 데이터 직렬화 형식입니다. 소프트웨어 애플리케이션 간의 교환을 위해 표준화된 방식으로 데이터를 포맷하고 사람이 텍스트를 판독할 수도 있습니다. 둘 모두 데이터를 키-값 페어로 나타냅니다. JSON은 데이터 객체를 값으로 지원하지만 YAML은 그렇지 않습니다. 하지만 YAML은 더 많은 데이터 유형을 지원하며 개발자 사용을 지원하는 자연어 사용에 더 가깝습니다.

JSON에 대해 읽어보기 »

데이터 표현: YAML과 JSON

JSON과 YAML은 형태와 구문은 비슷하지만 약간 다릅니다.

언뜻 보면 JSON 형식은 YAML보다 데이터 표현이 더 기계처럼 보입니다. JSON 메시지에는 다음 기호가 포함됩니다.

  • 객체의 중괄호
  • 키-값 페어를 구분하는 콜론
  • 배열의 대괄호 
  • 문자열을 묶는 따옴표

JSON은 JavaScript의 작은 하위 집합으로부터 구축되었습니다. 따라서 구문으로 인해 JSON 문서가 프로그래밍 코드와 비슷하게 보입니다.
 

JSON과 달리 YAML 형식은 정형 데이터를 종이에 기록하는 방식과 비슷해 보입니다. 사람이 더 쉽게 읽을 수 있도록 특별히 설계되었습니다. 다음을 사용합니다.

  • 객체를 나타내는 들여쓰기 
  • 키-값 페어를 구분하는 콜론
  • 배열의 하이픈
  • 주석을 나타내는 해시

YAML은 원래 XML을 단순화하기 위해 만들어졌습니다.

문서 예제: YAML과 JSON

다음은 셔츠의 제품 데이터가 포함된 문서가 YAML과 JSON에서 어떻게 표시되는지에 대한 예입니다.

YAML

JSON

type: T-Shirt

price: 20.00

sizes:

  • S
  • M
  • L

   reviews: # Note about reviews

  • username: user1

         rating: 4

         created_at: 2023-04-19T12:30:00Z

  • username: user2

         rating: 5

         created_at: 2023-05-02T15:00:00Z

{

  "product": {

    "type": "T-Shirt",

    "price": 20.00,

    "sizes": ["S", "M", "L"]

    "reviews": {

      { "username": "user1”, "rating": 4, "created_at": "2023-04-19T12:30:00Z" },

      { "username": "user2”, "rating": 5, "created_at": "2023-05-02T15:00:00Z" }

    }

  }

}

주요 차이점: YAML과 JSON

YAML의 구문으로 인해 특히 개발자가 아닌 경우 JSON보다 YAML 파일을 읽고, 이해하고, 쓰는 것이 더 쉬운 것으로 간주됩니다. 다음으로 다른 주요 차이점에 대해 알아보겠습니다.

데이터 유형

JSON 형식은 다음 데이터 유형을 지원합니다.

  • 번호
  • 부울
  • Null
  • 문자열
  • 배열
  • 객체(중첩된 키-값 페어의 모음)

YAML 형식은 모든 동적 프로그래밍 언어의 모든 네이티브 데이터 유형을 지원합니다. 예를 들어 시퀀스(목록), 스칼라(예: 숫자 및 문자열) 및 매핑(키-값 페어)으로 구성된 중첩된 데이터 모음을 지원합니다. 이 지원 덕에 더 복잡한 데이터 구조를 만드는 것이 가능합니다. 

기본 지원

JSON은 다양한 프로그래밍 언어와 함께 널리 사용됩니다. 예를 들어 JavaScript는 JSON 구문 분석을 기본적으로 지원합니다. Python Standard Library에도 JSON이 포함되어 있으며 JSON 라이브러리는 PHP 5.2에 내장되어 있습니다. 마찬가지로 50개 이상의 인기 언어가 다양한 패키지와 라이브러리를 통해 JSON을 지원합니다.

반면, 널리 사용되는 언어 중에 YAML을 기본적으로 지원하는 언어는 없습니다. 대신 개발자가 라이브러리를 설치하고 사용해야 합니다. 널리 사용되는 2가지 YAML 파서는 Python용 PyYAML과 C용 LibYAML입니다. 

버전 관리 

Git와 같은 버전 관리 소프트웨어를 통해 JSON과 YAML의 버전을 지정할 수 있습니다. 그러나 YAML 파일에서 버전 간 변경 사항을 스캔하고 이해하기가 더 쉬운 것으로 간주됩니다.

설명

주석에는 JSON 데이터 형식이 지원되지 않습니다. 이를 해결하려면 주석 키-값 페어를 정의해야 합니다.

YAML 파일에서는 주석 앞에 해시 기호가 표시됩니다.

사용 시기: YAML과 JSON

JSON은 JavaScript에서 광범위하게 지원되고 통합되기 때문에 대부분의 사용 사례에서 YAML보다 더 많이 사용되는 데이터 직렬화 형식입니다. JSON은 분산 소프트웨어 통신, 웹 애플리케이션, 구성 파일 및 API에 광범위하게 사용됩니다.

데이터 형식 지정과 사람이 읽을 수 있는 형식이라는 점을 고려할 때 YAML이 더 나은 선택인 것처럼 보일 수 있지만, 일반적으로 JSON은 상호 호환성 측면에서 선호됩니다. JSON 데이터 형식은 많은 애플리케이션과 서비스에서 이미 구문 분석되고 있기 때문입니다.

반면 YAML은 가독성이 좋고 주석을 지원한다는 이유로 특정 컴퓨팅 분야에서 강력한 입지를 확보했습니다. 특히 YAML은 많은 자동화, DevOps, 코드형 인프라(IaC) 도구 및 서비스의 구성 파일을 위한 기본 데이터 직렬화 형식입니다. 예를 들어 YAML은 도커와 Kubernetes 파일에서 자주 사용됩니다.

또한 YAML은 AWS CloudFormation, AWS Serverless Application Model (AWS SAM), AWS CodeBuild와 같은 Amazon Web Services(AWS) 제품 및 서비스에서 구성 파일을 작성하는 데 사용됩니다.

차이점 요약: YAML과 JSON

 

JSON

YAML

무엇인가요?

소프트웨어 애플리케이션과 서비스 간에 정형 데이터를 교환하기 위한 데이터 직렬화 형식입니다. 사람이 사용하는 것보다 애플리케이션에 우선적으로 사용됩니다. 

소프트웨어 애플리케이션과 서비스 간에 정형 데이터를 교환하기 위한 데이터 직렬화 형식입니다. 애플리케이션보다 사람이 더 많이 사용합니다.

주요 사용 사례

플랫폼, 언어, 분산 소프트웨어 통신, 웹 앱, 구성 파일 및 API에 널리 사용됩니다.

많은 자동화, DevOps,코드형 인프라(IaC) 도구 및 서비스의 구성 파일에 사용됩니다.

가독성

간편합니다.

가장 쉽습니다.

데이터 유형

숫자, 부울, Null, 문자열, 배열, 객체

시퀀스, 스칼라 및 매핑으로 구성된 중첩된 데이터 모음을 통해 모든 데이터 유형을 지원합니다.

주석 지원

아니요.

예.

데이터 객체를 값으로 지원

예.

아니요.

버전 관리

예. 하지만 버전 간의 차이점을 한 눈에 스캔하고 이해하기가 그리 간단하지 않습니다.

예. 버전 간의 차이점을 한 눈에 쉽게 스캔하고 이해할 수 있습니다.

AWS는 YAML 및 JSON 요구 사항을 어떻게 지원할 수 있나요?

모든 AWS 데이터 통합 서비스는 JSON 파일을 처리할 수 있습니다. 다음은 세 가지 관련 AWS 서비스입니다.

  • AWS Glue는 서버리스 데이터 통합 서비스입니다. AWS Glue를 사용하면 분석, 기계 학습 및 애플리케이션 개발을 위한 데이터를 검색하고 준비하고 결합할 수 있습니다.
  • Amazon Simple Queue Service (Amazon SQS)는 완전관리형 메시지 대기열 서비스입니다. 이 서비스를 사용하면 소프트웨어 구성 요소 간에 모든 볼륨의 메시지를 전송, 저장 및 수신할 수 있습니다. Amazon SQS 메시지에는 XML, JSON, 서식 없는 텍스트 등의 텍스트 데이터가 최대 256KB까지 포함됩니다.
  • Amazon DocumentDB(MongoDB 호환)는 완전관리형 네이티브 JSON 도큐먼트 데이터베이스입니다. Amazon DocumentDB를 사용하면 인프라를 관리하지 않고도 거의 모든 규모의 중요한 문서 워크로드를 쉽고 비용 효율적으로 운영할 수 있습니다.

마찬가지로 AWS의 개발자 도구는 여러 배포 서비스에서 YAML 파일을 지원합니다. 다음은 2가지 예입니다.

  • AWS Step Functions를 사용하면 AWS Lambda, Amazon Simple Notification Service(SNS) 및 Amazon DynamoDB와 같은 AWS 서비스를 사용하여 복원력이 뛰어난 서버리스 워크플로를 구축할 수 있습니다. Step Functions는 YAML 상태 머신 정의도 지원합니다. 따라서 코드형 인프라(IaC)와 동일한 언어로 워크플로를 정의할 수 있습니다.
  • AWS App2Container는 Java 및 .NET 웹 애플리케이션을 컨테이너 형식으로 마이그레이션하고 현대화하는 데 사용할 수 있는 명령줄 도구입니다. Amazon Elastic Container Service(Amazon ECS)는 태스크 정의 및 Kubernetes 배포를 위한 YAML 파일을 생성합니다. 또한 보안 및 확장성에 대한 AWS 모범 사례를 따릅니다.

지금 계정을 만들어 AWS에서 YAML 및 JSON을 시작해 보세요.