👉Доставка полезных материалов для Go-разработчиков!
В Купер.тех мы в основном пишем на Go, и многие инженерные решения так или иначе упираются в производительность, архитектуру и умение работать с нагрузкой. Дмитрий Петухов, инженер команды прайсинга и мотивации курьеров, поделился материалами, которые помогают ему с этим в работе:
🌍Язык, перфоманс и инженерные компромиссы
https://www.oreilly.com/library/view/efficient-go/9781098105709/ (соавтор Thanos и контрибьютор Prometheus)
Если возникает задача снизить потребление ресурсов и при этом оставаться готовыми к высоким нагрузкам, она может казаться противоречивой. Благодаря прагматичным подходам из книги становится понятно, что это вполне достижимо. Автор поможет сформировать правильное мышление в подходах к оптимизации, залезет под капот Go, расскажет много интересного о процессоре и использовании памяти, а также разберет, как эффективнее всего использовать pprof, и поделится, так ли хорош sync. Pool.
🌍Архитектура
Чистая архитектура Golang проекта — Олег Козырев
📱
https://www.youtube.com/watch?v=lc3ATNxWQbI
В гайде автор начинает с простой задачи, реализует её в main-файле, и по мере появления новых требований архитектура сервиса постепенно усложняется. Рассматриваются в том числе такие концепции, как Value Objects, Entity, Aggregate, Anti-Corruption Layer.
Осторожно: видео на 3 часа, но, как известно, вечно можно смотреть на огонь, воду и на то, как новые бизнес-требования встраиваются в сервис с неподготовленной к ним архитектурой. Считаю этот ролик отличным стартом для знакомства с DDD.
В продолжение гайда, полезно будет почитать книги и материалы по предметно-ориентированному проектированию (DDD), среди них я бы выделил:
https://bhv.ru/wp-content/uploads/wpallimport/files/pdfki/view_2936_978-5-9775-1886-4.pdf?srsltid=AfmBOopXfXo3aJua4uMu0AxoDncSZVUseX0BKZeGKB3VRXWFNhkJtWny — Влад Хононов
Доступная книга по DDD. Плавный вход в тему: объясняет базовые концепции и, что важно, помогает понять, когда DDD действительно нужен, а когда это избыточно. По сравнению с Эвансом более сжато и четко структурировано. Если не осилили DDD от Эванса, советую начать с нее.
https://fabiofumarola.github.io/nosql/readingMaterial/Evans03.pdf — Эрик Эванс
Классика, которая не стареет. Если «Learning Domain-Driven Design» от Хононова — это быстрый вход в мир DDD с фокусом на тактические паттерны (сущности, агрегаты, value objects), то «синяя книга» Эванса — про стратегию и мышление. Автор подробно объясняет фундаментальные принципы DDD, подкрепляя их своим опытом применения.
https://ptgmedia.pearsoncmg.com/images/9780321834577/samplepages/0321834577.pdf — Вон Вернон
Практическое продолжение «синей книги». Фокус на практике применения DDD. Автор детально разбирает агрегаты (их размер, границы, правила проектирования), репозитории, доменные сервисы и, что особенно ценно, показывает, как работать с ограниченными контекстами в реальных системах.
Что особенно удобно, книга подходит как справочник, его можно открывать отдельные главы под конкретные задачи (например, агрегаты).
https://ru.scribd.com/document/841195403/Go-идиомы-и-паттерны-проектирования — Джон Боднер
Наверное не найти лучше источника, где в одном месте, настолько полно, структурированно, четко и доходчиво разбираются базовые концепции Go. Я бы посоветовал эту книгу тем, кто перешел в Go из других языков.
Будем рады, если эти материалы окажутся полезными. А какие книги или доклады по Go и архитектуре помогли именно тебе? Пиши в комментариях!