Microservices - таркиши комбинатсияи версияҳо

Салом, Хабр! ба диккати шумо пешниход мекунам тарҷумаи мақолаи муаллиф Microservices - таркиши комбинатсияи версияҳо.
Microservices - таркиши комбинатсияи версияҳо
Дар замоне, ки ҷаҳони IT тадриҷан ба хидматрасонӣ ва абзорҳо ба монанди Kubernetes ҳаракат мекунад, танҳо як мушкилот бештар ва бештар ба назар мерасад. Ин мушкилот - таркиши комбинат версияҳои microservice. Бо вуҷуди ин, ҷомеаи IT мӯътақид аст, ки вазъи кунунӣ аз он беҳтар аст "Дӯзахи вобастагӣ" технологияҳои насли қаблӣ. Бо вуҷуди ин, версияи хидматрасонии хурд як мушкили хеле мураккаб аст. Як далели ин метавонад мақолаҳои монанди "Ба ман монолитамро баргардонед".

Агар шумо то ҳол бо хондани ин матн мушкилотро нафаҳмида бошед, бигзор ман шарҳ диҳам. Фарз мекунем, ки маҳсулоти шумо аз 10 хидматрасонии хурд иборат аст. Акнун фарз кунем, ки барои ҳар яке аз ин микросервисҳо 1 версияи нав бароварда шудааст. Танҳо 1 версия - Ман умедворам, ки ҳамаи мо метавонем розӣ шавем, ки ин як далели хеле ночиз ва ночиз аст. Ҳоло бошад, биёед бори дигар ба маҳсулоти худ назар андозем. Танҳо бо як версияи нави ҳар як ҷузъ, мо ҳоло 2^10 - ё 1024 тағирот дорем, ки чӣ гуна маҳсулотамонро таркиб додан мумкин аст.

Агар то ҳол ягон нофаҳмӣ вуҷуд дошта бошад, биёед математикаро вайрон кунам. Ҳамин тавр, мо 10 хидматрасонии хурд дорем, ки ҳар кадоми онҳо як навсозӣ мегиранд. Яъне, мо барои ҳар як микросервис 2 версияи имконпазир мегирем (хоҳ кӯҳна ё нав). Ҳоло, барои ҳар як ҷузъи маҳсулот, мо метавонем яке аз ин ду версияро истифода барем. Аз ҷиҳати риёзӣ ин ҳамон аст, ки гӯё мо як адади дуӣ аз 10 рақам дошта бошем. Масалан, биёед бигӯем, ки 1 версияи нав аст ва 0 версияи кӯҳна аст - пас як ивазкунии имконпазирро метавон ҳамчун 1001000000 ишора кард - дар он ҷо ҷузъҳои 1 ва 4-ум нав карда мешаванд ва ҳама дигар не. Аз математика мо медонем, ки рақами дуии 10-рақама метавонад 2^10 ё 1024 арзиш дошта бошад. Яъне мо миқёси шумораеро, ки бо он сарукор дорем, тасдиқ кардем.

Биёед андешаҳои худро минбаъд идома диҳем - чӣ мешавад, агар мо 100 микросервис дошта бошем ва ҳар кадом 10 версияи имконпазир дошта бошем? Вазъият хеле ногувор мегардад - мо ҳоло 10 ^ 100 тағирот дорем - ин рақами бузург аст. Аммо, ман ин вазъро чунин номгузорӣ карданро афзалтар медонам, зеро ҳоло мо дигар дар паси калимаҳое мисли "кубернетес" пинҳон намешавем, балки бо мушкилот рӯ ба рӯ мешавем.

Чаро ман ба ин мушкилот ин қадар шавқ дорам? Қисман аз он сабаб, ки мо қаблан дар ҷаҳони NLP ва AI кор карда будем, мо тақрибан 5-6 сол пеш проблемаи таркиши комбинаториро бисёр муҳокима карда будем. Танҳо ба ҷои версияҳо мо калимаҳои алоҳида доштем ва ба ҷои маҳсулот мо ҷумлаҳо ва параграфҳо доштем. Ва гарчанде ки мушкилоти NLP ва AI асосан ҳалношуда боқӣ мондаанд, бояд эътироф кард, ки дар тӯли чанд соли охир пешрафти назаррас ба даст оварда шудааст. (ба фикри ман, пешрафт ба даст овардан мумкин будоБеҳтар мебуд, агар одамони соҳа ба омӯзиши мошинсозӣ ва каме бештар ба техникаи дигар аҳамият медоданд - аммо ин аллакай аз мавзӯъ аст).

Биёед ба ҷаҳони DevOps ва микросервисҳо баргардем. Мо бо мушкилоти бузурге рӯ ба рӯ мешавем, ки худро ҳамчун фил дар Кунсткамера маскан мекунад - зеро он чизе ки ман бисёр вақт мешунавам, ин аст, ки "танҳо кубернетҳо ва рульро гиред ва ҳама чиз хуб мешавад!" Аммо не, агар ҳама чиз мисли пештара монад, ҳамааш хуб намешавад. Гузашта аз ин, ҳалли таҳлилии ин мушкилот аз сабаби мураккабии худ қобили қабул нест. Тавре ки дар NLP, мо бояд пеш аз ҳама ба ин мушкилот тавассути танг кардани доираи ҷустуҷӯ - дар ин ҳолат, бо бартараф кардани тағироти кӯҳна муроҷиат кунем.

