Хочу поделиться впечатлениями от прочтения и порекомендовать книгу “Высоконагруженные приложения. Программирование масштабирование поддержка” от Мартина Клеппмана. Про книгу стоит понимать несколько вещей. Во-первых, это обзорная книга – она открывает для читателя какую-то тему, к примеру, проблему которая есть и инструменты для ее решения, далее автор дает список материалов и направлений, в которые по этой теме можно углубиться. Во-вторых, книга действительно популярна и известна в среде разработки, о том, что она претендует на то, чтобы стать классикой.
О чем эта книга?
Примерно на 650 страницах автору этой книги доктору Мартину Клеппману (кстати, у него неплохой блог) удалось собрать и очень понятно изложить основные моменты, касающиеся разработки, масштабирования и поддержки систем, работающих под большой нагрузкой и с большим количеством данных.
Вот список тем, которые рассматриваются в книге
- Базы данных и их типы (реляционные, документные, ключ-значение, графовые)
- Способы хранения индексов в БД (LSM, SS)
- Отличия OLTP и OLAP баз данных
- Ведущие и ведомые узлы
- Репликация и шардирование
- CAP – теорема и следствия из нее
- Консенсус в распределенных системах
- Типы согласованности данных
- Обработка отказов
- Пакетная и потоковая обработка данных
Отдельно хочу отметить, что для каждой из глав в книге дается обширная библиография – материалы, в которых темы раскрыты более подробно и с разных сторон, а также приводятся примеры анализа производительности тех или иных решений.
Для кого эта книга?
Думаю, что back-end разработчикам, а также архитекторам распределенных систем (а это и случаи, когда на клиенте есть своя база данных, что можно встретить во многих мобильных приложениях) материалы и темы этой книги должны быть известны. Им однозначно прочесть её стоит. Рядовому программисту книга будет интересна как минимум для расширения кругозора и понимания того, что происходит и как устроены крупные системы.
Также, думаю что эта книга должны быть прочитана и стоять на полке у технического директора/руководителя разработки.
One more thing…
В догонку к книге рекомендую послушать 208 выпуск подкаста Podlodka про распределенные системы, а также 101 выпуск про базы данных, они, на мой взгляд, хорошо дополняют материал книги.