깃허브의 여러 모델 중, 많은 모델에서 .yaml 또는 .yml 파일을 쉽게 찾아볼 수 있다.
그렇다면 .yaml 파일은 무엇이고, 왜 존재하는 것일까?
YAML이란 무엇인가?
YAML은, "Yet Another Markup Language(또 다른 마크업 언어)"의 의미로 시작하여, 현재는 "YAML Ain't Markup Language(YAML은 마크업 언어가 아니다)"로 변경되어 사용되고 있다.
YAML의 핵심은 문서 마크업이 아닌 데이터 중심에 있다는 것을 보여주기 위해 이름을 바꾼 것이다.
*Markup Language: 태그(<>) 등을 이용하여 문서나 데이터의 구조를 명시하는 언어(HTML 등)
*XML(eXtensible Markup Language)
*JSON(JavaScript Object Notation)
YAML은 사람이 읽기 쉬운 데이터 직렬화 형식으로, 설정 파일이나 데이터 저장에 자주 사용된다.
"데이터 직렬화 형식"이란 무엇이기에 YAML이 설정 파일과 데이터 저장에 자주 사용되는 것일까?
데이터 직렬화 형식
데이터 직렬화 형식이란 데이터 구조나 객체 상태를 저장하거나 전송할 수 있는 형식으로 변환하는 과정을 의미한다.
직렬화된 데이터는 나중에 동일하거나 다른 환경에서 재구성(역직렬화)될 수 있다.
데이터 직렬화 형식을 사용하는 주된 이유는 데이터의 저장 및 전송을 쉽게 하기 위해서이다.
- 직렬화: 데이터 구조나 객체 상태를 일련의 바이트나 문자열로 변환하는 과정.
- 역직렬화: 직렬화된 데이터를 원래의 데이터 구조나 객체 상태로 복원하는 과정
데이터 직렬화의 필요성
- 데이터 저장: 데이터를 파일, 데이터베이스 등에 저장
- 데이터 전송: 네트워크를 통해 데이터를 전송 (ex. API 요청 & 응답)
- 데이터 교환: 서로 다른 시스템이나 애플리케이션 간에 데이터를 교환
데이터 직렬화의 예시
JSON: 가볍고 사람이 읽기 쉬운 텍스트 형식. 웹 애플리케이션에서 사용
{
"name": "John Doe",
"age": 30,
"is_student": false
}
XML: 태그를 사용하여 데이터를 구조화하는 형식. 다양한 시스템 간의 데이터 교환에 사용
<person>
<name>John Doe</name>
<age>30</age>
<is_student>false</is_student>
</person>
YAML: 사람이 읽기 쉬운 데이터 직렬화 형식. 설정 파일, 데이터 저장 등에 사용
name: John Doe
age: 30
is_student: false
언뜻 보기에 yaml이 제일 사용이 쉬워보이는데, 왜 분야마다 다른 데이터 직렬화 방법을 사용할까?
그 이유는 각 직렬화 형식이 제공하는 특성과 장단점이 다르기 때문이다.
다양한 직렬화 형식은 특정 상황에서 최적의 성능, 효율성, 호환성 등을 제공할 수 있다.
1. JSON (JavaScript Object Notation)
- 특징: 경량의 텍스트 기반 형식, 브라우저와 서버 간 데이터 교환에 최적화, 많은 프로그래밍 언어에서 쉽게 파싱 및 생성 가능.
- 장점: 단순하고 가독성이 좋으며, JavaScript와의 호환성이 뛰어남.
- 사용 사례: 웹 애플리케이션, RESTful API, 모바일 애플리케이션.
2. XML (eXtensible Markup Language)
- 특징: 태그 기반의 텍스트 형식, 데이터의 계층 구조를 명확히 표현, 스키마를 통해 데이터 유효성 검사 가능.
- 장점: 구조적 표현이 강력하며, 데이터 타입과 형식을 명확히 정의할 수 있음.
- 사용 사례: 문서 형식 데이터, SOAP 웹 서비스, 데이터베이스 데이터 교환.
3. YAML (YAML Ain't Markup Language)
- 특징: 사람이 읽기 쉬운 텍스트 형식, 들여쓰기를 통해 계층 구조 표현, 주석 사용 가능.
- 장점: 가독성이 높고, 설정 파일 작성에 적합.
- 사용 사례: 설정 파일 (예: Docker Compose, Kubernetes), 구성 관리, CI/CD 파이프라인.
공부하면서 작성한 내용이라 틀린 내용이 있을 수 있습니다. ^^;
틀린 내용은 댓글로 알려주시면 감사하겠습니다.
'학습 > etc.' 카테고리의 다른 글
빅데이터(Big Data)에 대해서 (1) | 2024.07.20 |
---|---|
인증과 인가, 어떻게 다를까? (0) | 2024.07.19 |