최근 국내에서도 대용량 데이터를 위한 비관계형 데이터베이스를 일컫는 NoSQL 또는 빅 데이터 솔루션이 많이 도입되고 있다. 국내의 대용량 처리를 위한 솔루션으로 하둡을 많이 사용하는 경향이 있지만, Map/Reduce에 기반을 둔 비실시간의 데이터 처리보다는 하둡 만큼의 데이터 처리 능력과 실시간 처리를 할 수 있는 솔루션이 바로 카산드라다. 그리고 하둡이나 카산드라와 같은 NoSQL이나 빅 데이터 솔루션 대부분은 엄청난 양의 데이터 처리에 분산 기술을 이용해 용량을 확장해 나가는 특징이 있다.
카산드라가 다른 NoSQL 또는 빅 데이터 솔루션과 비교해서 가장 큰 장점으로 말할 수 있는 것이 바로 P2P 기반으로 클러스터를 구성한다는 것이다. 이 구조는 마스터-슬레이브 구조보다 월등한 네트워크 파티션 허용을 통해서 매우 높은 가용성을 확보할 수 있다. 더불어 카산드라에서 기본적으로 제공하는 도구를 사용해서 관리할 수 있고, 자바에서 기본으로 지원하는 JMX를 이용해서 모니터링할 수 있는 기능도 제공하고 있다.
역자가 작업하는 동안에 카산드라는 여러 번의 버전 릴리스를 해서, 새로운 버전의 코드를 확인하는 데 애를 먹었을 정도로 활발하게 프로젝트가 진행 중인 것이 또 다른 강점이다. 그리고 역자가 있는 미국의 샌프란시스코에서는 카산드라만의 콘퍼런스와 유저 그룹미팅이 종종 열리고 있어 인기를 실감할 수 있다. 또한, 카산드라의 저변을 확대하고 수익을 창출하기 위한 회사가 존재한다는 것이 카산드라의 인기를 방증한다고 볼 수 있겠다.
카산드라는 페이스북에서 약 1,000대 이상의 서버로 클러스터가 구성된 최대의 레퍼런스가 있다. 1,000대 이상의 서버로 구성할 수 있는 클러스터 시스템이라면 독자가 고려하고 있는 용량, 로드가 어느 정도인지는 모르겠지만, 고려하는 용량, 로드는 카산드라가 충분히 처리할 수 있다고 확신한다. 또한, 기존 RDBMS에서 카산드라로 마이그레이션한 서비스들도 인터넷에서 쉽게 찾아볼 수 있다. 마이그레이션을 진행했던 엔지니어들의 인터뷰에서도 굉장히 만족스러운 결과였다고 찬사를 보내는 영상을 쉽게 찾아볼 수 있다.
역자도 카산드라를 사용해서 프로젝트를 진행했었고, 진행할 예정인 프로젝트에도 카산드라를 사용할 예정이다. 카산드라를 이용해서 런타임에 스키마를 바꿔가면서 시스템을 업그레이드하는 것은 여태까지 경험해 보진 못한 "다이나믹한 시스템이란 바로 이런 것이다"라는 것을 느끼기에 충분할 것이다.
마지막으로 이런 멋진 기회를 주신 한빛미디어의 한동훈 님과 항상 함께하는 가족에게 감사드리고, ZeroDesktop에서 고객에게 가치를 주기 위해 고생하는 동료에게도 감사드린다.
옮긴이_ 송무찬
최근 많은 세미나와 매체를 통해서 NoSQL이 전파되고, 대형 프로젝트에 적용되어 놀라운(?) 결과물을 보여주는 기사를 쉽게 접할 수 있다. 개인마다 이해 정도는 다를 수 있지만, 새로운 기술 영역을 만들어 가고 있다는 점을 부정할 수는 없다. 하지만, NoSQL이 기존의 RDBMS를 대체할 것이라는 일부 기사는 동의하기 어렵고, 양 기술이 서로의 장단점을 보완하면서 성장할 것이라는 것이 개인적인 판단이다. 그렇기 때문에 기존 RDBMS와 새로운 NoSQL 제품(Cassandra, CouchDB, MongoDB 등)에 대해 지속적인 학습이 필요하고, 이를 바탕으로 각 제품이 지닌 장점을 조합해 대용량 데이터를 처리하면서 안정적인 성능 performance 과 확장성 scalability 을 가진 서비스
를 개발할 수 있어야 한다.
이러한 요구는 개발자 측면에서 서비스(or 제품)를 개발하기 위한 학습 및 고려해야 할 내용이 이전보다 더욱 많아졌고, 업무가 더욱 힘들어 졌다는 느낌을 받게 한다. 하지만, 이 부분에 대해 걱정하지 말아라. 이 책을 읽고 나면 개발자들이 RDBMS을 통해 작업하면서 느꼈던 답답한 부분이 해결될 것이다. NoSQL은 매우 직관적이고, 시스템적인 확장 및 분산, 그리고 개발하기 편한 시스템이라는 것을 느끼게 될 것이다.
NoSQL은 저장 방식에 따라 다양하게 분류된다. 저장 방식을 나열해보면, 키-값 저장, 빅테이블 저장, 문서 저장, 그래프 저장 방식 등이 있다. 카산드라는 키-값 저장에 해당된다. 개인적으로 2009년 영국에서 근무할 때 카산드라를 접했을 때, 2000년 초반 금융 인프라시스템 시스템 개발 시 경험했던 HDB와 개념이 유사하다고 생각했다. 특히, 테이블 간의 조인 Join을 지원하지 않는 점, 데이터 검색과 확장성이 특히 뛰어난 부분이 더욱 유사하다고 생각했다.
근래 대용량 데이터 처리를 고려하는 프로젝트에서는 반드시 NoSQL을 고려하게 된다. 하지만 국내에는 아직까지 국내 개발자가 저술한 전문서를 찾기가 어려워 원서를 찾게 된다. 많은 개발자가 프로젝트의 시스템 아키텍처를 고려하면서 NoSQL 개념과 카산드라에 대한 한글 서적을 찾아보지만, 현재까지는 매우 짧은 글만이 웹에서 발견되고, 책으로는 아직 없었다. 나 역시 이러한 부분 때문에 많은 고생을 했기에 개발자들이 학습하는데 도움을 주고자 이번 번역 작업에 참여했다(개인적으로, 몇 번의 책 번역 작업 중, 이번이 가장 힘들었다. NoSQL이라는 개념이 새로웠고, 번역 작업 중 지속적인 버전업(0.6->0.7->0.8)에 따른 원문과 코드의 반복 수정이 힘들었다).
위에서 짧게 언급했듯이 처음 접하는 몇몇 분들은 개념이 너무 매력적이지만, 과연 기존 RDBMS를 넘어 대신 할 수 있을까? 하는 의구심이 있을 수 있다. 하지만, 지금 그러한 우려는 할 필요가 없다. NoSQL의 사용 용도가 RDBMS와는 확연히 다르기 때문이다.
지막으로 같이 작업했던 무찬이, 영국/미국에서 같이 일을 동료(랜스, 윤정, 리키, 마이클, 아담, 지영, 캐시), 그리고 한국의 김현석 실장님, 이상오 팀장님, 홍영, 호준, 도훈, 현도, 진성 팀원 분들에게 감사의 마음을 전하고 싶습니다. 특히, 많은 조언을 해주신 태윤정님에게 다시 한번 감사의 마음을 전합니다.
옮긴이_ 최원우
---옮긴이 서문 중에서