[{"data":1,"prerenderedAt":372},["ShallowReactive",2],{"content:\u002F06-architecture\u002Fresources":3},{"title":4,"description":5,"path":6,"body":7},"Дополнительные материалы: архитектура","Архитектуру лучше изучать через практические кейсы и контрпримеры. Здесь — русскоязычные статьи, доклады и несколько первоисточников, которые полезны именно для Go-бэкенда.","\u002F06-architecture\u002Fresources",{"type":8,"value":9,"toc":359},"minimark",[10,15,18,23,61,65,97,101,133,137,166,170,212,216,244,248,278,282,310,314],[11,12,14],"h1",{"id":13},"дополнительные-материалы","Дополнительные материалы",[16,17,5],"p",{},[19,20,22],"h2",{"id":21},"layered-architecture-n-layer","Layered Architecture (N-Layer)",[24,25,26,37,45,53],"ul",{},[27,28,29,36],"li",{},[30,31,35],"a",{"href":32,"rel":33},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F848596\u002F",[34],"nofollow","Транзакции в БД на Go с использованием многослойной архитектуры | Хабр"," — хороший пример того, почему слой use case нужен между handler и repository.",[27,38,39,44],{},[30,40,43],{"href":41,"rel":42},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F1025068\u002F",[34],"Clean Architecture + DDD в Go: как не превратить проект в 200 файлов ни о чем | Хабр"," — показывает границу между полезными слоями и лишней церемонией.",[27,46,47,52],{},[30,48,51],{"href":49,"rel":50},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F911018\u002F",[34],"Go-микросервисы: стандартизация архитектуры с Clean Architecture и DDD | Хабр"," — практический взгляд на модули, домен, application и infrastructure.",[27,54,55,60],{},[30,56,59],{"href":57,"rel":58},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F888428\u002F",[34],"Вам не нужна Чистая архитектура. Скорее всего | Хабр"," — полезный антидот против автоматического усложнения слоев.",[19,62,64],{"id":63},"hexagonal-architecture-ports-adapters","Hexagonal Architecture (Ports & Adapters)",[24,66,67,75,82,89],{},[27,68,69,74],{},[30,70,73],{"href":71,"rel":72},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F427739\u002F",[34],"DDD, Hexagonal, Onion, Clean, CQRS: как я собрал все это вместе | Хабр"," — русскоязычный перевод с хорошей общей картой ports\u002Fadapters.",[27,76,77,81],{},[30,78,80],{"href":41,"rel":79},[34],"Clean Architecture + DDD в Go | Хабр"," — Go-примеры портов репозитория и use cases.",[27,83,84,88],{},[30,85,87],{"href":49,"rel":86},[34],"Go-микросервисы: стандартизация архитектуры | Хабр"," — как выделять domain\u002Fapplication\u002Finfrastructure в сервисах.",[27,90,91,96],{},[30,92,95],{"href":93,"rel":94},"https:\u002F\u002Falistair.cockburn.us\u002Fhexagonal-architecture\u002F",[34],"Hexagonal Architecture | Alistair Cockburn"," — первоисточник Ports & Adapters, стоит держать рядом как точку сверки.",[19,98,100],{"id":99},"onion-architecture","Onion Architecture",[24,102,103,109,117,125],{},[27,104,105,108],{},[30,106,73],{"href":71,"rel":107},[34]," — удобно сравнить Onion с Clean и Hexagonal на одной схеме.",[27,110,111,116],{},[30,112,115],{"href":113,"rel":114},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F486734\u002F",[34],"Чистая архитектура с TypeScript: DDD и слоистая архитектура | Хабр"," — не Go, но хорошо объясняет кольца и направление зависимостей.",[27,118,119,124],{},[30,120,123],{"href":121,"rel":122},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F718916\u002F",[34],"Clean Architecture, DDD, гексагональная архитектура на практике | Хабр"," — длинный практический разбор, полезный как архитектурный кейс.",[27,126,127,132],{},[30,128,131],{"href":129,"rel":130},"https:\u002F\u002Fjeffreypalermo.com\u002F2008\u002F07\u002Fthe-onion-architecture-part-1\u002F",[34],"The Onion Architecture | Jeffrey Palermo"," — первоисточник, если хочется свериться с исходной идеей.",[19,134,136],{"id":135},"clean-architecture","Clean Architecture",[24,138,139,145,152,158],{},[27,140,141,144],{},[30,142,80],{"href":41,"rel":143},[34]," — практичный Go-разбор без фанатизма.",[27,146,147,151],{},[30,148,150],{"href":49,"rel":149},[34],"Go-микросервисы: Clean Architecture и DDD | Хабр"," — стандартизация структуры сервисов, домена и application layer.",[27,153,154,157],{},[30,155,59],{"href":57,"rel":156},[34]," — полезно читать перед тем, как плодить use case на каждый чих.",[27,159,160,165],{},[30,161,164],{"href":162,"rel":163},"https:\u002F\u002Fblog.cleancoder.com\u002Funcle-bob\u002F2012\u002F08\u002F13\u002Fthe-clean-architecture.html",[34],"The Clean Architecture | Robert C. Martin"," — первоисточник Dependency Rule.",[19,167,169],{"id":168},"clean-architecture-в-go-практика","Clean Architecture в Go — практика",[24,171,172,180,186,204],{},[27,173,174,179],{},[30,175,178],{"href":176,"rel":177},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=rCJvW2xgnk0",[34],"Пишем REST API сервис на Go | Николай Тузов, YouTube"," — проектный пример структуры сервиса, конфигов, логов, тестов и деплоя.",[27,181,182,185],{},[30,183,35],{"href":32,"rel":184},[34]," — показывает практическую проблему транзакций через слой application.",[27,187,188,191,192,196,197,196,200,203],{},[30,189,80],{"href":41,"rel":190},[34]," — хороший материал для сверки структуры ",[193,194,195],"code",{},"internal\u002Fdomain",", ",[193,198,199],{},"application",[193,201,202],{},"infrastructure",".",[27,205,206,211],{},[30,207,210],{"href":208,"rel":209},"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fwire",[34],"Google Wire"," — compile-time DI для Go, когда ручная сборка зависимостей становится слишком шумной.",[19,213,215],{"id":214},"hexagonal-onion-clean-одна-идея","Hexagonal, Onion, Clean — одна идея",[24,217,218,224,232,238],{},[27,219,220,223],{},[30,221,73],{"href":71,"rel":222},[34]," — самая удобная обзорная статья для сравнения подходов.",[27,225,226,231],{},[30,227,230],{"href":228,"rel":229},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F952344\u002F",[34],"DDD, CQRS, EDA, ES, Clean, Layer, Hexagonal in one application | Хабр"," — свежий обзор того, как архитектурные подходы сочетаются в одном приложении.",[27,233,234,237],{},[30,235,59],{"href":57,"rel":236},[34]," — помогает отделить идею dependency direction от модной упаковки.",[27,239,240,243],{},[30,241,80],{"href":41,"rel":242},[34]," — Go-кейс, где можно увидеть компромиссы на коде.",[19,245,247],{"id":246},"ddd-основные-концепции","DDD — основные концепции",[24,249,250,258,264,270],{},[27,251,252,257],{},[30,253,256],{"href":254,"rel":255},"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=VyUGi8_n66A",[34],"DDD в Go — это не больно почти | Илья Сергунин, YouTube"," — доклад Авито про DDD в Go без академической тяжести.",[27,259,260,263],{},[30,261,80],{"href":41,"rel":262},[34]," — entities, value objects, repository ports и use cases на Go-примерах.",[27,265,266,269],{},[30,267,150],{"href":49,"rel":268},[34]," — как стандартизировать bounded contexts и слои в Go-сервисах.",[27,271,272,277],{},[30,273,276],{"href":274,"rel":275},"https:\u002F\u002Fdomainlanguage.com\u002Fddd\u002Freference\u002F",[34],"Domain-Driven Design Reference"," — компактный первоисточник терминов Эрика Эванса.",[19,279,281],{"id":280},"ddd-aggregates","DDD — Aggregates",[24,283,284,290,296,302],{},[27,285,286,289],{},[30,287,256],{"href":254,"rel":288},[34]," — хороший контекст про агрегаты, инварианты и границы модели.",[27,291,292,295],{},[30,293,80],{"href":41,"rel":294},[34]," — практический пример доменных сущностей и правил.",[27,297,298,301],{},[30,299,230],{"href":228,"rel":300},[34]," — полезно для связи aggregates, events, CQRS и event sourcing.",[27,303,304,309],{},[30,305,308],{"href":306,"rel":307},"https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FDDD_Aggregate.html",[34],"DDD Aggregate | Martin Fowler"," — короткий первоисточник по aggregate root и границам согласованности.",[19,311,313],{"id":312},"паттерны-в-go-шпаргалка","Паттерны в Go — шпаргалка",[24,315,316,324,335,343,351],{},[27,317,318,323],{},[30,319,322],{"href":320,"rel":321},"https:\u002F\u002Fhabr.com\u002Fru\u002Fcompanies\u002Fotus\u002Farticles\u002F786314\u002F",[34],"SOLID и DRY в Go | Хабр \u002F OTUS"," — как применять принципы без переноса классовой модели.",[27,325,326,331,332,203],{},[30,327,330],{"href":328,"rel":329},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F348852\u002F",[34],"Принцип SOLID в языке Go | Хабр"," — русский перевод доклада Дейва Чейни ",[193,333,334],{},"SOLID Go Design",[27,336,337,342],{},[30,338,341],{"href":339,"rel":340},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F1003418\u002F",[34],"Паттерны конкурентности в Go: Worker Pool | Хабр"," — Go-специфичный паттерн, который часто встречается в сервисах.",[27,344,345,350],{},[30,346,349],{"href":347,"rel":348},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F1013072\u002F",[34],"Паттерны конкурентности в Go: Fan-Out\u002FFan-In | Хабр"," — полезно рядом с pipeline, context и worker pool.",[27,352,353,358],{},[30,354,357],{"href":355,"rel":356},"https:\u002F\u002Fhabr.com\u002Fru\u002Farticles\u002F856272\u002F",[34],"Погружение в интерфейсы Go | Хабр"," — база для Strategy, Adapter, Repository и ports через маленькие интерфейсы.",{"title":360,"searchDepth":361,"depth":361,"links":362},"",2,[363,364,365,366,367,368,369,370,371],{"id":21,"depth":361,"text":22},{"id":63,"depth":361,"text":64},{"id":99,"depth":361,"text":100},{"id":135,"depth":361,"text":136},{"id":168,"depth":361,"text":169},{"id":214,"depth":361,"text":215},{"id":246,"depth":361,"text":247},{"id":280,"depth":361,"text":281},{"id":312,"depth":361,"text":313},1781022065684]