Engineering
TOAST Object Storage 소개 (TOAST Service 들여다 보기)
2019년 3월 20일
원문에서 보기 ↗TOAST Object Storage는 여러 서비스의 백엔드 스토리지로 사용되고 있습니다. Dooray!, TOAST File, TOAST Image 등 비정형 데이터를 저장하는 많은 서비스의 근간이라고 할 수 있습니다. 그런데 일반적으로 많이 사용하고 있는 블록 스토리지 대신 왜 오브젝트 스토리지를 사용할까요? 이번 달에는 오브젝트 스토리지와 전통적인 저장소(레거시 저장소, 파일 시스템과 블록 스토리지)의 차이점에 관해 설명해 보려 합니다.
1. 오브젝트 스토리지는 무엇인가?
최근의 데이터는 이미지, 영상, SNS에서 오가는 대화들처럼 복잡하고 용량이 클 뿐만 아니라 구조화되어 있지 않은 비정형 데이터들이 다수를 차지하고 있습니다. 비정형 데이터는 전통적인 파일 시스템과 블록 스토리지로는 관리가 어렵습니다. 구조화되어 있지 않기 때문에 빠른 검색이나 분석이 쉽지 않습니다. 사용자가 데이터를 계층화된 디렉터리로 분류하고 구조화된 파일명 또는 파일 종류에 따라 정해진 태그를 부여해 관리해야 합니다. 그러나 저마다 데이터를 분류하는 규칙이 다르기 때문에 개체 수가 많아져 분류 단계가 늘어나게 되면 접근이 쉽지 않게 됩니다.
오브젝트 스토리지는 급격히 늘어나고 있는 비정형 데이터를 안전하게 저장하고 쉽게 관리하기 위해 레거시 저장소와는 다른 접근 방법을 제공합니다. 데이터를 데이터 본체와 자동으로 생성되는 메타 데이터, 고유 식별자(ID)로 구성된 오브젝트로 관리하는 방법입니다.
오브젝트 스토리지는 TOAST 파일, Dooray 드라이브, 드롭박스, 구글 드라이브와 같은 클라우드 저장소 서비스, 페이스북, 인스타그램과 같은 사진을 저장하는 사회 관계망 서비스, 스포티파이와 같은 음악을 저장하는 스트리밍 서비스 등 비정형 데이터를 사용하는 많은 서비스의 백엔드 저장소로 사용됩니다.
2. 레거시 저장소와 무엇이 다른가?
오브젝트 스토리지와 레거시 저장소는 어떤 점들이 다를까요? 앞서 언급했지만 오브젝트 스토리지는 저장부터 접근, 관리까지 레거시 저장소와는 완전히 다른 방법을 제공하고 있습니다.
저장 방법
레거시 저장소와 오브젝트 스토리지의 차이점에 관해 설명하기 위해 가장 많이 이용되는 비유가 주차입니다. 일반적으로 운전자가 주차장의 빈 공간을 확인하고 직접 주차를 합니다. 차량을 사용하려면 주차한 위치로 가야하기 때문에 어디에 주차했는지를 반드시 기억하고 있어야 합니다. 그러나 대리주차는 운전자가 주차 담당자에게 키를 넘겨주고 영수증을 받으면, 차량은 어딘가에 주차됩니다. 회수할 때도 영수증만 보여주면 주차 담당자가 운전자에게 차량을 가져다줍니다.

주차를 데이터 저장과 치환해 봅시다. 레거시 저장소에서 데이터를 저장할 때는 어디에 저장할지가 중요합니다. 파일 관리자를 이용해 계층화된 디렉터리를 구성하고 원하는 디렉터리에 파일을 저장하거나, 운영체제가 제공하는 POSIX API를 이용해 사용 가능한 주소를 넘겨받아 데이터를 저장합니다. 저장된 데이터에 접근하려면 데이터의 정확한 위치를 알고 있어야 합니다. 운전자가 직접 주차하는 방식과 유사합니다. 그러나 오브젝트 스토리지는 사용자가 저장해 달라고 요청한 데이터를 오브젝트로 구성하여 저장소 내 어딘가에 저장합니다. 사용자는 그 위치를 알 필요가 없습니다. 데이터가 안전하게 저장되어 있기만 하면 됩니다. 나중에 사용하고자 하는 데이터의 ID를 제시하며 가져와 달라고 요청하기만 하면 됩니다. 대리주차와 같습니다.
안정성
레거시 저장소는 사용자가 직접 서로 다른 물리 저장소에 백업하거나, RAID 또는 백업 시스템의 도움을 받아야합니다. 그러나 오브젝트 스토리지는 사용자가 특별히 고려해야 할 사항이 없습니다. 오브젝트 스토리지는 데이터를 저장할 때 물리적 위치가 다른 저장소에 여러 카피로 미러링(Replication)하거나, 패리티 조각를 포함하여 여러 조각으로 나누어 저장(Erasure Coding)합니다. RAID-1, RAID-6과 비슷한 안정성 대책을 가지고 있습니다. 때문에 저장 장치의 물리적 오류에도 데이터의 무결성을 유지할 수 있습니다.

