Книга

«Распределённые системы», Брендан Бёрнс

КнигаРаспределённые системы. Паттерны и парадигмы для масштабируемых и надёжных систем на основе KubernetesБрендан Бёрнс

Обложка книги «Распределённые системы» Брендана Бёрнса

Тяжесть — это хорошо. Тяжесть — это надёжно. (с) Борис Бритва

В последнее время меня увлекают книги по надёжности систем. Эта тема очень обширная, и её интересно изучать, потому что знания по надёжности постоянно пригождаются в работе. Поэтому я с большим удовольствием прочитал новую, недавно вышедшую книгу Брендана Бёрнса — «Распределённые системы». Мне было интересно узнать, какие такие паттерны распределённых систем на базе Kubernetes автор предлагает использовать.

О чём книга

Книга посвящена паттернам, которые можно применять при использовании Kubernetes для создания масштабируемых и удобных в эксплуатации распределённых систем. Автор адаптирует стандартные паттерны проектирования для применения в Кубере.

В книге раскрываются следующие темы:

  • Паттерны для одного узла (пода) системы.
  • Паттерны для обслуживающих систем.
  • Паттерны систем пакетных вычислений.

3 идеи из книги

  1. Один из самых простых и полезных паттернов — Sidecar. Суть его в том, что мы можем «подцепить» к поду ещё один контейнер, содержащий любую нужную нам функциональность. Например, этот контейнер может парсить логи другого контейнера и отправлять их в систему логирования. Некоторые другие паттерны в книге основаны на Sidecar.

  2. При проектировании контейнеров важно понимать, возможна ли ситуация множественной обработки. В частности, в системах пакетной обработки может возникнуть ситуация, когда один и тот же чанк данных возьмут в обработку несколько рабочих машин. Это нужно учитывать при проектировании системы.

  3. Добавление кэша в систему часто приводит к тому, что система оказывается намертво зависима от него. Часто это выглядит так: добавили кэш для ускорения, постепенно нагрузка растёт — и в какой-то момент система просто ляжет в случае отказа кэша. Я как-то в работе «развязывал» такой узелок и могу сказать, что это крайне нетривиальная задача.

Мои впечатления

Книга оказалась достаточно интересной. Местами я ехидно хихикал с того, как автор переизобретает названия паттернов банды четырёх и некоторые другие термины (например, retry storm он окрестил «грохочущим стадом»). Тем не менее, изложенные в книге паттерны и способы их применения полезны и применимы на практике. Отдельный плюс — спеки, которые можно скопировать себе и поиграться при желании.

В книге есть и некоторые спорные моменты. Например, автор в одной главе рассказывает, как дорого стоят FaaS-вычисления при частом вызове, а в другой предлагает использовать их для сервиса аутентификации с немаленькой такой нагрузкой.

Но в целом книга интересная и хорошо написана. Рекомендую к прочтению сильным инженерам и тем, кто хочет такими стать. Тимлидам тоже не повредит. :)