Arxitektura uslubini tanlash (2-qism)

Salom, Habr. Bugun men kursning yangi oqimini boshlash uchun maxsus yozgan bir qator nashrlarimni davom ettiraman. "Dasturiy ta'minot arxitektori".

kirish

Arxitektura uslubini tanlash axborot tizimini qurishda asosiy texnik qarorlardan biridir. Ushbu maqolalar turkumida men ilovalarni qurish uchun eng mashhur me'moriy uslublarni tahlil qilishni va qaysi me'moriy uslub qachon afzalroq ekanligi haqidagi savolga javob berishni taklif qilaman. Taqdimot jarayonida men monolitlardan mikroservislarga qadar me'moriy uslublarning rivojlanishini tushuntiruvchi mantiqiy zanjirni chizishga harakat qilaman.

Π’ So'nggi marta biz monolit bilan shug'ullandik va monolitning bir qator muammolari bor degan xulosaga keldik: o'lcham, ulanish, joylashtirish, o'lchov, ishonchlilik va qattiqlik.

Bu safar men tizimni modullar/kutubxonalar (komponentlarga yo'naltirilgan arxitektura) yoki xizmatlar (xizmatga yo'naltirilgan arxitektura) to'plami sifatida tashkil qilish imkoniyatlari haqida gapirishni taklif qilaman.

Komponentlarga yo'naltirilgan arxitektura

Komponentlarga yo'naltirilgan arxitektura tizimni joriy va kelajakdagi loyihalarda qo'llanilishi mumkin bo'lgan komponentlar to'plami sifatida bajarishni o'z ichiga oladi. Tizimni tarkibiy qismlarga bo'lishda quyidagilar e'tiborga olinadi: ularning qayta ishlatilishi, almashtirilishi, kontekstdan mustaqilligi, kengaytirilishi, inkapsulyatsiya va mustaqillik.

Komponentlardan to'g'ri foydalanish bilan "katta axloqsizlik to'pi" (katta o'lchamli + yuqori ulanish) muammosi hal qilinadi va komponentlarning o'zlari ham yig'ish birliklari (modullar, kutubxonalar) va joylashtirish birliklari (xizmatlar) bo'lishi mumkin. Joylashtirish birliklari har doim ham ishlaydigan jarayonga mos kelmaydi: masalan, veb-ilova va ma'lumotlar bazasi birgalikda joylashtiriladi.

Ko'pincha monolitlar modullar to'plami sifatida ishlab chiqilgan. Ushbu yondashuv mustaqil rivojlanishga olib keladi, ammo mustaqil masshtablash va joylashtirish, xatolarga chidamlilik va umumiy texnologiya stackidan mustaqillik muammolari saqlanib qolmoqda. Shuning uchun modul qisman mustaqil komponent hisoblanadi.

Bunday monolitning eng katta muammosi shundaki, modullarga bo'linish mutlaqo mantiqiy va ishlab chiquvchilar tomonidan osongina buzilishi mumkin. Yadro moduli paydo bo'lishi mumkin, u asta-sekin axlatxonaga aylanadi, modullar orasidagi bog'liqliklar grafigi o'sishi mumkin va hokazo. Bunday muammolarni oldini olish uchun ishlab chiqish juda etuk jamoa tomonidan yoki to'liq vaqtli kodni ko'rib chiqish bilan shug'ullanadigan va mantiqiy tuzilmani buzgan ishlab chiquvchilarning qo'llarini uradigan "me'mor" rahbarligida amalga oshirilishi kerak.

"Ideal" monolit - bu mantiqiy ravishda ajratilgan modullar to'plami bo'lib, ularning har biri o'z ma'lumotlar bazasiga qaraydi.

Xizmatga yo'naltirilgan arxitektura

Agar tizim xizmatlar to'plami shaklida tashkil etilishi kerak bo'lsa, unda biz xizmatga yo'naltirilgan arxitektura haqida gapiramiz. Uning tamoyillari foydalanuvchiga yo'naltirilgan ilovalarning o'zaro ishlashi, biznes xizmatlaridan qayta foydalanish, texnologiya stekidan mustaqillik va avtonomiya (mustaqil evolyutsiya, kengayish va joylashtirish).

Xizmatga yo'naltirilgan arxitektura (SOA = xizmatga yo'naltirilgan arxitektura) monolitning barcha aniqlangan muammolarini hal qiladi: o'zgarish sodir bo'lganda faqat bitta xizmat ta'sir qiladi va aniq belgilangan API komponentlarning yaxshi inkapsulyatsiyasini qo'llab-quvvatlaydi.

Ammo hamma narsa unchalik silliq emas: SOA yangi muammolarni keltirib chiqaradi. Masofaviy qo'ng'iroqlar mahalliy qo'ng'iroqlarga qaraganda qimmatroq va komponentlar o'rtasida mas'uliyatni qayta taqsimlash sezilarli darajada qimmatlashdi.

Aytgancha, mustaqil ravishda joylashtirish imkoniyati xizmatning juda muhim xususiyati hisoblanadi. Agar xizmatlar birgalikda yoki bundan tashqari, ma'lum bir ketma-ketlikda joylashtirilishi kerak bo'lsa, tizimni xizmatga yo'naltirilgan deb hisoblash mumkin emas. Bunday holda, ular taqsimlangan monolit haqida gapirishadi (nafaqat SOA nuqtai nazaridan, balki mikroservis arxitekturasi nuqtai nazaridan ham anti-naqsh hisoblanadi).

Xizmatga yo'naltirilgan arxitektura me'moriy hamjamiyat va sotuvchilar tomonidan yaxshi qo'llab-quvvatlanadi. Bu ko'plab kurslar va sertifikatlar, yaxshi ishlab chiqilgan naqshlar mavjudligini nazarda tutadi. Ikkinchisiga, masalan, taniqli korporativ xizmat avtobusi (ESB = korporativ xizmat avtobusi) kiradi. Shu bilan birga, ESB sotuvchilarning yukidir; uni SOAda ishlatish shart emas.

Xizmatga yo'naltirilgan arxitekturaning mashhurligi taxminan 2008 yilda eng yuqori cho'qqiga chiqdi, shundan so'ng u pasayishni boshladi, bu mikroservislar paydo bo'lgandan keyin sezilarli darajada keskinlashdi (~ 2015).

xulosa

Axborot tizimlarini xizmatlar va modullar ko'rinishida tashkil etish imkoniyatlarini muhokama qilganimizdan so'ng, men nihoyat mikroservis arxitekturasi tamoyillariga o'tishni va keyingi qismda mikroservis arxitekturasi va xizmatga yo'naltirilgan arxitektura o'rtasidagi farqga alohida e'tibor berishni taklif qilaman.

Arxitektura uslubini tanlash (2-qism)

Manba: www.habr.com

a Izoh qo'shish