paint-brush
"Mikroservislar juda zo'r" tuzog'iga tushmang va qachon monolitga yopishib olishni bilingtomonidan@berdysheva
Yangi tarix

"Mikroservislar juda zo'r" tuzog'iga tushmang va qachon monolitga yopishib olishni biling

tomonidan Mariia Berdysheva6m2025/01/08
Read on Terminal Reader

Juda uzoq; O'qish

Monolitni mikroservislarga ajratish jiddiy arxitektura o'zgarishi bo'lib, ehtiyotkorlik bilan ko'rib chiqish va rejalashtirishni talab qiladi. Strangler Fig naqshiga rioya qilish sizni bosqichma-bosqich jarayon bilan ta'minlaydi va butun transformatsiya davomida tizim barqarorligini ta'minlaydi. Bundan tashqari, modulli monolit nafaqat foydali tayyorgarlik bosqichi bo'lishi mumkin, balki sizni mikroservisni o'zgartirish qarorini qayta ko'rib chiqishga va tegishli operatsion murakkablikdan qochishga undashi mumkin bo'lgan foyda keltirishi mumkin.
featured image - "Mikroservislar juda zo'r" tuzog'iga tushmang va qachon monolitga yopishib olishni biling
Mariia Berdysheva HackerNoon profile picture

Monolitlar va mikroservislar ilovalarni yaratishda ikkita asosiy yondashuvdir. Ba'zi odamlar ularni mos ravishda meros va zamonaviy deb hisoblashadi. Lekin bu unchalik to'g'ri emas. Ulardan birini tanlash juda murakkab savol bo'lib, ularning ijobiy va salbiy tomonlari bor.


Aksariyat yangi ilovalar boshidanoq mikroservis bo'lishi shart emas. Monolit sifatida boshlash tezroq, osonroq va arzonroq, agar foydali bo'lsa, keyinroq mikroservislarga o'tish.


Vaqt o'tishi bilan, monolit ilovalar kamroq va kamroq texnik xizmat ko'rsatish imkoniyatiga ega bo'lib, ba'zi jamoalar muammoni hal qilishning yagona yo'li ularning ilovalarini mikroservislarga bo'lish orqali qayta ishlashni boshlash deb qaror qilishadi. Boshqa jamoalar bu qarorni faqat "mikroservislar ajoyib" deb qabul qilishadi. Bu jarayon juda ko'p vaqtni oladi va ba'zida undan ham ko'proq texnik xarajatlarni talab qiladi. Bunga kirishdan oldin, barcha ijobiy va salbiy tomonlarini diqqat bilan ko'rib chiqish va hozirgi monolit arxitektura chegaralariga erishganingizga ishonch hosil qilish juda muhimdir. Va unutmangki, qurishdan ko'ra sindirish osonroq.


Ushbu maqolada biz monolitlarni mikroservislar bilan solishtirmoqchi emasmiz. Buning o'rniga, biz sizga yordam beradigan fikrlar, naqshlar va tamoyillarni muhokama qilamiz:


  • joriy monolitingizdan eng yaxshisini oling va uni mikroservislarga kirishga tayyorlang;
  • monolitdan mikroservislarga uzluksiz o'tishni ta'minlash;
  • mikroservislar migratsiyasi bilan yana nima o'zgarishi mumkinligini tushuning.


Modulli monolit

