Микросервисҳо як роҳи шикастани як барномаи калон ба модулҳои ба ҳам пайвастшуда мебошанд, ки бо ҳамдигар тавассути API оддӣ муошират мекунанд.
Вақтҳои охир танҳо одамони гунг дар бораи хидматрасонии хурд ҳарф намезананд. Ин торафт бештар маъмул мегардад. Услуби меъмории модулӣ ба назар мерасад, ки махсусан барои муҳити абрӣ мувофиқ аст ва маъруфияти он меафзояд. Пеш аз он ки ба тафсилот ворид шавем, биёед ба ҳама чиз бо чашми парранда назар андозем . Аз ин рӯ: Микросервисҳо як роҳи шикастани як лоиҳаи калон ба модулҳои хурд, мустақил ва ба ҳам пайвастшуда мебошанд. Модулҳои мустақил барои вазифаҳои дақиқ муайяншуда ва дискретӣ масъуланд ва бо ҳамдигар тавассути API оддӣ ва дастрас муошират мекунанд. Ба ибораи дигар, микросервисҳо танҳо як услуби дигари меъморӣ барои тарроҳии мураккаб, асосан барномаҳои веб мебошанд. Аммо дар бораи қарорҳои мавҷудаи меъморӣ, ба монанди SOA (архитектураи ба хидматрасонӣ нигаронидашуда) чӣ бад аст? Аксарияти қарорҳои муосири корхона, ки бо истифода аз SOA навишта шудаанд, хеле хуб кор мекунанд. Ин шояд вакти хубе бошад, ки дар бораи баъзе душворихое, ки дар ин рузхо саноат дучори он аст, сухан ронем... Биёед, бо мисоли оддй сар кунем. Фарз мекунем, ки ман бояд як барномаи классикии дар Java навишташударо иҷро кунам. Аввал ман интерфейси корбарро таҳия мекунам, баъд қабати мантиқии тиҷорӣ бо якчанд ҷузъҳо, ки бо UI мутақобила мекунанд ва дар ниҳоят қабати пойгоҳи додаҳо, ки ба пойгоҳи додаҳои доимӣ дастрас хоҳанд буд. Ҳоло мувофиқи он ки ман мехоҳам барномаро иҷро кунам, ман WAR/EAR/JAR эҷод мекунам ва онро дар server насб мекунам (ба монанди JBoss, Tomcat ё WebLogic). Азбаски ин ҳама дар як ҷо анҷом дода мешавад, ман як барномаи монолитӣ мегирам, ки ин маънои онро дорад, ки ҳамаи ҷузъҳо дар як ҷо ҳастанд... Мисол дар расм:
Эҳтимол, шумо аллакай бо ин равиш шинос ҳастед ва онро истифода бурдаед, аммо идея ин аст, ки ин мисолро истифода баред, то нишон диҳад, ки таҳиягарон бо истифода аз ин ҳалли меъморӣ бо чӣ мушкилот дучор хоҳанд шуд. Аризаи монолитӣ: мушкилот
God Microservices барои наҷот Яке аз хусусиятҳои муҳимтарин дар ҳама гуна ҳалли меъморӣ миқёспазирӣ мебошад. Вақте ки ман бори аввал микросервисҳоро меомӯзам, ман дидам, ки ҳама чиз ба иқтибосҳо аз китоби "Санъати миқёспазирӣ" монанд аст. Ин ибтидо ва ҷои хубест барои муҳокима. Ин китоб модели ба истилоҳ "Cube Scalability" -ро муайян мекунад, ки системаи миқёспазирии сеченакаро тавсиф мекунад:
Тавре ки шумо мебинед, меҳвари X "миқёси уфуқӣ" -ро тавсиф мекунад (ки мо дидаем, барои меъмории монолитӣ низ дастрас аст), меҳвари Y миқёсро ба маънои ҷудо кардани ҷузъҳои гуногуни хидматрасонӣ ифода мекунад . Идеяи меҳвари Z вақте фаҳмида мешавад, ки маълумот тақсим карда мешавад ва барнома дархостҳоро ба он ҷое, ки маълумот ҷойгир аст, мефиристад. Яъне на ҳама дар як ҷо ҳастанд. Идеяи меҳвари Y ҳамон чизест, ки мо ба таври муфассал тамаркуз хоҳем кард. Ин меҳвар таҷзияи функсионалӣ мебошад . Дар ин стратегия вазифаҳои гуногунро метавон ҳамчун хидматҳои мустақил баррасӣ кард. Аз ин рӯ, бо васл кардани тамоми барнома танҳо вақте ки ҳама чиз анҷом дода мешавад, таҳиягарон метавонанд хидматҳои инфиродӣро новобаста аз ҳамдигар насб кунанд ва интизор нашаванд, ки дигарон кор дар модулҳои худ анҷом диҳанд. Ин на танҳо вақти таҳияро беҳтар мекунад, балки инчунин чандириро барои тағир додан ва аз нав пайваст кардан бидуни ташвиш дар бораи боқимондаи ҷузъҳои барнома пешниҳод мекунад. Биёед ин диаграммаро бо диаграммаи монолитии қаблӣ муқоиса кунем:
Хидматҳои хурд: Манфиатҳо Манфиатҳои хидматрасонии хурд барои итминон додани таҳиягарони корхона, аз қабor Amazon, Netflix, Ebay ба истифодаи ин равиш кофӣ мебошанд. Баръакси замимаҳои меъмории монолитӣ, хидматрасонии хурд:
- Вақте ки барнома афзоиш меёбад, миқдори рамзи навишташуда зиёд мешавад, ки метавонад ҳар дафъае, ки шумо онро кушоед, муҳити таҳияро аз ҳад зиёд бор кунед. Ин бешубҳа самаранокии таҳиягарро коҳиш медиҳад.
- Азбаски ҳама чиз бояд дар як ҷо васл карда шавад, ин ба он оварда мерасонад, ки гузариш ба забони дигари барномасозӣ ё гузаштан ба технологияҳои дигар мушкилоти бузург аст. Масалан, шумо дар Java ариза навиштед ва пас аз чанде Котлин баромад ва шумо мехостед онро ба он дубора нависед, зеро он
ҳамчунсардтар, беҳтар ва тезтар пешбарӣ карда шуд. Бо як барномаи монолитӣ, ҳатто фикр кардан дар бораи рефакторинг дарди воқеиро ба бор меорад, на аз худи раванд. Дар айни замон барномаҳои зиёде мавҷуданд, ки бо ин роҳ сохта шудаанд ва шумораи сатрҳои code бениҳоят аҷиб аст. - Агар яке аз ҷузъҳо бо ягон сабаб корашро
қатъ кунад, тамоми барнома низ вайрон мешавад. Тасаввур кунед, ки як барномаи веб мавҷуд аст, ки дорои модулҳои монанди авторизатсия, пардохт, таърих ва ғайра мебошад. Ва аз чй сабаб бошад, ки яке аз онхо мешиканад. Ин танҳо як зарба барои тиҷорат ва дар натиҷа барои таҳиягарон аст. - Миқёси як барномаи монолитиро танҳо тавассути баланд бардоштани замимаи дигари ҳамон намуд ба даст овардан мумкин аст. Аммо чӣ мешавад, агар ба шумо танҳо як ҷузъро васеъ кардан лозим аст, на тамоми барнома. Чӣ қадар захираҳо бехуда сарф мешаванд?...
- Ин метавонад ба раванди таҳия ва насби барнома таъсири калон расонад. Чӣ қадаре ки барнома калонтар бошад, ҳамон қадар муҳимтар аст, ки таҳиягарон метавонанд барномаро ба қисмҳои хурдтари корӣ тақсим кунанд. Азбаски ҳамаи модулҳо дар як барномаи монолитӣ ба ҳам пайвастанд, таҳиягарон наметавонанд ин модулҳоро новобаста аз ҳамдигар кор/васл кунанд. Азбаски таҳиягарон аз ҳамдигар вобастаанд, вақти таҳия зиёд мешавад.
- Изолятсияи нокомии ҷузъҳоро беҳтар мекунад: Барномаҳои калон метавонанд ҳатто дар сурати ноком шудани як модул кори самаранокро идома диҳанд.
- Уҳдадории барномаро ба як стек технологӣ нест мекунад: агар шумо хоҳед, ки стеки технологияи навро дар ягон хидмат санҷед, пеш равед. Вобастагӣ нисбат ба як монолитӣ хеле сабуктар хоҳад буд ва баргардонидани ҳама чиз низ осонтар хоҳад буд. Чӣ қадаре ки code дар як барнома камтар бошад, кор кардан ҳамон қадар осонтар аст.
- Барои кормандони нав фаҳмидани функсияҳои хидматро хеле осон мекунад.
- Таҳияи системаҳои тақсимшуда метавонад душвор бошад. Бо ин ман дар назар дорам, ки ҳама ҷузъҳо ҳоло хидматҳои мустақил мебошанд - ба шумо лозим аст, ки дархостҳоеро, ки байни модулҳо мегузаранд, хеле бодиққат ҳал кунед. Мумкин аст сенарияе вуҷуд дошта бошад, ки як модул ҷавоб намедиҳад ва шуморо маҷбур мекунад, ки codeи иловагӣ нависед, то аз садама дучор шавед. Ин метавонад душвортар шавад, агар зангҳои дурдаст ба таъхир ҳассос бошанд .
- Якчанд пойгоҳи додаҳо ва идоракунии транзаксия метавонад дарди воқеӣ бошад.
- санҷиши барномаҳои микросервис метавонад душвор бошад. Бо истифода аз як барномаи монолитӣ, мо танҳо бояд бойгонии WAR/EAR/JAR-ро дар server иҷро кунем ва боварӣ ҳосил кунем, ки он ба пойгоҳи додаҳо пайваст аст. Ва дар хидматҳои хурд, ҳар як хидмати инфиродӣ бояд пеш аз оғози санҷиш оғоз шавад.
- Насб кардани замимаҳо метавонад душвор бошад. Онҳо метавонанд ҳамоҳангсозӣ дар атрофи хидматҳои сершуморро талаб кунанд, ки насб кардан ба мисли контейнери WAR осон нест.
GO TO FULL VERSION