Cloud Storage에 관하여
발췌 : http://jmlab.tistory.com/16
Cloud Storage ?
클라우드 컴퓨팅에 관해 연구개발 일을 해오 보면서 2010년 중반까지 내 경험상 클라우드 스토리지라는 이름은 하둡(Hadooop)에 포함되어 있는 Hadoop Distributed File System(HDFS) 같은 분산 파일 시스템을 의미 했었다. 각종 Distributed File System(DFS) 들은 여러 서버 각각의 File System을 묶어서 클라이언트에게는 단일한 하나의 파일 시스템으로 보이게 하는 일종의 Virtual File System으로 스토리지를 추가 할때마다, 스토리지의 용량만 커지는 것 뿐만아니라 성능(Total Throughput)도 향상되는 Scale-out과 파일 분산 자장(Replication) 같은 기능을 통해 스토리지 서버가 몇대 죽더라도 Fail-over가 되는 고가용성과 고 안정성을 가진 스토리지였다. 이런 DFS들은 서로 거의 비슷한(거의 똑같은) 아키텍처를 가진다. 대부분이 클러스터를 구성하는 Storage Node들의 정보와 Storage Node에 저장되는 실재 파일들과의 맵핑 정보들 그리고 분산 저장을 한다면 그를 위해 필요한 정보들을 Meta data로 관리하는 Metadata Management Server(MDS)로 구성되어 있다.
- Storage Node 는 물리적인 장비기준으로는 DAS나 SAN같은 Stroage 장비 + Storage Server 이다. 만약 DFS Local Disk만 쓰면 Storage Node = Storage Server 가 된다.
- MDS 도 실재로는 Server + DB 형태로 구축 된다. 따라서 서버 하나에 Metadata Management 와 DB를 같이 구축할 수도 있고 분리 할 수도 있다.
2010년 중반 이후부터 물론 이전에도 있었지만, 개인 파일 저장, 백업, 싱크, 멀티미디어 스트리밍 서비스 등등의 Personal Cloud Service 가 부각되면서 개인의 파일들을 저장 하기위한 스토리지에 대한 관심이 업계에 화두가 되었고 이미 성공한 아마존의 AWS에서 제공하는 Object Storage이 Simple Storage Service(S3) 와 국내외에서 S3와 동일한 기능 제공하려고 하는 Open Stack의 Swift 라는 것이 부각되면서 Object Storage = Cloud Storage 라고 된 것 같다.
사실 Object Storage와 DFS간의 특징을 살펴 보면 아래와 같이 Object Storage나 DFS의 솔루션들 각각은 나름의 방법으로 Scale-out 확장성과 Fault Tolerance 방법들을 가지고 있다. 하지만 둘의 극명한 차이는 사용에서 나타나는데 Object Sotrage에서는 Restful API를 제공하여 HTTP 프로토콜로 통신하고 DFS는 POSIX interface를 제공하여 기존과 파일시스템들을 사용하듯이 마운트하여 사용할 수 있게 한다. 추가적으로 Object Storage는 File에 대한 여러 정보를 보관할 수있는 Object Metadata를 따로 관리하는 것이 포함된다.
DFS vs Object Storage
사실 한때는 Object Storage가 그냥 DFS중 하나인데 이름을 그렇게 붙인 것이겠지 라고 생각하기도 했었다. 하지만 여러 경험을 통해 둘사이의 차이점을 구분해 보면 아래 표와 같다.
Personal Cloud Service 를 제공하는 것의 기본은 개인사용자에게 일정 공간의 Cloud Storage를 제공하고 이를 사용자가 어디서나 접근해서 사용할 수 있게 하는 서비스라고 생각한다. 이를 기준으로 생각해보면 Object Storage가 Restful API를 사용하여 Web을 통해 파일을 업로드 하고 다운로드 하여 쉽게 사용될 수 있기 때문에 Cloud Storage = Object Storage 라고 생각할 수도 있겠다. 하지만 Object Storage에 저장되어 있는 데이터를 데이터 센터 내에서 사용하게 될때에도 Restful API를 사용하여 호출해야하므로 기존에 마운트 하여 폴더처럼(POSIX interface) 사용하는 시스템을 그대로 사용할 수 없고, 내부 처리를 할때에도 바로 스토리지에 있는 것을 변경할 수 없기 때문에 파일을 수정하려면 파일을 전송(GET)한 후 변경하여 다시 교체(PUT)해야하므로 DFS와 같이 POSIX interface를 쓰는 것에 비해 성능 낮을 것이다. 반대로 DFS를 사용자가 직접 접근하게 하는 방법을 제공하면 TCP/IP 통신을 제공하는 것으로 자원낭비가 심하여 대규모의 사용자를 대상으로 제공하기는 힘들 것이다.
Ideal Cloud Storage
외부에 제공할 때에는 Object Storage와 같은 방식으로 제공되고 내부에서 사용할때는 DFS 같이 사용할 수 있는 스토리지가 진정한 Cloud Storage 라고 생각한다.
앞으로 Object Storage의 장점과 DFS의 장점이 조합된 방법을 연구해봐야겠다…