Siz qilishingiz kerak bo'lgan birinchi narsa - loyihangizning tuzilishiga qarash. Agar sizda modullar bo'lmasa, ularni ko'rib chiqishingizni tavsiya qilaman. Ular sizni arxitekturangizni mikroservislarga o'zgartirishga majbur qilmaydi (bu yaxshi, chunki biz barcha tegishli texnik xizmat ko'rsatishdan qochishni xohlaymiz), lekin ulardan ko'p afzalliklarni oladi.


Loyihangizni avtomatlashtirish vositasiga (masalan, maven, gradle yoki boshqa) qarab, siz loyihangizni alohida, mustaqil modullarga bo'lishingiz mumkin. Ba'zi modullar boshqalar uchun umumiy bo'lishi mumkin, boshqalari esa ma'lum domen hududlarini qamrab olishi yoki ilovangizga mustaqil funksionallikni olib keladigan xususiyatga xos bo'lishi mumkin.


Bu sizga quyidagi afzalliklarni beradi:

  1. Ilovangizning ajratilgan qismlari.
  2. Xususiyatlarni mustaqil ravishda ishlab chiqish mumkin, ziddiyatlarni minimallashtirish.
  3. Yangi odamlarni jalb qilish ancha oson, chunki ular butun loyihani chuqur o'rganishga hojat yo'q; Buning o'rniga ular alohida qismlardan boshlashlari mumkin.
  4. Yaxshilangan test, chunki endi siz har bir modulni alohida sinab ko'rishingiz mumkin.
  5. Agar siz oxir-oqibat mikroservislarga o'tishingiz kerak bo'lsa, sizda buning uchun juda kuchli asos bor.


Ko'rib turganingizdek, modulli monolit har ikki dunyodan ham eng yaxshisini olishning yo'lidir. Bu bitta monolit ichida mustaqil mikroservislarni ishga tushirishga o'xshaydi, lekin garov mikroxizmatlarini qo'shimcha xarajatlardan qochadi. Sizda bo'lishi mumkin bo'lgan cheklovlardan biri bu turli modullarni mustaqil ravishda kengaytira olmaslikdir. Sizda eng ko'p yuklangan modul talab qiladigan darajada ko'p monolit nusxaga ega bo'lasiz, bu esa ortiqcha resurs sarflanishiga olib kelishi mumkin. Yana bir kamchilik - turli texnologiyalardan foydalanish cheklovlari. Masalan, siz Java, Golang va Python-ni modulli monolitda aralashtira olmaysiz, shuning uchun siz bitta texnologiyaga yopishib olishga majbur bo'lasiz (odatda bu muammo emas).


Modulli monolit va mikroservislar


Strangler Fig naqsh

Strangler Fig naqshini o'ylab ko'ring. U o'z nomini o'ralgan va oxir-oqibat uy egasining o'rnini bosadigan daraxtdan oladi. Xuddi shunday, naqsh eski dastur qismlarini yangi xizmatlar bilan birma-bir almashtirishni, eski tizimni sezilarli uzilishlarga olib kelmasdan modernizatsiya qilishni taklif qiladi.


Xavfli, birdaniga ta'mirlash o'rniga, siz tizimni parcha-parcha yangilaysiz. Bu usul katta, murakkab monolitlar bilan ishlashda foydali bo'ladi, ularni bir harakat bilan almashtirish juda qiyin. Strangler Fig naqshini qo'llash orqali jamoalar asta-sekin eski tizimdan voz kechishlari mumkin, shu bilan birga yangi tizimning o'sishini rag'batlantirish, xavflarni minimallashtirish va doimiy qiymat yetkazib berishni ta'minlash.


Unsplash-da Devid Klod surati


Strangler Fig naqshini amalga oshirish uchun siz uchta qadamni bajarishingiz kerak:


  1. O'zgartirish. Bu erda siz monolitdan qaysi qismni ajratib olishni aniqlaysiz va uni alohida mikroservis sifatida amalga oshirasiz. Zamonaviy texnologiyalardan foydalangan holda ushbu qismni qayta yozing va oldingi amalga oshirish muammolarini hal qiling. Buni yaxshiroq qilish uchun imkoniyatdan foydalaning.
  2. Birgalikda yashash. Yangi mikroxizmat ishlab chiqarishga tayyor bo'lganda, siz uni o'zingizning infratuzilmangizda boshqarasiz, bunda eski tatbiq etishingiz mumkin. Siz trafikni ma'lum bir nisbatda taqsimlaysiz, asta-sekin ko'proq va ko'proq trafikni yangi dasturga o'tkazasiz, lekin sizda har doim oldingi versiyangiz orqaga qaytish sifatida mavjud.
  3. Yo'q qilish. Biroz vaqt o'tgach, yangi mikroxizmatingiz etarlicha ishonchli ekanligiga ishonganingizda, barcha trafikni yangi mikroservisga o'tkazing va merosni olib tashlang.


Ushbu uchta qadamni bajarib, siz asta-sekin monolitni mikroservislarga aylantirasiz.


Strangler Fig naqsh


Strangler Fig naqshidan foydalanishning asosiy afzalliklari quyidagilardan iborat:


  • Asta-sekin migratsiya. Buzilish va tizimni o'z vaqtida, katta va xavfli to'liq ta'mirlashni boshlash o'rniga, naqsh sizga bosqichma-bosqich o'tishga imkon beradi. Siz tizimingizni asta-sekin yangilashingiz va ushbu transformatsiyani xususiyatni rivojlantirish rejalari bilan sinxronlashingiz mumkin. Misol uchun, siz monolitning ba'zi xususiyatlarni ishlab chiqish jiddiy ta'sir qiladigan qismini topishingiz va uni mikroservis migratsiyasi uchun nomzod sifatida tanlashingiz mumkin.
  • Uzluksiz yetkazib berish. Bu foyda oldingi bayonotdan kelib chiqadi. Modernizatsiya jarayoni sizning jamoangizga doimiy ravishda yangi xususiyatlarni taqdim etishiga to'sqinlik qilmaydi. Bir jamoa yangi xususiyatlarni ishlab chiqsa, boshqasi mustaqil modullarni qayta ishlaydi.
  • Xavfni yumshatish. Strangler Fig namunasi jamoaga tizimning muayyan qismlarini modernizatsiya qilishga e'tibor qaratishga yordam beradi. Bu diqqat jamoaga ma'lum sohalardagi tafsilotlarga ko'proq e'tibor qaratish, yuzaga kelishi mumkin bo'lgan muammolarni erta topish va dasturga umumiy ta'sirni kamaytirish imkonini beradi.


Muammolar va mulohazalar

Strangler Fig naqshini qo'llaganingizda, migratsiya strategiyasini diqqat bilan rejalashtirishingiz kerak. Bu birinchi navbatda qaysi komponentlarni almashtirishni aniqlash, eski va yangi qismlar o'rtasida to'g'ri integratsiyani ta'minlash va izchil ma'lumotlar modellarini saqlashni o'z ichiga oladi. Jamoalar, shuningdek, har bir almashtirishning borishi va ta'sirini kuzatish uchun aniq aloqa kanallari va monitoring tizimlarini yaratishi kerak.

Mikroservislar migratsiyasining oqibatlari

Yuqorida aytib o'tganimizdek, mikroservislarga o'tish foyda keltiradi. Biroq, u boshqa ko'plab narsalarni qiyinlashtiradi va qimmatroq qiladi.


Masalan, QA va Dev guruhlari mahalliy mashinalarda endi sinovdan o'tkaza olmaydigan vaziyatga duch kelishlari mumkin, chunki mahalliy darajada bir nechta mikroservislarni ishga tushirish imkoniyati cheklangan. Yoki sizning jurnallaringiz unchalik tushunarsiz bo'lib qolishi mumkin, chunki bitta xizmat bitta oqimni qayta ishlash o'rniga, bir nechta xizmatlar uni hozir qayta ishlaydi. Natijada, to'liq jurnallar ketma-ketligini ko'rish uchun siz tegishli asbob-uskunalar va kuzatuvni amalga oshirishingiz kerak.


Keling, siz ko'rib chiqishingiz kerak bo'lgan bir nechta muhim jihatlarni muhokama qilaylik va mikroservislaringizni o'zgartirishni boshlashdan oldin rejalashtirishingiz mumkin.


Joylashtirish va infratuzilma

Monolit va mikroservislar turli minimal infratuzilma talablariga ega.


Monolit ilovasini ishga tushirishda siz odatda oddiyroq infratuzilmani saqlab qolishingiz mumkin. Virtual mashinalar yoki PaaS yechimlari (masalan, AWS EC2) kabi variantlar kifoya qiladi. Bundan tashqari, siz o'lchov, konfiguratsiya, yangilash va monitoringning ko'p qismini qo'lda yoki oddiy vositalar yordamida boshqarishingiz mumkin. Natijada, siz murakkab infratuzilma sozlamalaridan qochishingiz va DevOps bo'yicha keng ko'lamli tajribani talab qilmasdan ishlab chiquvchilar yoki yordamchi muhandislarga tayanishingiz mumkin.


Biroq, mikroservislar arxitekturasini qabul qilish bu dinamikani o'zgartiradi. Xizmatlar soni ortib borayotganligi sababli, qo'lda, amaliy yondashuv tezda amaliy bo'lmaydi. Bir nechta xizmatlarni samarali tartibga solish, masshtablash va boshqarish uchun sizga Kubernetes kabi maxsus platformalar yoki hech bo‘lmaganda yangi murakkablik va operatsion talablarni joriy qiluvchi boshqariladigan konteyner xizmati kerak bo‘ladi.

Platforma qatlami

Monolit ilovasini saqlash nisbatan oddiy. Agar CVE paydo bo'lsa, siz ta'sirlangan bog'liqlikni bir joyda yangilaysiz. Tashqi xizmat aloqasini standartlashtirish kerakmi? Bitta o'ramni amalga oshiring va uni butun kod bazasida qayta ishlating.


Mikroservislar muhitida bu oddiy vazifalar ancha murakkablashadi. Ilgari ahamiyatsiz bo'lgan narsa endi bir nechta mustaqil xizmatlar bo'yicha o'zgarishlarni muvofiqlashtirishni o'z ichiga oladi, ularning har biri o'z hayot aylanishi va bog'liqliklari bilan. Qo'shimcha murakkablik vaqt va resurslarda xarajatlarni oshiradi. Va agar sizda ko'plab jamoalar va turli xil xizmatlar mavjud bo'lsa, vaziyat yomonlashadi.


Shu sababli, ko'plab tashkilotlar odatda platforma jamoasi tomonidan boshqariladigan maxsus platforma qatlamini joriy qiladi. Maqsad - barcha mikroservislar meros bo'lishi mumkin bo'lgan poydevor yaratish: umumiy bog'liqliklarni boshqarish, standartlashtirilgan naqshlarni amalga oshirish va tayyor o'ramlarni taqdim etish. Ushbu elementlarni platforma darajasida birlashtirib, siz texnik xizmat ko'rsatishni sezilarli darajada soddalashtirasiz va butun tizim bo'ylab izchillikni ta'minlaysiz.

Xulosa

Monolitni mikroservislarga ajratish jiddiy arxitektura o'zgarishi bo'lib, ehtiyotkorlik bilan ko'rib chiqish va rejalashtirishni talab qiladi.


Ushbu maqolada biz unga tayyorgarlik ko'rish va jarayonni muammosiz bajarish uchun qanday qadamlar qo'yishingiz mumkinligini muhokama qildik. Strangler Fig naqshiga rioya qilish sizni bosqichma-bosqich jarayon bilan ta'minlaydi va butun transformatsiya davomida tizim barqarorligini ta'minlaydi. Bundan tashqari, modulli monolit nafaqat foydali tayyorgarlik bosqichi bo'lishi mumkin, balki sizni mikroservisni o'zgartirish qarorini qayta ko'rib chiqishga va tegishli operatsion murakkablikdan qochishga undashi mumkin bo'lgan foyda keltirishi mumkin.