Son illərdə bir çox şirkət çox sadə bir səbəbə görə Clean Architectur…

Kaan Baytan

Son illərdə bir çox şirkət çox sadə bir səbəbə görə Clean Architecture yanaşmasını tətbiq etməyə başlayıb: biznesin əsas nüvəsini təmiz saxlamaq və onu texnoloji xaosdan qorumaq.

### 1. Domain (Entities)

Burada biznesin ən saf məntiqi yerləşir:

- Entities

- Value Objects / Records

- Biznes qaydaları

Burada framework yoxdur, verilənlər bazası yoxdur. Yalnız heç vaxt pozulmamalı olan biznes qaydaları var.

### 2. Use Cases

Sistemdəki əməliyyatların icra olunduğu qatdır:

- Use Case-lər

- Axının orkestrasiya edilməsi

- Proses validasiyaları

İstifadəçi hər hansı bir əməliyyat etdikdə nə baş verəcəyinə qərar verən hissədir.

### 3. Interface Adapters

Xarici dünyanı daxili sistemin başa düşəcəyi formaya çevirən qatdır:

- Controllers

- DTO-lar / Mappers

- Ports və Adapters

- Repository interfeysləri

Bu qat biznes məntiqi ilə istifadə etdiyimiz texnologiyalar arasında bir növ “tərcüməçi” rolunu oynayır.

### 4. Frameworks & Drivers

Ən xarici qatdır və texnologiyaya bağlı olan hissələr burada yerləşir:

- REST API

- ORM-lər

- Verilənlər bazaları

- Message Queue-lar

- Framework-lər

Sabah MySQL-dən MongoDB-yə və ya Spring-dən NestJS-ə keçsəniz belə, Domain və Use Case qatlarının bundan xəbəri belə olmaz.

### Bəs Hexagonal Architecture ilə nə qədər oxşardır?

Onları bir-birinə çox yaxın arxitekturalar hesab etmək olar.

- Clean Architecture daha çox halqalar üzərindən qurulur.

- Hexagonal Architecture isə Ports & Adapters yanaşmasını daha açıq şəkildə istifadə edir.

Amma əsas fikir demək olar ki, eynidir:

- Biznes məntiqini texnologiyadan ayırmaq

- Texnoloji asılılıqları azaltmaq

- Daha rahat test edilən proqram təminatı yaratmaq

- Sistemin saxlanmasını və inkişaf etdirilməsini asanlaşdırmaq

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