Go with the Domain: Создание современного бизнес-ПО на Go — Robert Laszczak, Miłosz Smółka — обложка книги
298 страниц
Go (Golang)
PDF
4.5

Go with the Domain: Создание современного бизнес-ПО на Go

Domain-Driven Design в Go на практике

Автор:

Год:

Краткое содержимое:

Введение

Книга «Go with the Domain: Building Modern Business Software in Go» (авторы: Robert Laszczak, Miłosz Smółka, 2021 г., 298 стр.) — это не просто очередной туториал по синтаксису Go. Это практическое руководство по применению Domain-Driven Design (DDD) и принципов Clean Architecture в экосистеме Go. На момент выхода книга стала одной из первых, кто системно соединил философию предметно-ориентированного проектирования с идиоматичным Go, избегая излишней абстракции и «оверинжиниринга». Она адресована разработчикам, которые уже пишут на Go и хотят перейти от «просто работающего кода» к поддерживаемым, тестируемым и масштабируемым бизнес-приложениям.

О чём эта книга

Книга построена вокруг реального примера — системы управления заказами (order management system). Авторы последовательно проводят читателя через все этапы: от выделения ограниченных контекстов (Bounded Contexts) и моделирования доменных событий до реализации репозиториев, сервисов и транспортных слоёв (HTTP, gRPC, очереди сообщений). Особое внимание уделяется идиоматичности кода: авторы показывают, как использовать интерфейсы Go для определения портов и адаптеров, как избегать «анемичной модели» и как правильно организовывать пакеты, чтобы не нарушать границы домена. В каждой главе есть практические примеры, диаграммы и сравнения «плохого» и «хорошего» кода.

Для кого эта книга

  • Go-разработчики с опытом от 1 года, которые хотят углубиться в архитектуру.
  • Архитекторы ПО, ищущие конкретные паттерны для реализации DDD на Go.
  • Техлиды и тимлиды, которые отвечают за проектирование микросервисов.
  • Разработчики, переходящие с других языков (Java, C#) на Go и желающие применить DDD без «тяжёлых фреймворков».

Что узнает читатель

  • Основы DDD применительно к Go: Entity, Value Object, Aggregate, Domain Event, Repository, Factory.
  • Clean Architecture (гексагональная архитектура) на Go: как разделить домен, приложение, инфраструктуру.
  • Тестирование доменной логики без моков, с использованием табличных тестов и интерфейсов.
  • Работа с транзакциями и конкурентностью в контексте DDD (паттерн Unit of Work).
  • Интеграция с внешними системами через порты-адаптеры (HTTP, gRPC, Kafka).
  • Организация кода в монорепозитории и модулях Go.
  • Обработка ошибок в домене: создание собственных типов ошибок, контекстные ошибки.
  • Event Sourcing и CQRS — базовое введение и пример реализации.

Сильные стороны

  • Практическая направленность: код из книги можно сразу адаптировать под свои проекты.
  • Идиоматичность: авторы не навязывают Java-стиль, а показывают, как DDD выглядит «по-гошному» (маленькие интерфейсы, композиция, явные зависимости).
  • Чёткая структура: каждая глава завершается резюме и списком «что запомнить».
  • Акцент на тестировании: целая глава посвящена тестированию домена и инфраструктуры.
  • Современность: книга использует Go modules, context.Context, middleware, generics (хотя до выхода Go 1.18 — но авторы дают советы по адаптации).

Кому рекомендуется

Книга обязательна к прочтению всем, кто строит на Go сложные бизнес-системы (ERP, CRM, fintech, логистика, маркетплейсы). Она будет полезна как тем, кто только начинает внедрять DDD, так и опытным практикам, желающим увидеть «золотую середину» между чистым DDD и прагматизмом Go. Если вы устали от «сервисов-богом» и хотите писать код, который легко менять под новые требования бизнеса — эта книга для вас.

Рекомендаций