화요일, 10월 28, 2014

[독서광] 주키퍼: 고가용성 서버를 위한 분산 프로세스 코디네이션

오늘은 간만에 기술서적을 하나 소개하려 한다. 오늘의 주제는 아마 고가용성 서버 구축을 해보신 분이라면 한번쯤은 들어보셨을 주키퍼다. 주키퍼가 무엇인지 모르시는 분을 위해 Apache ZooKeeper™ 홈페이지에서 가져온 정의를 살펴보자.

주키퍼는 구성 정보와 이름을 유지하며, 분산된 동기화를 제공하며, 그룹 서비스를 제공하기 위한 중앙 집중적인 서비스다."

오라일리 주키퍼 책은 바로 이런 아파치 주키퍼의 특성을 이론적으로 나열하는 대신 실제 업무에 적용 가능한 코드 형태로 제시한다는 점에서 개발자에게 직접적인 도움을 준다. 분산 환경에서 코디네이션이 가장 위력을 발휘하는 마스터-워커 사례(실제 HBase 아키텍처를 단순화한 모델을 사용한다)를 예로 들어 일단 배포판에 들어있는 기본 주키퍼 클라이언트를 사용해 프로그래밍 언어를 사용한 코드 작성 없이 실험을 해본다. 다음으로 가장 기본적인 자바 API를 사용해 실제 코드 형태로 구현하는 방법을 제시한다. 그리고 나서 C API와 고수준 프레임워크인 큐레이터를 사용해 동일한 코드를 작성하는 방법을 제시한다. 따라서 책을 순서대로 읽다보면 자연스럽게 분산 환경에서 가용성이 높은 애플리케이션 작성에 필요한 기초 지식을 쌓을 수 있게 된다.

하지만 주키퍼 API를 사용해서 애플리케이션을 작성했다고 하더라도 저절로 가용성이 보장되지는 않는다(많은 사람들이 주키퍼를 설치하고 애플리케이션만 만들어 운영하면 모든 문제가 사라질 것으로 희망하는데, 공짜 점심은 없다!). 주키퍼 서비스 자체가 이를 담보해야 하므로, 책에서는 주키퍼 자체의 가용성을 높이기 위해 앙상블을 구성하는 방법부터 장애가 생겼을 때 고려해야하는 주키퍼 내부의 동작 방식과 이와 관련된 애플리케이션의 설계 방법, 그리고 주키퍼 운영에 필요한 각종 설정 방법도 빠짐없이 설명한다.

책을 구매하기 앞서 내용 파악이 필요하거나 책을 읽는 도중 완전한 코드를 참조할 필요성이 있을 경우 zookeeper-book-example을 방문해 코드를 살펴보면 좋겠다.

전반적인 책 내용이 프로그래머를 충분히 배려했다고 소개했는데, 번역 상태를 점검하겠다. 무척 아쉽게도, 오탈자가 아주 많고(이 부분에 대해서는 출판사에 이야기를 해놓은 상황이며 조만간 정오표에 신고 내용이 올라갈 것이다), 중간 중간 무슨 이야기인지 몰라 제대로 이해하기 위해 신경써야 하는 부분이 존재한다. T_T

결론: 번역 품질만 감수할 수 있다면, 분산 환경에서 오늘도 열심히 개발에 전념하는 개발자들에게 추천한다. 주키퍼 튜토리얼만 읽었다면 이 책을 읽으면서 숨겨진 여러 가지 비밀을 찾아낼 수 있을 것이다.

EOB

댓글 없음:

댓글 쓰기