Высоко-нагруженные приложения [2025] Мартин Клеппман (Designing Data-Intensive Applications).

Отличная книга с кабанчиком

Почему-то многие считают эту книгу сложной и тягомотной, но мне она зашла. По ощущениям, это такой же базовый computer science, как Таненбаум и другие книги, которые читают в универе.

cache latencies

Через всю книгу красной нитью проходит простая идея: мир неидеален, ошибки могут возникать везде. Чем больше система, тем больше в ней частей, которые могут сломаться. Хороший инженер должен уметь строить надёжные системы из ненадёжных компонентов и понимать, на какие компромиссы приходится идти при разработке.

Также важно понимать, какие гарантии даёт система: какую надёжность обеспечивает, как масштабируется и под какие сценарии использования проектируется.

После прочтения книги я совсем не завидую разработчикам распределённых систем. Даже в рамках одного процесса хватает проблем с потоками, синхронизацией и отказоустойчивостью. Сложность вырастает на порядок, когда узлов много, они разбросаны по разным ЦОДам и между ними ненадёжная сеть.

В книге затронуты базовые темы распределённых систем: репликация, секционирование, транзакции, проблема часов, согласованность, консенсус, пакетная и потоковая обработка данных.

Пакетная и потоковая обработка встречаются повсеместно. По сути, любое современное приложение так или иначе занимается обработкой данных. Среди остального я встречал на практике транзакции и проблема часов. Про консенсус книга рассказывает скорее обзорно. Чтобы глубоко разобраться в теме, нужно читать дополнительную литературу. Разработку алгоритмов достижения согласия в условиях, где всё может пойти не так, среднестатистический программист не вывезет.

Для расширения кругозора и прокачки инженерной базы книгу стоит прочитать.

Метки:

Разделы:

Дата изменения: