Hozirda dasturiy taminot olamida 2 ta ko'p asosiy dasturiy taminot tuzish usuli mavjud.
Biri bu Manalit (Monolithic) tizim lar, bunday tizimlarda bizda bitta katta Dastur bo'ladi misol uchun qandaydir streem tizim hudi YouTube ga o'xshagan va bu tizimda barcha Kompanentlar (Domian, Entity) lar qatnashgan bo'ladi va ular bir derectoriya, bir server va bir Malumotlar omborini bilan ishlashadi.
ikkinchisi bu MicroService tizimlar bunda biz dasturni mantiqiy bo'laklarga ajratamiz va har bir Bo'lak o'zini hayoti bilan yashaydi va alohida rivojlanishi mumkin agar biz YouTube ni misol qilib oladigan bo'lsak biz bu tizimda Foydalanuvchilar bilan ishlashni alohida service ga ko'chirishimiz mumkin va u bilan kerak vaqtda oddiy http so'rov orqali ishlashimiz mimkin.
Afzallik va kamchiliklaк.
Keling Microservice lardan boshlasak.
Afzalliklar
1) Microservice lar kengaytirsh uchun juda qulay chunki agarda har qatta qunt bilan qilinsa Microservice ni qollab quvvatlash osonroq bo'ladi, chunki har bir MicroService o'zining ish faoliyatiga javob beradi.
2) Har bir Microservice ning o'z hayoti mavjud va alohida rivojlanishi mumkin.
3) Dasturchi uchun Biznes protseslarni chunish bir muncha osonlashadi va Proekt ga ko'nikish jarayoni tezlashadi.
4) Sizda bir emas bir nechta tillarni qo'lash imkoniyati bo'ladi misol sizda PHP va Node.js dasturchilar bo'lsa ularni aynan PHP yoki Node.js ga o'tishlari shart emas. Lekin bu yerda albatta proektdan kelib chiqib qaror qilinadi.
Kamchilik.
1) Birinchi noqulayliklardan biri bu malumotlarni service lar o'rtasida to'g'ri va to'liqligini taminlash. Chunki agar sizda bir nechta service lar bo'lsa ular o'rtasidagi aloqa uzulishi nohush oqibatlarga olib kelishi mumkin. Chunki bizda Malumotlar ombori boshqa boshqa service larda bo'lgani uchun malomotlarning to'g'ri va to'liqligini taminlash uchun bazi mehanizimlarni qo'lashimizga to'g'ri keladi
2) Biznes tarafdan agar start-up bo'lsak va endi ishimizni boshlamoqchi bo'lsak Microservice lar bizga qimmatga tushadi sababi ularni boshqarish va development uchun biz ko'proq mablag' ketkazishimiz mumkin chunki Microservice lar ko'proq mablag' talab qiladi.
Manalit (Monolithic)
Afzalliklar
1) Bir server va bir dasturiy tamonit bo'lgani uchun debug qilish bir muncha osonroq.
2) Resurslar tarafidan ham boshlanishida Manalit bizga arzonroqqa tushadi lekin bu faqat boshlanishida keyinchalik holat o'zgarishi mumkin.
3) Malumotlar Ombori bir bo'lgani uchun malumotlarni saqlashda va o'zgartirishimizda muammolar kamroq bo'ladi chunki bir transaksiya ichida malumotlar bilan ishlashimiz mumkin.
4) Monalit ni qo'lab quvatlash uchun boshdia biz kamroq dasturchi yolashimiz mumkin, Microsewrvice ga qaganda bu ancha qulayroq, lekin bu holatham Proekt o'sishiga qarab o'zgarishi mumkin.
Kamchilik.
1) Dasturiy ta'minot shunchalik kattalashib ketishi mumkin ki uni qo'llab quvatlash qiyinlashihsi mumkin bunga sabab Model (Domian, Entity) lar o'rtasidagi juda katta bog'liq lik bu dasturni kengaytirish uchun muammolar tug'dirishi mumkin.
2) Biznes protseslarni chunish qiyinlashib ketishi mumkin bu ham birinchi muammodan kelib chiqadi.
Bu mening oz bo'lsada tajribamdan kelib chiqib aytilgan fikrlar. Balki fikrlarimda chunarsizlik bo'lishi mumkin aytga buyurmaysiz. Lekin hozirda Microservice lar ancha hype da, lekin hu degani Manalit bu yomon arxitektura degani emas Manalit ni ham juda yaxshi holatga olib kelish mumkin SAO, Module Manalit degan tushunchalar bor va shu bilan bir qatorda Microservice larni ham juda yomon ahvolga keltirish mumkin bu albatta dasturiy taminot Arxitektorining tajribasi, soft va hard skillariga bog'liq. Bu mening fikr;arim agarda sizda boshqa fikrlar bo'lsa izohda qoldirishingiz mumkin.