Развитие проекта часть 4

Сегодня я понял, что моё решение построить архитектуру проекта, где будут фигурировать четыре слоя, было верным… Многие знакомы с такой книгой “Чистая Архитектура” Роберта Мартина, но в ней не всё так идеально, как описывется. Каждый человек может по своему трактовать то, что описывает Роберт Мартин: кто-то считает, что всё в ней идеально, а кто-то, как я, нет. Я могу привести только несколько примеров, почему так считаю.

1) Если мы рассматриваем ЧА как архитектуру, у которой имеется четыре слоя, то при детальном прочтении книги, у нас возникает вопрос: “а как же нам не допустить, чтоб наша зависимость в какой-то момент не начала быть направлена от высокоуровневой реализации к низкоуровневой?”. В разработке данный момент решается использованием так называемых портов, если грубо обозначить, то интерфейсов. 2) Мы должны отказаться от использования ЧА, если хотим экономить на ресурсах. Это актуально, если мы пишем какую-нибудь библиотеку, разрабатываем программное обеспечение для микроконтролеров и т.п. Однако в случае с веб-разработкой мы всегда упираемся в мощности того, что мы интегрировали в наш сервис: база данных, S3, брокер-сообщений и т.д.

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

1) Инфраструктура в моём случае хранит созданные состояния (если углубиться, то можно натянуть так называемый DI, который делается на состояниях), главная точка входа маршрутов, конфиги, различные клиенты; 2) Адаптер в моём случае хранит: контроллеры, шлюзы (пока что реализован шлюз базы данных), взаимодействие с S3 и прочее; 3) Приложение в моём случае реализует сценарии использования, которые инкапсулируют бизнес-логику; 4) Домен в моём случае реализует бизнес-правила.

Однако по описанию кажется, что очень сильно похоже на ЧА, но это на первый взгляд только кажется…

А что же было всё же сегодня сделано? Я реализовал основные сценарии для работы с рабочими пространствами, кроме двух: принятие инвайта и просмотр рабочего пранства -, начал “дружить” фронтенд с бэкендом понемногу, а ещё покрывать постепенно тестами код. Также запланировал на завтра новый функционал, который хочу добавить… А также покрывать тестами старый функционал.

Сам проект: https://github.com/WolfMTK/devlogix\_backend

Развитие проекта часть 4 | Сетка — социальная сеть от hh.ru Развитие проекта часть 4 | Сетка — социальная сеть от hh.ru