확장성
레거시 저장소는 용량이 부족하면 물리적으로 디스크를 추가하고 새로운 경로로 마운트해 사용합니다. 새로운 마운트 경로를 사용하기 때문에 데이터를 저장할 위치가 변경됩니다. 저장할 위치를 변경 하고 싶지 않다면 기존의 디스크보다 용량이 더 큰 디스크를 추가하고 새 디스크로 데이터를 옮기는 과정이 필요합니다. 물리적 인터페이스와 마운트 포인트의 제한, 디스크의 크기에 따라 추가할 수 있는 용량에 한계가 있습니다.
그러나 오브젝트 스토리지는 데이터의 위치가 중요하지 않기 때문에 이런 복잡한 과정이 필요치 않습니다. 새 저장소 노드를 추가하고 풀(Pool)에 등록하기만 하면 전체 가용 용량이 늘어납니다.

메타데이터
파일 시스템에서는 파일 타입에 따라 정해진 메타데이터들이 있습니다. MP3 ID3나 JPEG Tag가 대표적인 메타데이터입니다. 그러나 사용자가 임의로 메타데이터를 추가할 수는 없습니다. 메타데이터가 제공되지 않는 파일 타입은 메타데이터를 통한 분류와 검색을 할 수 없다는 뜻입니다. 이에 반해 오브젝트 스토리지는 사용자 정의 메타데이터를 무제한으로 추가할 수 있습니다. 추가된 사용자 정의 메타데이터는 해시태그와 같이 데이터를 하나의 주제로 묶고, 주제에 따라 분류하는 등 비정형 데이터를 보다 효율적으로 관리할 수 있도록 도움을 줍니다.
| Legacy Storage | Object Storage | |
|---|---|---|
| 적합성 | 구조화된 데이터에 적합 (DB, 비즈니스 애플리케이션 데이터 등) | 비정형의 대용량 데이터에 적합 (클라우드 저장소, 멀티미디어 데이터 저장소 등) |
| 저장 방법 | POSIX API를 통해 저장하고 저장한 위치를 기억해 접근 상대적으로 응답 속도가 빠름 | REST API를 통해 저장 및 접근 요청 HTTP(s) 기반으로 접근하기 때문에 상대적으로 응답 속도가 느림 |
| 안정성 | 사용자가 직접 데이터를 백업하거나 백업 시스템 이용 | 자동으로 RAID-1, 6 수준의 데이터 무결성 제공 |
| 확장성 | 디스크를 추가하여 새로운 경로로 사용하거나 기존의 디스크를 대체 | 경로 변경 없이 거의 무제한으로 확장 가능 |
| 메타데이터 | 파일 종류에 따라 정의된 메타데이터만 사용 | 사용자 정의에 따라 제한 없이 사용 |
3. 마치며
지금까지 레거시 저장소와 오브젝트 스토리지의 차이점에 관해 설명했습니다. 간략히 요약해 보자면 다음과 같습니다.
데이터에 고유식별자와 메타데이터를 부여하여 안전하게 저장하고, 이를 통해 손쉽게 데이터에 접근해 사용할 수 있는, 확장이 쉬운 저장소
레거시 저장소와 오브젝트 스토리지의 차이점을 정리해보니 오브젝트 스토리지가 압도적으로 좋아 보입니다. 그러나 압도적으로 좋은 시스템이란 없습니다. 오브젝트 스토리지는 대용량의 데이터를 저장하는데 초점이 맞춰져 있기 때문에 작은 데이터를 많이 저장한다면 좋은 선택이 될 수 없습니다. 데이터의 종류, 규모에 따라 구축 비용과 유지 비용이 천차만별입니다. 여러 조건을 고려해 내 서비스에 적합한 저장소를 선택하는 것이 합리적일 것입니다.