Описание
Вес архива: 12 МБ
«Распределённые системы на Go» (Distributed Systems in Go) — практическое руководство по проектированию, разработке и развёртыванию надёжных распределённых систем с использованием языка Go. Книга основана на реальном опыте автора в создании и эксплуатации облачных распределённых систем и охватывает весь путь от разработки отдельных HTTP-сервисов до построения полноценной микросервисной архитектуры.
Рано или поздно каждый Go-разработчик сталкивается с ситуацией, когда одного приложения становится недостаточно. Возникает необходимость создавать несколько взаимодействующих сервисов, обеспечивать аутентификацию, организовывать хранение данных, настраивать обмен сообщениями и поддерживать стабильную работу системы даже при возникновении сбоев.
Знание теоремы CAP и основных принципов распределённых вычислений — лишь отправная точка. Настоящие сложности начинаются в реальных условиях, когда потребители Kafka не успевают обрабатывать сообщения, межсервисные запросы завершаются по тайм-ауту, а определить источник проблемы становится всё сложнее.
Эта книга помогает преодолеть разрыв между теорией и практикой. Автор последовательно демонстрирует создание полноценной распределённой системы, рассматривая аутентификацию, базы данных, очереди сообщений, gRPC, механизмы отказоустойчивости и распределённую трассировку.
Каждая глава посвящена определённому архитектурному шаблону, который затем реализуется в виде повторно используемых компонентов платформенного SDK. К 15-й главе читатель создаст готовую к развёртыванию систему из шести сервисов и собственный SDK, упрощающий разработку последующих приложений.
Что вы изучите и создадите
• HTTP-сервисы: разработка HTTP-сервисов на Go с использованием компонуемых промежуточных обработчиков (middleware) без необходимости подключения дополнительных фреймворков.
• Аутентификация и безопасность: реализация JWT-аутентификации с цифровой подписью ECDSA и подключаемыми агентами аутентификации.
• PostgreSQL и управление данными: организация работы с базами данных, выполнение миграций без остановки системы и реализация паттерна Transactional Outbox.
• Apache Kafka: создание производителей и потребителей сообщений, управление обратным давлением (backpressure) и использование очередей недоставленных сообщений (Dead Letter Queue).
• gRPC и межсервисное взаимодействие: настройка взаимодействия между сервисами с механизмами повторных попыток, тайм-аутами и автоматическими выключателями (Circuit Breaker).
• Распределённая согласованность: применение паттерна Saga, ключей идемпотентности и механизмов сверки данных (Reconciliation).
• Мониторинг и наблюдаемость: внедрение структурированного логирования с помощью slog, сбор метрик через Prometheus и распределённая трассировка с использованием OpenTelemetry.
• Тестирование и отказоустойчивость: тестирование компонентов на реальной инфраструктуре с помощью Testcontainers, моделирование сбоев и применение подходов хаос-тестирования.
• Развёртывание в Kubernetes: подготовка конфигурационных манифестов и развёртывание полноценной распределённой системы, состоящей из шести сервисов.
Практический результат
Главная особенность книги — последовательное создание реальной системы, а не изучение отдельных инструментов в отрыве от практики.
Каждый пример кода является полным и самодостаточным. По мере изучения материала читатель не только осваивает архитектурные подходы, но и формирует собственную библиотеку повторно используемых компонентов.
В результате вы получите работающую распределённую систему из шести сервисов, готовую к развёртыванию, а также платформенный SDK, который позволит быстрее и эффективнее создавать новые сервисы.
Для кого эта книга
Книга предназначена для Go-разработчиков, которые уже умеют создавать отдельные приложения и сервисы, но хотят перейти к проектированию полноценных распределённых систем.
Она будет особенно полезна инженерам, работающим с микросервисами, облачной инфраструктурой, базами данных и асинхронной обработкой сообщений.
Если вам приходилось копировать middleware без полного понимания его устройства, разбираться с ошибками context deadline exceeded или искать причины сбоев сразу в нескольких взаимодействующих сервисах, эта книга поможет систематизировать знания и освоить практические инструменты для решения подобных задач.

Дмитрий С. –
Взял курс как практик, чтобы систематизировать знания по распределённым системам. Ценно, что к 15-й главе получается собрать полноценную систему из шести сервисов, а не отдельные сниппеты. Местами не хватает более подробных пояснений к инфраструктурным конфигам. В остальном — хорошая связка теории CAP с реальными задачами эксплуатации.
Марина В. –
Уже несколько лет работаю с микросервисами, и материал по распределённой трассировке и аутентификации между сервисами разложен аккуратно и по делу. Автор не уходит в чистую теорию, а показывает реализацию каждого архитектурного шаблона в коде. Есть мелкие шероховатости в примерах настройки Kafka, но общая ценность книги от этого не теряется.
Алексей Т. –
До этого писал только отдельные HTTP-сервисы на Go и не понимал, как свести их в систему. Книга помогла: прошёл путь от простого API до gRPC-взаимодействия и очередей на Kafka. Особенно полезной оказалась глава про тайм-ауты и отказоустойчивость — наконец стало понятно, почему в проде так сложно искать источник проблем. К концу действительно собираешь небольшой SDK из повторно используемых компонентов.