К основному содержимому
#Architecure

Архитектура приложения и ошибки проектирования - Рустам Ахметов - Joker 2022 (Рубрика Architecure)

#Architecure #Architecture #SoftwareArchitecture #SystemDesign #Engineering

Интересный доклад от Рустама Ахметова на тему архитектуры того, как можно организовывать свой код приложений. Автор подошел к снаряду основательно и сделал обзор всех распространенных вариантов архитектуры, делая отсылки к оригинальным статьям, где про них в первый раз вспоминали. Собственно автор сначала говорит о том, что хорошая архитектура и структура кода помогает нам бороться со сложностью. А это значит, что новички на проекте, открыв IDE, легко смогуть понять как он устроен и как наносить пользу без долгого изучения, а как же тут принято раскладывать код по папкам:)

Основные мысли доклада следующие

  • Horizontal Design - это привычная всем слоенная архитектура. Так писали код уже давно и там было обычно деление на presentation tier, app tier, database tier. Этот подход был доминирующим долгое время, он доминирует и сейчас, но постепенно он вобрал в себя плюсы из других подходов. Кстати, иногда tiers было больше трех:) Например, в 2003 году появилась книга "Domain-Driven Design" Рика Эванса и начал появляться еще отдельный doaimn layer - Vertical design - этот подход появился еще в девяностые годы и нужен был для масштабирования команды, чтобы отдельные подкоманды могли автономно работать. В итоге, внутри монолитного приложения появлялись отдельные изолированные модули внутри приложения (модули делились по доменам или функциям). Это был прообраз микросервисов. Кстати, сейчас популярна становится vertical slice architecture, про которую я уже как-то рассказывал при разборе выступления "Designing for change with Vertical Slice Architecture - Chris Sainty" с NDC. Этот подход хорош для небольших приложений - Hexagonal - в 2005 году эту архитектуру предложил Alistair Cockburn. Суть была в том, чтобы внешние абстракции хорошо уметь в отдельных модулях. Здесь новинка в том, чтобы изолировать бизнес-логику от внешних интеграциях. Но как это организовать на уровне кода Алистер не показал. - Onion - луковичная архитектура была описана в 2008 году Jeffrey Palermo, который взял примерно ту же идею, что и hexagonal architecture, но показал как это сделать на уровне приложения и сделать не круговой, а разложить по слоям: отдельные папки для взаимодействий, отдельная папка для бизнес-логики, отдельная папка для объектной модели данных - Clean Architecture - предложил в 2012 Uncle Bob (Robert Martin), который попытался объединить hexagonal и onion и отделить бизнес-логику от внешних зависимостей, куда вошли и фреймворки. В общем, идея стала популярной, но догматизм Uncle Bob мешает воспринимать его серьезно.

Дальше автор рассмотрел современную hexagonal architecture from Netflix, которая с точки зрения автора похожа скорее на современную слоенную архитектуру:) В жизни автор предлагает этот шестиугольник от Netflix превратить в слои примерно так: input -> adapter -> app core (service layer) -> adapter -> output.

Дальше автор показывает демки того, как все виды архитектур выглядят в коде и какие они имеют преимущества и недостатки. Все выглядит достаточно наглядно, поэтому рекомендую демку к просмотру.

#Architecture #SoftwareArchitecture #SystemDesign #Engineering