Яке аз чизҳое, ки метавонад кӯмак кунад, чизест, ки ман соли гузашта навишта будам дар бораи зарурати нигоҳ доштани фарқияти ҳадди ақали байни версияҳои барои муштариён интишоршуда. Инчунин қайд кардан муҳим аст, ки раванди хуб тарҳрезишудаи CI/CD барои коҳиш додани тағирот кӯмак мекунад. Бо вуҷуди ин, вазъи кунунии корҳо бо CI/CD барои ҳалли мушкилоти ивазкунӣ бидуни асбобҳои иловагӣ барои баҳисобгирӣ ва пайгирии ҷузъҳо кофӣ нест.

Он чизе, ки ба мо лозим аст, системаи таҷриба дар марҳилаи ҳамгироӣ аст, ки дар он мо метавонем омили хавфро барои ҳар як ҷузъ муайян кунем ва инчунин як раванди автоматикунонидашудаи навсозии ҷузъҳои гуногун ва озмоиш бидуни дахолати оператор дошта бошем - бубинем, ки чӣ кор мекунад ва чӣ не.

Чунин системаи таҷрибаҳо метавонад чунин бошад:

  1. Таҳиягарон санҷишҳо менависанд (ин марҳилаи муҳим аст - зеро дар акси ҳол мо меъёри арзёбӣ надорем - ин ба монанди тамғагузории маълумот дар омӯзиши мошинсозӣ аст).
  2. Ҳар як ҷузъи (лоиҳа) системаи CI-и худро мегирад - ин раванд ҳоло хуб таҳия шудааст ва масъалаи эҷоди системаи CI барои як ҷузъ асосан ҳал шудааст.
  3. "Системаи интегратсияи интеллектуалӣ" натиҷаҳои системаҳои гуногуни CI ҷамъоварӣ мекунад ва лоиҳаҳои ҷузъиро ба маҳсулоти ниҳоӣ ҷамъ мекунад, санҷиш мегузаронад ва дар ниҳоят роҳи кӯтоҳтаринро барои ба даст овардани функсияҳои дилхоҳи маҳсулот дар асоси ҷузъҳои мавҷуда ва омилҳои хавф ҳисоб мекунад. Агар навсозӣ имконнопазир бошад, ин система таҳиягаронро дар бораи ҷузъҳои мавҷуда огоҳ мекунад ва кадоме аз онҳо боиси хатогӣ мегардад. Бори дигар, дар ин ҷо системаи тестӣ аҳамияти муҳим дорад - зеро системаи ҳамгироӣ санҷишҳоро ҳамчун меъёри арзёбӣ истифода мебарад.
  4. Системаи CD, ки баъдан маълумотро аз System Integration Smart қабул мекунад ва мустақиман навсозӣ мекунад. Ин марҳила давраро ба итмом мерасонад.

Хулоса, барои ман яке аз мушкилоти калонтарини ҳозира набудани чунин «Системаи интегратсияи интеллектуалӣ» мебошад, ки ҷузъҳои гуногунро ба маҳсулот мепайвандад ва ба ин васила ба шумо имкон медиҳад пайгирӣ кунед, ки чӣ гуна маҳсулот дар маҷмӯъ якҷоя карда мешавад. Ман ба андешаҳои ҷомеа дар ин бора шавқ дорам (спойлер - ман ҳоло дар болои лоиҳа кор мекунам Релиза, ки метавонад ба чунин системаи интегратсияи оқилона табдил ёбад).

Як чизи охирине, ки ман мехоҳам зикр намоям, ин аст, ки барои ман монолит барои ҳама гуна лоиҳаи ҳатто андозаи миёна қобили қабул нест. Барои ман, кӯшишҳо барои тезонидани вақт ва сифати коркард тавассути бозгашт ба як монолит боиси шубҳаи зиёд мешаванд. Аввалан, як монолит мушкилоти ба ин монанд дар идоракунии ҷузъҳо дорад - дар байни китобхонаҳои гуногун, ки аз он иборат аст, аммо ҳамаи ин чандон назаррас нест ва пеш аз ҳама дар вақти сарфкардаи таҳиягарон зоҳир мешавад. Оқибати мушкилоти монолитӣ имконнопазирии виртуалии ворид кардани тағирот ба код ва суръати хеле сусти рушд мебошад.

Микросервисҳо вазъро беҳтар мекунанд, аммо баъд меъмории микросервис дар марҳилаи ҳамгироӣ бо мушкилоти таркиши комбинат рӯбарӯ мешавад. Оре, умуман, мо як масъаларо аз мархалаи тараккиёт ба мархалаи интеграция гузаронидем. Аммо, ба андешаи ман, равиши микросервисҳо ҳоло ҳам ба натиҷаҳои беҳтар оварда мерасонад ва дастаҳо ба натиҷаҳо зудтар ноил мешаванд (эҳтимолан асосан аз ҳисоби кам кардани андозаи воҳиди рушд - ё андозаи партия). Бо вуҷуди ин, гузаштан аз монолит ба хидматҳои микросервис равандро ҳанӯз ба қадри кофӣ такмил надодааст - таркиши комбинатсияи версияҳои микросервис як мушкили бузург аст ва мо барои беҳтар кардани вазъ ҳангоми ҳалли он потенсиали зиёд дорем.

Манбаъ: will.com

Илова Эзоҳ