К основному содержимому
#DistributedSystems

Три года назад я за день прочитал книгу "Распределенные системы. Паттерны проектирования" за автороством Брендана Бёрнса.

#DistributedSystems #SoftwareArchitecture #Architecture #Software #SystemDesign

Автор является одним из тех, кто стоял у истоков kubernetes, поэтому его опыт в проектировании распредленных систем является довольно актуальным:) Книга мне показалось хорошей, но одновременно слишком простой. Но за счет этого она отлично подойдет новичкам вступающим на запутанную дорожку distributed systems:) Книга состоит из 3х частей:

  • одноузловые паттерны проектирования
  • паттерны проектирования обсуживающих систем
  • паттерны проектирования систем пакетных вычислений Все паттерны даются в контексте контейнеров и их оркестрации, Книга содержит практические примеры, для реализации которых используется инсталляция kubernetes'а и его примитвы, такие как pods, deployments, services, etc. Ближе к концу книги вы попробуете использовать helm для разворачивания etcd, kafka и иже с ним.

В первой части рассматриются паттерны:

  • sidecar: для https, динамической конфигурации и метрик
  • ambassador: для использования шардированного сервиса и для сплита трафика для тестирования разных версий
  • adapters: мониторинг, журналирование

Во второй части рассматриваются:

  • репликация: для stateless сервсиов, sticky sessions, кеширование, ...
  • шардирование: консистеный хеш, шардирование реплицированных сервисов, ...
  • scatter-gather: распределенный поиск по документам
  • FaaS и events: преимущества и недостатки FaaS, реализация декораторов на функциях
  • выбор владельца: локи для распределенных систем

В третьей части рассматриваются паттерны проектирования систем пакетных вычислений:

  • системы на основе очередей задач
  • событийно-ориентированная пакетная обработка
  • координированная пакетная обработка

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

#DistributedSystems #SoftwareArchitecture #Architecture #Software #SystemDesign