Arxitektura uslubini tanlash (3-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.

Oxirgi marta biz har xil turdagi monolitlar va ularni qurish uchun komponentlardan foydalanish, ham tarkibiy qismlarni qurish, ham joylashtirish komponentlari haqida gaplashdik. Biz xizmatga yo'naltirilgan arxitekturani tushunamiz.

Endi biz nihoyat mikroservis arxitekturasining asosiy xususiyatlarini aniqlaymiz.

Arxitektura aloqalari

Avvalgi maqolalarda keltirilgan ta'riflarga asoslanib, har qanday xizmat komponent ekanligini tushunish kerak, ammo har bir xizmat mikroservis emas.

Mikroservis arxitekturasining xususiyatlari

Mikroservis arxitekturasining asosiy xususiyatlari quyidagilardan iborat:

  • Biznes imkoniyatlari atrofida tashkil etilgan
  • Loyihalar emas, mahsulotlar
  • Aqlli so'nggi nuqtalar va soqov quvurlar
  • Markazlashtirilmagan boshqaruv
  • Markazlashtirilmagan ma'lumotlarni boshqarish
  • Infratuzilmani avtomatlashtirish
  • Muvaffaqiyatsizlik uchun dizayn
  • Evolyutsion rivojlanish bilan arxitektura (Evolyutsion dizayn)

1-band xizmatga yo'naltirilgan arxitekturadan kelib chiqadi, chunki mikroservislar xizmatlarning alohida holatidir. Boshqa fikrlar alohida ko'rib chiqilishi kerak.

Biznes imkoniyatlari atrofida tashkil etilgan

Endi Konvey qonunini esga olish kerak: tizimlarni yaratuvchi tashkilotlar uning arxitekturasini tashkil qiladi, ushbu tashkilotlar ichidagi o'zaro ta'sir tuzilmasini nusxalaydi. Misol tariqasida kompilyator yaratish misolini eslashimiz mumkin: yetti kishidan iborat jamoa yetti o‘tishli kompilyatorni, besh kishidan iborat jamoa esa besh bosqichli kompilyatorni ishlab chiqdi.

Agar monolitlar va mikroservislar haqida gapiradigan bo'lsak, unda ishlab chiqish funktsional bo'limlar (backend, frontend, ma'lumotlar bazasi ma'murlari) tomonidan tashkil etilsa, biz klassik monolitni olamiz.

Mikroservislarni olish uchun jamoalar biznes qobiliyati (buyurtmalar, jo'natishlar, katalog jamoasi) bo'yicha tashkil etilishi kerak. Ushbu tashkilot jamoalarga ilovaning muayyan qismlarini yaratishga e'tibor qaratish imkonini beradi.

Loyihalar emas, mahsulotlar

Jamoa ishlab chiqilgan funksionallikni boshqa jamoalarga o'tkazadigan loyiha yondashuvi mikroservis arxitekturasi uchun mutlaqo mos kelmaydi. Jamoa butun hayot aylanish jarayonida tizimni qo'llab-quvvatlashi kerak. Mikroservislarni joriy etish bo'yicha yetakchilardan biri Amazon shunday dedi: "Siz qurasiz, siz uni boshqarasiz". Mahsulot yondashuvi jamoaga biznes ehtiyojlarini his qilish imkonini beradi.

Aqlli so'nggi nuqtalar va soqov quvurlar

SOA arxitekturasi aloqa kanallariga, xususan Enterprise Service Busga katta e'tibor berdi. Bu ko'pincha noto'g'ri spagetti qutisiga olib keladi, ya'ni monolitning murakkabligi xizmatlar o'rtasidagi aloqalarning murakkabligiga aylanadi. Mikroservis arxitekturasi faqat oddiy aloqa usullaridan foydalanadi.

Markazlashtirilmagan boshqaruv

Mikroservislar bo'yicha asosiy qarorlar mikroservislarni ishlab chiqayotgan odamlar tomonidan qabul qilinishi kerak. Bu erda asosiy qarorlar tanlovni anglatadi
dasturlash tillari, joylashtirish metodologiyasi, ommaviy interfeys shartnomalari va boshqalar.

Markazlashtirilmagan ma'lumotlarni boshqarish

Ilova yagona ma'lumotlar bazasiga tayanadigan standart yondashuv har bir aniq xizmatning o'ziga xos xususiyatlarini hisobga olmaydi. MSA turli texnologiyalardan foydalanishni o'z ichiga olgan markazlashtirilmagan ma'lumotlarni boshqarishni o'z ichiga oladi.

Infratuzilmani avtomatlashtirish

MSA uzluksiz joylashtirish va yetkazib berish jarayonlarini qo'llab-quvvatlaydi. Bunga faqat jarayonlarni avtomatlashtirish orqali erishish mumkin. Shu bilan birga, ko'p sonli xizmatlarni joylashtirish endi qo'rqinchli narsaga o'xshamaydi. Joylashtirish jarayoni zerikarli bo'lishi kerak. Ikkinchi jihat mahsulot muhitida xizmatlarni boshqarish bilan bog'liq. Avtomatlashtirishsiz turli xil operatsion muhitlarda ishlaydigan jarayonlarni boshqarish imkonsiz bo'lib qoladi.

Muvaffaqiyatsizlik uchun dizayn

Ko'p MSA xizmatlari muvaffaqiyatsizlikka uchraydi. Shu bilan birga, taqsimlangan tizimda xatolarni qayta ishlash ahamiyatsiz ish emas. Ilova arxitekturasi bunday nosozliklarga chidamli bo'lishi kerak. Rebekka Parsonsning fikricha, biz endi xizmatlar o‘rtasida jarayon ichidagi aloqadan foydalanmasligimiz juda muhim; o‘rniga biz aloqa uchun HTTP ga murojaat qilamiz, bu unchalik ishonchli emas.

Evolyutsion rivojlanish bilan arxitektura (Evolyutsion dizayn)

MSA tizimining arxitekturasi evolyutsion tarzda rivojlanishi kerak. Yagona xizmat chegaralariga kerakli o'zgarishlarni cheklash tavsiya etiladi. Boshqa xizmatlarga ta'sirini ham hisobga olish kerak. An'anaviy yondashuv bu muammoni versiyalash orqali hal qilishga urinishdir, ammo MSA versiyani ishlatishni taklif qiladi
oxirgi chora sifatida.

xulosa

Yuqoridagilarning barchasidan so'ng, biz mikroservislar nima ekanligini shakllantirishimiz mumkin. Mikroservis arxitekturasi - bu har biri o'z jarayonida ishlaydigan va engil mexanizmlar, ko'pincha HTTP resurs APIsi orqali o'zaro ta'sir qiladigan kichik xizmatlar to'plami sifatida yagona dasturni ishlab chiqishga yondashuv. Ushbu xizmatlar biznes imkoniyatlariga asoslanadi va ulardan to'liq foydalanish orqali mustaqil ravishda foydalanish mumkin
avtomatlashtirilgan joylashtirish mexanizmi. Turli xil dasturlash tillarida yozilishi va turli xil ma'lumotlarni saqlash texnologiyalaridan foydalanish mumkin bo'lgan ushbu xizmatlarni markazlashtirilgan boshqarishning minimal darajasi mavjud.

Arxitektura uslubini tanlash (3-qism)

2-qismni o'qing

Manba: www.habr.com

a Izoh qo'shish