Operation/System Architecture

스토리지 종류 (파일/블록/객체 스토리지)

JaeHoney 2022. 6. 27. 08:39

스토리지의 종류

최근에 사이드 프로젝트를 담당하게 되면서 영상물을 서버에 저장하는 작업이 필요했습니다. 제가 아는 서버에 파일을 저장하는 방법은 두 가지였습니다.

  1. DB에 파일명, 확장자와 BinaryData로 내용을 저장하는 방법
  2. 파일을 서버에 저장하고 DB에서는 그것을 꺼내쓸 수 있는 데이터만 저장하는 방법

어떤 것이 좋을 지 궁금해서 당근마켓 피드 & 디스커버리 팀에서 일하는 지인에게 어떤 것을 사용하냐고 물어봤어요!

 

결론은 예전에는 첫 번째 방법처럼 DB에 BinaryData로 저장하다가 CDN 사용 이점때문에 두 번째 방법으로 갈아탔다고 하네요. 추가로 오브젝트 스토리지에 영상물을 저장한다고 했습니다.

 

저는 오브젝트 스토리지가 어떤 것인지도 잘 몰라서 스토리지 종류에는 어떤 것이 있는 지 알아보기로 했습니다!

 

스토리지는 대표적으로 File Storage, Block Storage, Object Storage 3가지가 있습니다.

 

파일 스토리지

파일 스토리지는 우리가 흔히 아는 윈도우의 폴더 구조나 맥OS의 파인더를 떠올리면 됩니다. 파일 시스템은 종이 파일 및 폴더가 캐비넷이 정리되는 방식을 모방한 계층적 구조를 갖고 있습니다.

 

파일 스토리지는 데이터 양이 늘어나면서 파일과 폴더를 계속 추적하기 위한 자원 요구가 늘어나 성능이 떨어질 수 있습니다.

 

이러한 문제가 있음에도, 파일 스토리지는 개인용 컴퓨터와 서버에서 일상적인 작업을 잘 수행하여 널리 사용됩니다. 파일 스토리지는 일반적으로 하드 드라이브나 NAS(Network Attached Storage)에 사용됩니다.

 

특징

  • 친숙하고 표준화가 잘 되어있다.
  • 데이터가 많아지면 파일과 폴더를 찾기 위해 리소스가 많이 소모된다.
  • 파일에 저장할 수 있는 메타 데이터가 제한적이므로 탐색을 애플리케이션 또는 DB 수준에서 처리해야 한다.

블록 스토리지

블록 스토리지는 단일 스토리지 볼륨을 ‘블록’이라는 개별 단위로 분할하여 저장하는 방식입니다. 블록 스토리지는 주차장으로, 블록은 주차장의 구획된 한 면으로 비유할 수 있습니다. 블록은 파일보다 작은 단위입니다.

 

블록 스토리지는 파일 스토리지 시스템이 구축되는 기반으로 생각할 수 있습니다. 블록 스토리지에서 데이터는 블록 단위의 일정한 크기의 조각으로 나누어 저장됩니다. 각 블록은 저장된 위치에 대한 고유한 주소를 가지고 있어 만약 서버에서 파일을 요청하면 블록들을 재구성해 하나의 데이터로 서버에 전달하게 됩니다.

 

클라우드 환경에서 블록 스토리지의 각 블록은 가상머신 인스턴스에 위치하며 SAN(Storage Area Network) 또는 가상머신의 디스크로 사용됩니다.

 

특징

  • 파일 스토리지와 달리 계층 구조가 필요 없다.
  • 서로 다른 운영체제에서 액세스할 수 있다.
  • 비용이 많이든다.
  • 여전히 메타 데이터가 제한적이다.

오브젝트 스토리지

객체 스토리지는 각 데이터 조각을 가져와서 객체로 지정하고 저장하는 방식입니다. 이러한 오브젝트는 PDF, 비디오, 오디오, 텍스트, 웹사이트 데이터 등 거의 모든 데이터 유형이 될 수 있습니다.

 

객체 스토리지에서 모든 객체는 파일 스토리지와 다르게 중첩된 계층 구조 없이 단일한 평면적인 주소 공간에 저장됩니다. 이 평면 주소 공간에는 고유 식별자가 있고 객체는 별도의 파일 시스템 테이블이나 색인의 일부가 아닌 객체 자체로 저장되므로 접근이 더 쉬워집니다.

즉, 객체 스토리지 시스템에서는 객체의 키(이름)만 알고 있으면 빠르고 쉽게 대상을 검색할 수 있습니다.

 

우리가 해시를 사용하는 이유가 O(1)로 선형으로 탐색하고 삽입하기 위함입니다. 그런 점에서 오브젝트 스토리지는 해시 자료구조와 비슷한 것 같습니다. 반면, 해시 자료구조는 Range Scan에 약하다는 단점이 있는데 일반적인 스토리지에서는 Range Scan을 필요로 하지 않습니다.

 

파일 스토리지와 블록 스토리지는 메타 데이터가 제한적이라는 단점이 있습니다. 반면, 오브젝트 스토리지는 메타 데이터가 오브젝트에 포함되므로 접근과 검색이 쉽습니다.

 

오늘날 많은 사용자가 사용하는 이미지, 영상 등 복잡하고 대용량인 비정형 데이터의 처리를 효율적으로 할 수 있어 대부분의 서비스 백엔드 스토리지로 사용되고 있습니다.

 

특징

  • 데이터 접근이 위 3가지 방식 중 가장 빠르다.
  • 확장성이 좋다.
  • 메타 데이터가 오브젝트에 포함되므로 접근과 검색이 쉽다.
  • 오브젝트를 수정할 수 없어 덮어쓰는 방법을 사용한다.

Reference