
Зургаан өнцөгт архитектур

Ц.Нинжбадгар
Багш


Ц.Нинжбадгар
Багш
Орчин үеийн програм хангамжийн системүүд улам бүр том, төвөгтэй болж байгаа энэ үед кодыг зөв зохион байгуулах, урт хугацаанд засварлах, өргөтгөх боломжтой байлгах нь маш чухал асуудал болж байна. Энэ асуудлыг шийдвэрлэхэд зориулагдсан архитектурын нэг бол "Hexagonal Architecture", өөрөөр хэлбэл "Ports and Adapters Architecture" юм. Энэ ойлголтыг анх программ хангамжийн инженер Alistair Cockburn танилцуулсан бөгөөд системийн дотоод логик болон гаднах орчны хамаарлыг багасгах зорилготой.
Hexagonal Architecture-ийн гол зорилго нь системийн бизнес логикийг (core/domain) гадаад нөлөөллөөс бүрэн тусгаарлах юм. Өөрөөр хэлбэл, database, UI, API, framework зэрэг гаднах зүйлс өөрчлөгдсөн ч системийн гол логик өөрчлөгдөхгүй байх ёстой.
Энэ архитектур нь системийг зургаан талт (hexagon) хэлбэрээр дүрслэн ойлгуулдаг. Гэхдээ энэ нь яг 6 талтай байх ёстой гэсэн үг биш, харин олон төрлийн холболтын цэг (ports)-тэй байж болохыг илэрхийлсэн метафор юм.

1. Цөм
Системийн хамгийн чухал хэсэг бол цөм буюу дотоод логик юм. Энэ хэсэгт:
Бизнес дүрэм (business rules)
Домайн загвар (entity, value object)
Use case (application logic) агуулагдана.
Энэ хэсэг нь ямар ч технологиос (Spring Boot, PostgreSQL, REST API гэх мэт) хамааралгүй байх ёстой.
2. Порт (Интерфейс)
Порт нь цөм болон гадаад ертөнцийн хоорондох холболтын “гэрээ” буюу интерфейс юм. Эдгээр нь систем хэрхэн харилцах ёстойг тодорхойлдог. Порт нь хоёр төрөлтэй:
Эдгээр нь систем рүү гаднаас орж ирэх хүсэлтийг хүлээн авдаг.
Эдгээр нь систем гадна руу хандах үед ашиглагддаг.
3. Адаптер
Адаптер нь портыг бодитоор хэрэгжүүлдэг хэсэг юм. Энэ нь гадаад технологиудтай холбогдоно.
Давуу талууд:
1. Тест хийхэд хялбар
2. Уян хатан байдал
3. Code maintainability өндөр
4. Микросервис архитектурт тохиромжтой
Сул талууд:
1. Нарийн ээдрээтэй байдал нэмэгдэнэ
2. Жижиг төсөлд тохиромжгүй