Overview of Openstack Swift

이 문서는 Openstack의 Object Storage인 swift에 대해 설명한 문서입니다

필자는 고작 학부생 3학년입니다. 잘못된 내용이 있을 수 있으니 댓글로 피드백 부탁드립니다.

안녕하세요. Openstack의 Object Storage인 Swift의 모든 것을 알아보는 첫 단계로 swift란 무엇인가? 에 대해 먼저 알아보도록 하겠습니다.

먼저! Object Storage가 무엇인지 알고 가야겠죠? 사실 Storage에는 여러가지 종류가 있습니다. 클라우드 스토리지라고 한다면 아마 이 두 가지가 대표적이지 않을까 싶습니다. 바로 Object Storage와 Block Storage이죠. 이 두가지에 대해서만 간단히 알고 넘어가도록 하겠습니다.

참고

Object Storage

스토리지 아키텍쳐 중 하나로 데이터를 object로 관리하는 스토리지입니다. 특징으로는 일반적인 데이터 관리 방식인 계층적으로 데이터를 관리하는 것이 아니라, 수평적으로 데이터(object)를 관리하게 됩니다. 쉽게 설명해서 하나의 폴더를 만들고 그 안에 파일을 계속해서 저장하는 방식입니다. 그리고 각 object는 metadata 라는 추가적인 정보도 가질 수 있습니다.

Block Storage

Block Storage는 파일을 Block단위로 쪼개서 저장하는 구조를 가지고 있습니다. 그리고 파일은 metadata라는 것을 가질 수가 없습니다. 주로 SAN(Storage Area Network)에서 많이 쓰인다고 합니다.


 

지금부터 알아볼 Swift는 Openstack에서 개발한 Object Storage 입니다. 또한 Swift는 Eventual Consistency System이고 뛰어난 확장성과 데이터의 고가용성을 보장해주는 스토리지입니다.

용어

먼저 swift에서 사용하는 용어들에 대해서 알아보도록 하겠습니다.

  • account
    • swift내에서 사용하는 계정입니다. 계정은 인증시스템( swauth, keystone)을 통해서 발급할 수 있습니다.
  • container
    • 일종의 폴더와 같은 개념입니다. Amazon S3를 써보셨다면 bucket과 동일한 개념입니다. object들은 container에 저장됩니다.
  • object
    • 문서, 파일, 동영상과 같은 데이터를 의미합니다. custom metadata와 함께 저장할 수 있습니다.

구성요소

먼저 swift를 구성하는 요소에 대해 알아보도록 하겠습니다. swift는 크게 4가지 종류의 서버와 consistency를 유지하기 위한 데몬들로 구성되어 있습니다.

  • proxy-server
    •  swift를 이용할 수 있는 api를 제공하고, backend(account, container, object) 서버들로 요청을 중계해주는 서버입니다.
  • account-server
    • swift의 계정(account)정보를 저장하는 서버입니다. 계정 별 container 갯수, 스토리지 사용량에 대한 정보를 제공합니다.
  • container-server
    • 계정 별 container 정보를 저장하는 서버입니다.
  • object-server
    • 실제 object가 저장되는 서버입니다. 각 object 는 기본적으로 3개의 replication을 만듭니다.
  • Ring
    • swift에서 가장 중요한 요소입니다. 일반적으로 많이 알려져있는 Consistency hash ring의  swift 버전이며, A/C/O (Account / Container / Object )가 물리적으로 어느 서버에 저장될 지 결정해주는 역할을 합니다.
  • Daemon
    • swift가  eventual consistency system 이기 때문에, 항상 consistency를 유지하기 위해서 여러가지 형태의 daemon이 반드시 실행되어야합니다.

각 요소들을 도식화해보면 다음과 같은 그림이 나옵니다. 기본적으로 swift는 A/C/O 의 데이터에 대해 3 replication 정책을 가지고 있으므로, A/C/O를 한 서버로 구성하고 각 서버를 3대로 구성하는 것으로 하였습니다.

swift-architecture-overview

개발 언어

Openstack의 대부분의 프로젝트가 파이썬으로 만들어져 있듯이 swift 또한 python으로 만들어져있습니다. 웹 서비스를 하기 때문에 당연히 wsgi 를 이용하고 있고 자체적인 python wsgi 웹서버도 가지고 있습니다.

URI 구조

swift 는 다음과 같은 URI구조를 가지고 있습니다.

http://host/v1/account/container/object

  • v1 : api 버전
  • account : swift내에서 쓰이는 account name
  • container : 컨테이너명
  • object : object 명

지금까지 OpenStack Swift에 대해 간단히 알아보았습니다. 다음 포스트부터는 좀 더 자세하게 알아보도록 하겠습니다.

그럼 2만!


2 thoughts on “Overview of Openstack Swift”

Leave a Reply

Your email address will not be published. Required fields are marked *