CAP Theorem을 보며

고확장성(High Scalable) 분산 데이터베이스 시스템과 관련하여 꼭 등장하는 얘기가 Brewer's CAP Theorem이다. CAP이란 분산 시스템이 갖추면 좋을 세 가지 특성 즉 Consistency, Availability, Partition Tolerance를 말하며 Brewer's CAP Theorem이란 이 세 가지 특성을 모두 갖춘 시스템은 불가능하며 최대 두 가지 특성만이 가능하다는 얘기다.

요즘 고확장성을 추구하는 분산 시스템이 계속 등장하고 있는데 Partition Tolerance는 기본적으로 만족하는 가운데 Availability에 촛점을 두어 Consistency는 완화된 형태로 추구하는 시스템이 많다. 이 때 등장하는 개념이 Eventual Consistency로 시간이 지남에 따라 결국 데이터가 Consistency를 만족하게 된다는 거다. 그래서 이런 시스템들은 전통적인 RDBMS의 ACID가 아닌 BASE(Basically Available, Soft state, Eventually Consistent) 특성을 추구한다.

데이터베이스 시스템의 목적이 데이터를 ACID 특성에 따라 관리하는 거로 알고 있었는데 꽤나 쇼킹한 얘기였다. 이건 시스템의 가용성(Availability)를 위해 일시적인 데이터 Inconsistency를 감수한다는 거다. 그런데 여기서 중요한 거는 데이터에 따라 그래도 되는 데이터가 있다는 거고 그런 데이터 종류가 아주 많다는 거다. 유연하며 실용적인 생각이란 건 이런 게 아닐까.

Availability 나 Consistency는 알겠는데 Partition Tolerance는 여전히 잘 이해가 안 되는 개념이었다. 이걸 완화된 형태로 추구할 수도 있지 않을까 어렴풋이 생각도 해봤는데 뭔지 잘 모르겠으니 손가락만 빨 노릇이었다. Terrastore라는 시스템이 이런 생각을 실천에 옮기는 듯 하다. "Provides advanced scalability and elasticity features without sacrificing consistency"라니 뭔가 했는데 Partition Tolerance를 다른 방법으로 해결해서 Consistency 특성을 추구할 수 있었다는 설명이 있다. 얼핏 이해하기론 여러 데이터센터에 걸쳐 시스템을 구축할 규모가 아니라면 Partition Tolerance에 큰 비중을 두지 않아도 되지 않나는 생각이 들었다.

CAP Theorem 자체는 별로 재미있지 않은 건데 이에 대처하는 시도들은 대담하면서도 실용이며 재미있는 것들이 많다. 이 분야는 앞으로도 계속 재미있는 시도들이 많을 것 같다.

2010-01-05 12:01 | Permlink | Comments
blog comments powered by Disqus

About

Laser Keyboard

I'm Jin Kim. Live in Seoul, Korea. Software Developer. Java, Perl, Scala, Common Lisp. Mainly programming in web program and its backend data store. Interested in data processing and distributed computing.

Archive

RSS