January 20, 2022

Understanding Distributed Systems

Книга посвящена распределённым системам довольно условно. Я бы охарактеризовал содержание как "минимум бэкэндера". Главы слабо связаны и вместе какой-то теоретический фундамент по распределённым системам не образуют. Зато образуют очень цельный практический каркас, с пониманием которого шанс наступить на грабли в повседневной работе значительно снижается. Структура примерно следующая.

Первая часть посвящена коммуникации. Рассматривается конкретно TCP/IP, встроенные в него механизмы отказоустойчивости и зашиты от перегрузок. Бегло обсуждается криптография и аутентификация.

Вторая часть называется "Координация". Тут рассматриваются разные варианты введения шкалы времени. Выбор лидера и ограничения такого подхода к координации. Вводятся модели консистентности и обсуждаются самые простые протоколы которые позволяют их реализовать.

Третья глава посвящена масштабированию, методам партицирования и репликации. Сюда же попадают разные варианты уровневых архитектур, кэши и CQRS/ES. По ходу рассказываются и сетевые нюансы этой темы, разные варианты балансировки нагрузки и проксирования.

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

Пятая глава уже точно вываливается из топика распределённых систем и посвящена эксплуатация. Очевидный набор из CI/CD, мониторинга и трассировки.

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

Tags: books programming