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. Если вы устали от «сервисов-богом» и хотите писать код, который легко менять под новые требования бизнеса — эта книга для вас.