[Cloud] 클라우드상 오브젝트 스토리지(Object Storage)란?

블록 스토리지, 파일 스토리지, 오브젝트 스토리지 차이점

Posted by Wonyong Jang on August 20, 2021 · 5 mins read

오늘날 인터넷 트래픽에서 오고 가는 데이터는 비정형 데이터가 주를 이루고 있다. 이력서 양식에 맞추어서 입력하는 정보를 정형 데이터라 한다면, 비정형 데이터는 사진이나 자기 PR 텍스트, 첨부 동영상과 같이 규격 외에 데이터를 말한다.
이러한 대규모의 비정형 데이터는 클라우드 기술과 빅데이터 및 인공지능 분석 기술의 보편화로 그 쓰임새를 극대화 하고 있다.
그로인해 비정형 데이터를 쉽게 저장하고 빠르게 검색할 수 있는 스토리지 아키텍처가 필요하게 되었고, 이로 인해 오브젝트 스토리지(object storage)가 주요 스토리지 중 하나로서 급부상하게 되었다.

AWS에서 DynamoDB를 사용하면서 S3를 사용하면 항상 수정은 할 수 없다.
SDK상에 Update라는 메서드가 있지만 사실상 파일을 덮어쓰고(지우고 다시 넣기) 변경을 처리한다.
우리가 흔히 써왔던 온프로미스 환경과는 조금 다른점이라 찾아보면 객체 스토리지(Object Storage)의 특성이라고 말한다.

우선 객체 스토리지를 알기 위해서는 3가지를 알아야 한다.

  • 블록스토리지(Block Storage)
  • 파일 스토리지(File Storage)
  • 객체스토리지(Object Storage)

스크린샷 2021-08-20 오전 9 23 14

아래 그림은 조금 더 이해하기 쉽게 자동차를 데이터로, 저장 공간을 주차창으로 비유해보면 이해하기 쉽다.

스크린샷 2021-08-20 오전 9 02 54

블록 스토리지는 주차장과 같다. 주차장이 꽉차면 더 이상 주차할 수 없다. 그렇다면 필요한만큼 주차장을 늘려놓아야 한다. 파일 스토리지는 주차타워와 같다. 문제는 내 차를 타기 위해서는 주차타워를 한번 돌아 가야한다.
즉 주차가 많아지면 많아질 수록 폴더가 깊어지고 많아질 수록 차를 찾기가 힘들다.
오브젝트 스토리지는 발렛아저씨들이 알아서 주차를 해준다. 강남이나 판교에서 발렛 맡겨보시면 아시겠지만 이 아저씨들은 정말 공간의 예술을 보여준다.
어떠한 공간도 효율적이고 예술적으로 사용하고 공간의 낭비가 하나도 없도록 주차를 해준다.


파일 스토리지

폴더와 파일로 이루어지는 계층구조를 갖는 스토리지이다. 각 파일은 폴더에 종속되며 폴더 역시 다른 폴더에 종속될 수 있다. 케비넷을 떠올리면 이해하기 쉽다.
각각의 파일철들이 케비넷별로 저장되어 있고 언제든 꺼내어 수정하거나 변경할 수 있다. 파일철을 찾으려면 어느 케비넷에 있는지 알고 있어야 한다. 마찬가지로 파일을 찾으려면 어느 경로에 있는지 알고 있어야 한다.
파일철이 그리 많지 않다면 분류하고 정리하는데 큰 문제가 없지만 파일철들이 계속해서 늘어나면 늘어 날수록 점점 분류하고 정리하는(파일시스템에서의 인덱싱)이 많아지고 찾기가 힘들어 진다.


블록 스토리지

블록스토리지는 정해진 블록안에 데이터를 저장한다. 우리가 SQL에서 테이블을 만들 때 각 컬럼별로 저장할 데이터를 설정해주고 이후의 데이터 삽입도 맨 처음 설정한 값 범위안에서 저장해주는 것과 유사하다.
블록스토리지는 컴퓨터의 C드라이브, D드라이브와 유사하다. 맨 처음 파티션을 나누어주고 그 공간안에서 사용을 할 수 있다. 하지만 파일 스토리지와 다른점은 파일스토리지는 1개의 경로만 갖는데 반하여 블록스토리지는 여러개의 경로를 가질 수 있다.
C드라이브와 D드라이브를 네트워크를 통해서 공유하고 여러 사용자가 해당 드라이브를 참조하는 것과 유사하다. (물론 공유는 할 수 있지만 OS와의 연결은 한번에 1개만 가능하다.)
낮은 IO 레이턴시를 보이기 때문에 RDB와 같은 데이터베이스에 아주 적합하다.


오브젝트 스토리지

블록스토리지와 파일스토리지는 모두 OS단에서 동작하지만 오브젝트 스토리지는 어플리케이션 단에서 동작한다.
쉽게 말하면 S3나 Cloud Storage에서 폴더를 만들거나 다른 버킷으로 파일을 옮긴다고 하여도 실제로 블록을 이동하거나 폴더에 종석된게 아닌 단지 사용자가에게 그렇게 보여주기만 해준다.

즉, 논리적인 스토리지라고 볼 수 있다. 위의 이미지에서 보듯이 오브젝트 스토리지는 물리적 제약이 없기 때문에 원하는 만큼 공간을 확장시킬 수 있다.

클라우드에서 오브젝트 스토리지를 쓰는 이유

역시 확장성과 속도 그리고 저렴한 가격이다. 오브젝트 스토리지는 오로지 2가지 키 값과 데이터만을 저장한다. 발렛을 맡길때도 자동차(데이터)를 세워두고 번호표만 준다. 어디에 주차되어 있는지 알 필요는 없다.
마찬가지로 오브젝트 스토리지는 Restful Protocol(HTTP)를 이용하여 Get 혹은 Post 요청을 하면 파일을 내려준다. 그 이상은 알 필요가 없다.

또한 파일에 대해 가지고 있는 정보가 적기 때문에 파일이 아무리 많아져도 블록 스토리지나 파일스토리지에 비해서 빠르게 작동한다.
마지막으로 공간을 아주 효율적으로 사용할 수 있기 때문에 저렴하다.

물론 단점도 존재한다. 파일의 수정이 불가능하다 파일이 수정될 때 트랜잭션을 통해 일관성을 유지하기가 힘들기 때문에 덮어쓰는 방법을 이용한다.
이렇기 때문에 이미지나 동영상같이 수정이 잘 일어나지 않는 정적인 데이터를 호스팅할 때 좋다.


Reference

https://tech.gluesys.com/blog/2021/04/20/storage_9_intro.html
https://medium.com/harrythegreat/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C%EC%83%81-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-object-storage-%EB%9E%80-9d9c2da57649