В последние годы многие компании начали применять подход Чистой архит…

Kaan Baytan

В последние годы многие компании начали применять подход Чистой архитектуры по очень простой причине: поддерживать чистоту ядра бизнеса и защищать его от технологического хаоса.

### 1. Домен (сущности)

Здесь кроется чистейшая логика бизнеса:

- Сущности

- Объекты значений/записи

- Деловые правила

Нет ни структуры, ни базы данных. Есть только бизнес-правила, которые ни в коем случае нельзя нарушать.

### 2. Варианты использования

Это уровень, на котором выполняются операции в системе:

- Варианты использования

- Оркестровка потока

- Процесс валидации

Это та часть, которая решает, что произойдет, когда пользователь что-то делает.

### 3. Адаптеры интерфейса

Это слой, преобразующий внешний мир в форму, понятную внутренней системе:

- Контроллеры

- DTO/картографы

- Порты и адаптеры

- Интерфейсы репозитория

Этот уровень действует как своего рода "интерпретатор" между бизнес-логикой и технологиями, которые мы используем.

### 4. Фреймворки и драйверы

Это самый внешний слой, и здесь расположены технологические детали:

- ОТДЫХ API

- ОРМ

- Базы данных

- Очереди сообщений

- Рамки

Даже если завтра вы перейдете с MySQL на MongoDB или Spring на NestJS, уровни Домен и Сценарий использования даже не узнают об этом.

### Но насколько это похоже на шестиугольную архитектуру?

Их можно считать очень близкими архитектурами.

- Чистая архитектура построена на большем количестве колец.

- Шестиугольная архитектура более четко использует подход Порты и адаптеры.

Но основная идея почти та же:

- Отделение бизнес-логики от технологии.

- Снижение технологических зависимостей

- Создание более легко тестируемого программного обеспечения.

- Упрощать обслуживание и развитие системы.

#CleanArchitecture #SoftwareArchitecture #HexagonalArchitecture #DomainDrivenDesign #DDD #BackendDevelopment #SoftwareEngineering #SystemDesign #CleanCode #SOLID #UseCase #DomainLayer #PortsAndAdapters #Microservices #ModularMonolith #Backend #Programming #Developer #CodeQuality #MaintainableCode