|
해당 리뷰는 인사이트의 지원으로 도서를 제공받은 다음 작성했습니다. 분산시스템을 구현하는 것은 굉장히 어려운 일이다. 실제로 수천대의 서버로, 대규모 서비스를 구축하거나, 마이크로서비스를 구축하더라도. 실제로 분산시스템이 어떤 원리로 구성되어 있는지는 잘 알지 못하고, 이 그렇게 구현되어 있는 어플리케이션을 이용하는 경우가 많다. 간단하게 단일 DBMS가 안정성을 높이기 위해서 어떤 작업을 하고 있을까? 데이터베이스의 데이터복제는 어떻게 이뤄질까? 여러대의 서버중에서 의사결정을 해야 하는 리더 서버는 어떻게 중복되지 않게 선출할 수 있을까? 이런 문제들은 처음부터 복잡해 보이는 문제들도 있고, 간단해 보이지만, 여러 대의 서버가 되어야 문제가 보이는 경우도 있다. 여러대의 서버에서 동기화를 할려면 어떻게 해야 할지? 팍소스나 래프트 같은 합의 알고리즘이 좋다고 하는데, 모든 문제에서 해결이 되는 걸지? 이런 정보들은 인터넷에서 찾을 수는 있지만, 해당 용어가 무엇인지 모르거나, 또는 여러군데에 잘게 잘게 나눠져 있어서 이걸 모아서 보기는 쉽지 않았다. 사실 분산 시스템의 내용에 대해서 설명하고 있는 쉽게 접근할 수 있는 자료가 거의 없었다고 해야할까? 국내에 나온 책이라고 해도 데이터 중심 애플리케이션 설계(위키북스), 데이터베이스 인터널스(에이콘), 스트리밍 시스템(에이콘), 가상 면접 사례로 배우는 대규모 시스템 설계 기초(인사이트) 등으로 많지 않고, 딱 이 분산시스템에만 맞춰져 있는 책은 거의 없다고 할 수 있다. 그래서 30가지 패턴으로 배우는 분산 시스템 설계와 구현 기법을 보고서는 상당히 놀라워 하면서 내용을 살펴보게 되었다. 딱 이 책을 볼때 쯤에, 분산 데이터베이스에서 데이터 동기화가 어떻게 될지에 대한 관심이 있었는데, 그러기 위해서는 시간에 대한 순서가 핵심이다. 그런데 딱, 램포트 시계 부터, 하이브리드 시계 까지 나와있는 것이다. 분산 데이터베이스는 아주 정확한 시간을 측정하기 어렵기 때문에, 아주 정확한 시간을 보장하기 위해 특별한 하드웨어를 이용한거나(구글), 아니면 벡터 클락을 이용해서 시간 정보의 순서를 정하도록 하는데, 이런 내용들에 대해서 딱 이 책에 있는 것이었다. 가십 전파 같은 경우도 Redis나 많은 곳에서 쓰고 있는데, 설명을 찾기가 쉽지는 않지만, 책에 잘 정리가 되어있다.(가십 전파도 종류가 여러가지라는 것), 30가지 패턴이라고 해서 딱 이런게 있다라고만 정리하는 것이 아니라 상당히 자세한 편이다. 분산시스템에 대해서 관심이 있다면 자세히 읽어보기를 강력히 추천한다. 인사이트의 지원도 받았지만, 처음에 내돈주고 먼저 샀던 책이라... 더. 추천합니다. |