Как стать автором
Обновить

Слои, Луковицы, Гексогоны, Порты и Адаптеры — всё это об одном

Программирование *Анализ и проектирование систем *Проектирование и рефакторинг *ООП *
Из песочницы
Перевод статьи Mark Seemann о популярных архитектурах разработки ПО и о том, что между ними общего.

Один из моих читателей спросил меня:
Вернон, в своей книге «Implementing DDD» много говорит об архитектуре Порты и Адаптеры, как о более продвинутом уровне Слоистой Архитектуры. Хотелось бы услышать ваше мнение на этот счёт.
Если не вдаваться в детали, то в своей книге я описываю именно этот архитектурный паттерн, хотя никогда не называю его этим именем.

TL;DR Если применить принцип инверсии зависимостей к слоистой архитектуре, то в конечном счете получим Порты и Адаптеры.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 34K
Комментарии 9

Matthias Noback Об Идеальной Архитектуре — Слои, Порты и Адаптеры(Часть 2 — Слои)

PHP *Программирование *Symfony *Проектирование и рефакторинг *ООП *
Перевод

В 2017 году Matthias Noback (автор A year with Symfony) опубликовал цикл из трех статей, в котором описал свои взгляды на идеальную архитектру корпоративных приложений, сформировавшуюся за долгие годы практики.Первая часть является вводной и не представляет особого интереса(можно ознакомитсья в оригинале). Переводом второй является данная статья. Перевод третьей будет доступен в скором времени.


Для меня, одним из обязательных требований, к "чистой" архитектуре, является грамотное разделение кода приложения по слоям. Сам слой не делает ничего, вся соль в том, как он используется и какие ограничения накладываются на компоненты, ему принадлежащие. Давайте немного пофилософствуем, перед тем как рассмотреть конеретные практические приемы.

Читать дальше →
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 13K
Комментарии 15

Matthias Noback Об Идеальной Архитектуре — Слои, Порты и Адаптеры (Часть 3 — Порты и Адаптеры)

PHP *Программирование *Symfony *Проектирование и рефакторинг *ООП *
Перевод

Matthias Noback (автор A year with Symfony) опубликовал цикл из трех статей, в котором описал свои взгляды на идеальную архитектру корпоративных приложений, сформировавшуюся за долгие годы практики.Первая часть является вводной и не представляет особого интереса(можно ознакомиться в оригинале). Перевод второй — по ссылке. И так как он вызвал БЕШЕННЫЙ ажиотаж(целых ДВА человека подискутировали со мной в комментах), то не перевести третью было бы преступлением.


В предыдущей статье мы обсудили разумную систему расслоения проекта, состоящую из трех слоёв:


  • Домен
  • Прикладной слой
  • Инфраструктура

Сейчас, подробно рассмотрим инфраструктурный слой.

Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 9.4K
Комментарии 4

Архитектурный слой (в корпоративной разработке). Понятие, определение, представление

Программирование *Анализ и проектирование систем *Проектирование и рефакторинг *Управление разработкой *
Сейчас сложно найти короткое и понятное определение таких понятий как «слой приложения» и «уровень абстракции». Это влечёт различия в понимании одного и того же либо непонимания данного понятия среди разработчиков. А недопонимания ведут к разногласиям.

Цель этой статьи: совместно выработать определённость, создать у всех единое представление и выработать короткое, ясное и практичное определение для понятия Архитектурный слой в области корпоративных приложений. Всё что приводится в статье вы можете обсудить и дополнить в комментариях, а я актуализирую материал в статье в соответствии с замечаниями.

Разделение архитектуры корпоративного приложения на слои позволяет
  • лучше выполнять декомпозицию задачи
  • проще ориентироваться внутри проекта
  • разработчики приобретают возможность внесения изменений в какой-то определённый слой, вместо того, чтобы перерабатывать всё приложение целиком
  • помогает структурировать приложения разложением на группы подзадач, находящихся на определенных архитектурных слоях
  • в зависимости от уровня сложности слоя, к опыту разработчиков могут быть разные требования, что позволяет распределять разработчиков по слоям в зависимости от опыта

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


В чём сейчас заключается путаница при работе с многослойной архитектурой:
  • принято считать, что слоёв должно быть 3: данные, бизнес-логика, интерфейса — но на самом деле слоёв может быть любое необходимое количество
  • нет критериев, по которым те или иные задачи относятся к тому или иному слою, что часто приводит, к созданию одного большого прикладного слоя, либо один какой либо из слоёв дорабатывается под задачи, не характерные для него
  • нет конкретного короткого определения
  • есть пересечения между понятиями слоя (layer), уровня и яруса (tier), к которым так же нет точных определений. По Фаулеру уровни относятся, подразумевая физическое разделение, а на практике такой определённости нет
Читать дальше →
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 5.8K
Комментарии 24

Почему здравый смысл важнее паттернов, а Active Record не так уж и плох

Блог компании Домклик Python *Программирование *Java *ООП *
Так уж вышло, что разработчики, особенно молодые, любят паттерны, любят спорить о том, какой паттерн нужно применять здесь или там. Спорить до хрипоты: это фасад или прокси, а может даже синглтон. А если у вас не чистая, гексагональная архитектура, то некоторые разработчики готовы сжечь на костре Святой Инквизиции.

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

А наличие во фреймворке нужных паттернов никак не гарантирует их правильного и осознанного применения.


Читать дальше →
Всего голосов 46: ↑43 и ↓3 +40
Просмотры 15K
Комментарии 22

Пишем CRUD-приложение на Go с помощью Mysql, GORM, Echo, Clean Architecture

MySQL *Go *
Перевод

Начнем сначала


В этой статье будет сказ о том, как на Clean Architecture написать API с функциями CR(U)D, где в качестве БД взят Mysql, фреймворк – Echo, ORMapper – GORM.

Что делаем


API с функциями Create, Read, (Update), Delete. Обновление на самом деле реализовать особо не удалось, милости прошу попробовать самостоятельно.

Целевая аудитория


Те разработчики, которые хотят создать простой API после освоения Go.
Читать дальше →
Всего голосов 19: ↑13 и ↓6 +7
Просмотры 11K
Комментарии 16

Гайд по архитектуре приложений для Android. Часть 1: обзор

Блог компании Surf Программирование *Разработка мобильных приложений *Разработка под Android *
Перевод

Перевод обновлённого гайда Android по архитектуре приложений. Это — первая часть из пяти: обзор рекомендаций по архитектуре.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 16K
Комментарии 2