Хочу поделиться впечатлениями от прочтения и порекомендовать книгу “Высоконагруженные приложения. Программирование масштабирование поддержка” от Мартина Клеппмана. Про книгу стоит понимать несколько вещей. Во-первых, это обзорная книга – она открывает для читателя какую-то тему, к примеру, проблему которая есть и инструменты для ее решения, далее автор дает список материалов и направлений, в которые по этой теме можно углубиться. Во-вторых, книга действительно популярна и известна в среде разработки, о том, что она претендует на то, чтобы стать классикой.

О чем эта книга?

Примерно на 650 страницах автору этой книги доктору Мартину Клеппману (кстати, у него неплохой блог) удалось собрать и очень понятно изложить основные моменты, касающиеся разработки, масштабирования и поддержки систем, работающих под большой нагрузкой и с большим количеством данных.

Вот список тем, которые рассматриваются в книге

  • Базы данных и их типы (реляционные, документные, ключ-значение, графовые)
  • Способы хранения индексов в БД (LSM, SS)
  • Отличия OLTP и OLAP баз данных
  • Ведущие и ведомые узлы
  • Репликация и шардирование
  • CAP – теорема и следствия из нее
  • Консенсус в распределенных системах
  • Типы согласованности данных
  • Обработка отказов
  • Пакетная и потоковая обработка данных

Отдельно хочу отметить, что для каждой из глав в книге дается обширная библиография – материалы, в которых темы раскрыты более подробно и с разных сторон, а также приводятся примеры анализа производительности тех или иных решений.

Для кого эта книга?

Думаю, что back-end разработчикам, а также архитекторам распределенных систем (а это и случаи, когда на клиенте есть своя база данных, что можно встретить во многих мобильных приложениях) материалы и темы этой книги должны быть известны. Им однозначно прочесть её стоит. Рядовому программисту книга будет интересна как минимум для расширения кругозора и понимания того, что происходит и как устроены крупные системы.
Также, думаю что эта книга должны быть прочитана и стоять на полке у технического директора/руководителя разработки.

One more thing…

В догонку к книге рекомендую послушать 208 выпуск подкаста Podlodka про распределенные системы, а также 101 выпуск про базы данных, они, на мой взгляд, хорошо дополняют материал книги.