Бидний өдөр тутмын амьдралд ашигладаг программ, аппликейшн, систем бүр “үйлчилгээ”-нд суурилдаг гэвэл та итгэх үү?
Онлайн захиалга хийх, банкны гүйлгээ хийх, мэдээ унших гэх мэтчилэн эдгээр нь жижиг үйлчилгээ бүхий программуудын нэгдэл юм. Харин тэдгээрийг хэрхэн зохион байгуулж, хооронд нь уялдуулдаг вэ? Хариулт нь Service-Oriented Architecture (SOA) буюу Үйлчилгээнд суурилсан архитектур юм.
SOA гэж юу вэ?
SOA нь программуудыг бие даасан, дахин ашиглах боломжтой үйлчилгээ (service) болгон бүтээдэг программ хангамжийн зохиомжийн арга юм. Эдгээр үйлчилгээг стандарт протокол ашиглан сүлжээгээр дамжуулан ашиглах боломжтой. Үйлчилгээ бүр тодорхой функц гүйцэтгэдэг бөгөөд бусад программууд дахин ашиглах боломжтой тул хөгжүүлэлт илүү уян хатан, өргөтгөхөд хялбар болдог.

Үндсэн зарчмууд
- Formal contract : Үйлчилгээ нь тодорхойлолттой бөгөөд хэрэглэгчтэй харилцахдаа энэ гэрээг дагана. Гэрээнд үйлчилгээний төгсгөлийн цэг, мессеж солилцох формат, үйл ажиллагаа, оролт, гаралт гэх мэт багтдаг. Гэрээ тодорхой, тогтвортой байх нь чухал.
- Abstraction : Үйлчилгээний логик нь хэрэглэгчээс нуугддаг. Хэрэглэгч зөвхөн үйлчилгээг ашиглахад шаардлагатай мэдээллийг л хардаг.
- Loose coupling : Үйлчилгээ ба хэрэглэгч нь бие биетэйгээ аль болох бие даасан байдлаар ажиллана. Энэ нь хөгжүүлэлтийг чөлөөтэй, аюулгүй болгодог.
- Autonomy : Үйлчилгээнүүд өөрийн логик, гүйцэтгэлийн орчныг хянах боломжтой. Ингэснээр үйлчилгээ илүү найдвартай ажиллана.
- Reusability : Үйлчилгээг олон программ, бизнес процесст дахин ашиглах боломжтой байхаар зохион байгуулна.
- Discoverability : Үйлчилгээг мета өгөгдлөөр тэмдэглэснээр бусад прогрмам, агентууд хялбархан олох боломжтой болно.
- Composability : Үйлчилгээ нь бусад үйлчилгээнүүдтэй нийлж илүү нарийн төвөгтэй системийг бүтээхэд оролцож чадна.
- Statelessness : Боломжтой бол үйлчилгээг төлөвийн өгөгдлөөс хараат бус зохион байгуулна, ингэснээр илүү өргөтгөх боломжтой болно.
Эдгээр зарчмуудын тусламжтайгаар SOA нь орчин үеийн программ, системүүдийг уялдаа холбоотой, найдвартай, дахин ашиглах боломжтой болдог.
Давуу тал болон Сул тал
| Давуу тал | Сул тал |
| 1. Дахин ашиглах боломж өндөр SOA-д үйлчилгээ бүр бие даасан тул нэг удаа хөгжүүлсэн үйлчилгээг олон систем, олон программд давтан ашиглаж болно. 2. Засвар, шинэчлэл хийхэд хялбар Үйлчилгээнүүд хоорондоо loosely coupled байдаг учраас нэгийг өөрчлөхөд бусдад нөлөөлөхгүй. Энэ нь хөгжүүлэлт, шинэчлэлийг илүү хурдан болгодог. 3. Платформоос үл хамаарах чадамж SOA нь өөр өөр программчлалын хэл, сервер, платформ дээрх үйлчилгээнүүдийг нэг системд нэгтгэх боломж олгодог. 4. Хүртээмж сайтай Үйлчилгээнүүд тодорхой API эсвэл протоколоор дамжуулан хүсэлт илгээсэн хэн бүхэнд нээлттэй байдаг. 5. Найдвартай байдал өндөр Жижиг, тусгаарлагдсан үйлчилгээ бүрийг тестлэх, алдаа илрүүлэх нь том монолит системээс илүү хялбар. | 1. Гүйцэтгэлийн зардал өндөр Үйлчилгээнүүд хооронд олон удаа өгөгдөл солилцоно. Хүсэлт бүр баталгаажуулалт, өгөгдөл дамжуулалт шаарддаг тул энэ нь системийн ачаалал, хариу өгөх хугацаанд нөлөөлдөг. 2. Хөрөнгө оруулалт ихтэй SOA-г хэрэгжүүлэхийн тулд зохистой архитектур, сервер, интеграцийн систем, хөгжүүлэлтийн цаг зэрэгт их хэмжээний нөөц шаардлагатай. 3. Менежмент төвөгтэй болно Хэдэн арваас хэдэн зуун үйлчилгээнүүд хоорондоо мессеж солилцох үед тэдгээрийг хянах, удирдах, лог хөтлөх, мониторинг хийх нь нарийн төвөгтэй болдог. |
Микросервис болон Үйлчилгээнд суурилсан архитектурын ялгаа
Сүүлийн жилүүдэд “үйлчилгээ төвтэй” хоёр архитектур болох SOA болон Microservices хоорондоо төстэй санагддаг учир хүмүүс андуурах нь түгээмэл байдаг. Хэдий уг хоёр систем нь жижиг, бие даасан хэсгүүдэд хуваах зарчимтай боловч хэрэгжих хүрээ, зорилго, бүтэц нь өөр байдаг.
SOA (Service-Oriented Architecture)
- Ихэвчлэн томоохон байгууллагын комплекс, төвлөрсөн системүүдэд ашиглагддаг.
- Үйлчилгээнүүд хоорондын уялдаа их, харилцааны бүтэц төвлөрсөн байдаг.
- Legacy systems интеграци хийхэд маш тохиромжтой.
Microservices
- Жижиг, бие даасан, өөрийн дата ба логиктой хөнгөн жинтэй үйлчилгээний багц.
- Тус бүрдээ API-гаар шууд харилцдаг тул төвлөрсөн ESB байх шаардлагагүй.
- Cloud-native аппликейшн, стартап шийдэл, олон хэрэглэгчтэй уян хатан системд илүү ашиглагдана.
- Үйлчилгээнүүд бүрэн хараат бус тул өөр өөр технологи, хэл дээр хөгжүүлэх боломжтой.

SOA нь томоохон байгууллагын төвлөрсөн системд илүү тохиромжтой байдаг бол Microservices нь илүү жижиг, бүрэн тусгаарлагдсан үйлчилгээний бүтэцтэйгээр хөгжүүлэлтэд шинэ боломжууд нээдэг. Хэдий ялгаатай ч хоёр систем нь жижиглэх, тусгаарлах, дахин ашиглах зарчимд суурилдгаараа технологийн ертөнцөд үргэлж үнэ цэнтэй хэвээр байсаар байна.