MikroshĂ«rbimet — shpĂ«rthim kombinatorik versionesh

PĂ«rshĂ«ndetje, Habr! Po ju paraqes pĂ«rkthimin autoral tĂ« njĂ« artikulli MikroshĂ«rbimet – Eksplozioni Kombinatorik i Versioneve.
MikroshĂ«rbimet — shpĂ«rthim kombinatorik versionesh
Në kohët kur bota IT po kalon gradualisht në mikroshërbime dhe mjete si Kubernetes, një problem i vetëm bëhet gjithnjë e më i dukshëm. Ky problem është eksplozioni kombinatorik i versioneve të mikroshërbimeve. Megjithatë, komuniteti IT mendon se situata e sotme është ndjeshëm më e mirë se «Ferri i varësive» i brezit të mëparshëm të teknologjisë. Megjithatë, menaxhimi i versioneve të mikroshërbimeve është një problem shumë kompleks. Një nga dëshmitë për këtë mund të jenë artikuj si «Më kthe monolitin tim».

NĂ«se po e lexoni kĂ«tĂ« tekst dhe ende nuk e kuptoni problemin, lejoni qĂ« t'ju shpjegoj. Imagjinoni qĂ« produkti juaj pĂ«rbĂ«het nga 10 mikroshĂ«rbime. Tani imagjinoni se pĂ«r secilin prej kĂ«tyre mikroshĂ«rbimeve del 1 version i ri. VetĂ«m 1 version – shpresojmĂ« se tĂ« gjithĂ« mund tĂ« pajtohemi se Ă«shtĂ« njĂ« fakt mjaft trivial dhe i papĂ«rfillshĂ«m. Tani, megjithatĂ«, le tĂ« shikojmĂ« sĂ«rish nĂ« produktin tonĂ«. Duke pasur vetĂ«m njĂ« version tĂ« ri pĂ«r çdo komponent, tani kemi 2^10 – ose 1024 permutacione se si mund tĂ« pĂ«rbĂ«jmĂ« produktin tonĂ«.

NĂ«se ka ende moskuptim, lejoni qĂ« ta shpjegoj matematikisht. KĂ«shtu, kemi 10 mikroshĂ«rbime, çdo njĂ«ri merr njĂ« pĂ«rditĂ«sim. Pra, ne kemi 2 versione tĂ« mundshme pĂ«r çdo mikroshĂ«rbim (ose versionin e vjetĂ«r ose ate tĂ« ri). ΀ani, pĂ«r secilin nga komponentĂ«t e produktit mund tĂ« pĂ«rdorim cilĂ«ndo prej kĂ«tyre dy versioneve. Matematika, kjo Ă«shtĂ« e njĂ«jta si tĂ« kishim njĂ« numĂ«r binar prej 10 shenjash. PĂ«r shembull, le tĂ« themi se 1 Ă«shtĂ« versioni i ri, dhe 0 Ă«shtĂ« versioni i vjetĂ«r – atĂ«herĂ« njĂ« permutacion i mundshĂ«m mund tĂ« shĂ«nohet si 1001000000 – ku komponentĂ«t e parĂ« dhe tĂ« katĂ«rt janĂ« pĂ«rditĂ«suar, ndĂ«rsa tĂ« gjithĂ« tĂ« tjerĂ«t jo. Nga matematika e dimĂ« se njĂ« numĂ«r binar prej 10 shenjash mund tĂ« ketĂ« 2^10 ose 1024 vlera. Pra, ne konfirmuam shkallĂ«t e numrit me tĂ« cilin kemi tĂ« bĂ«jmĂ«.

Le tĂ« vazhdojmĂ« me reflektimin mĂ« tej – çfarĂ« do tĂ« ndodhte nĂ«se do tĂ« kishim 100 mikroshĂ«rbime dhe pĂ«r secilin 10 versione tĂ« mundshme? Situata bĂ«het shumĂ« e pakĂ«ndshme – tani kemi 10^100 permutacione – dhe kjo Ă«shtĂ« njĂ« numĂ«r gjigand. MegjithatĂ«, preferoj ta shpjegoj kĂ«tĂ« situatĂ« nĂ« kĂ«tĂ« mĂ«nyrĂ«, sepse tani nuk po fshihemi pas fjalĂ«ve si «kubernetes», por po e pĂ«rballim problemin ashtu siç Ă«shtĂ«.

Pse mĂ« fascinon kaq shumĂ« kjo problematikĂ«? NĂ« njĂ« masĂ« tĂ« caktĂ«, pĂ«r shkak se kur punoja mĂ« parĂ« nĂ« botĂ«n e NLP dhe AI, ne diskutonim shumĂ« rreth problemit tĂ« shpĂ«rthimit combinatorial 5-6 vjet mĂ« parĂ«. NdĂ«rsa versionet ishin vetĂ«m fjalĂ« dhe produktet ishin fjali dhe paragrafĂ«. Edhe pse problemet e NLP dhe AI mbeten deri nĂ« njĂ« masĂ« tĂ« madhe tĂ« pazgjidhura, duhet tĂ« pranojmĂ« se gjatĂ« viteve tĂ« fundit Ă«shtĂ« bĂ«rĂ« pĂ«rparim tĂ« konsiderueshĂ«m. (nĂ« mendimin tim, pĂ«rparimi do tĂ« mund tĂ« ishte mĂ«oi madh, nĂ«se njerĂ«zit nĂ« industri do t'u kushtonin pak mĂ« pak vĂ«mendje mĂ«simit tĂ« makina dhe pak mĂ« shumĂ« teknikave tĂ« tjera — por kjo Ă«shtĂ« njĂ« temĂ« tjetĂ«r).

TĂ« kthehemi nĂ« botĂ«n e DevOps dhe mikroservicĂ«ve. Na pret njĂ« problem i madh, qĂ« fshihet si njĂ« elefant nĂ« Kunstkamera — sepse ajo qĂ« dĂ«gjoj shpesh Ă«shtĂ« — "thjesht merr Kubernetes dhe Helm, dhe gjithçka do tĂ« jetĂ« mirĂ«!" Por jo, nuk do tĂ« jetĂ« mirĂ«, nĂ«se gjithçka e lĂ«mĂ« siç Ă«shtĂ«. PĂ«r mĂ« tepĂ«r, zgjidhja analitike e kĂ«tij problemi nuk duket e pranueshme pĂ«r shkak tĂ« kompleksitetit. Si nĂ« NLP, duhet sĂ« pari tĂ« afrohemi kĂ«saj problematike duke e ngushtuar fushĂ«n e kĂ«rkimit — nĂ« kĂ«tĂ« rast pĂ«rmes pĂ«rjashtimit tĂ« permutacioneve tĂ« vjetra.

NjĂ« nga gjĂ«rat qĂ« mund tĂ« ndihmojĂ« — kam shkruar vitin e kaluar pĂ«r nevojĂ«n pĂ«r tĂ« mbajtur njĂ« shpĂ«rndarje minimale ndĂ«rmjet versioneve tĂ« publikuara pĂ«r klientĂ«t. Gjithashtu Ă«shtĂ« e rĂ«ndĂ«sishme tĂ« theksohet se njĂ« proces CI/CD i mirĂ«punuar ndihmon shumĂ« nĂ« reduktimin e variacioneve. MegjithatĂ«, gjendja aktuale e CI/CD nuk Ă«shtĂ« mjaft e mirĂ« pĂ«r tĂ« zgjidhur problemin e permutacioneve pa ndihmĂ«n e veglave tĂ« tjera pĂ«r regjistrimin dhe ndjekjen e komponentĂ«ve.

ÇfarĂ« na nevojitet Ă«shtĂ« njĂ« sistem eksperimentesh nĂ« fazĂ«n e integrimit, ku do tĂ« mund tĂ« pĂ«rcaktonim faktorin e rrezikut pĂ«r çdo komponent, si dhe tĂ« kemi njĂ« proces automatizimi pĂ«r pĂ«rditĂ«simin e komponentĂ«ve tĂ« ndryshĂ«m dhe testimin pa ndĂ«rhyrjen e operatorit — pĂ«r tĂ« parĂ« se çfarĂ« funksionon dhe çfarĂ« jo.

Një sistem eksperimentesh i tillë mund të duket si më poshtë:

  1. Programuesit shkruajnĂ« teste (kjo Ă«shtĂ« njĂ« fazĂ« kritike — sepse nd otherwise ne nuk kemi njĂ« kriter vlerĂ«simi — ky Ă«shtĂ« si shĂ«nimi i tĂ« dhĂ«nave nĂ« mĂ«simin e makinĂ«s).
  2. Çdo komponent (projekt) merr sistemin e vet CI — ky proces Ă«shtĂ« sot mirĂ« i zhvilluar, dhe çështja e krijimit tĂ« njĂ« sistemi CI pĂ«r njĂ« komponent tĂ« vetĂ«m Ă«shtĂ« nĂ« masĂ« tĂ« madhe e zgjidhur.
  3. Sistemi i menaxhimit inteligjent mbledh rezultatet nga sistemet e ndryshme CI dhe kombinon projektet-komponentĂ« nĂ« njĂ« produkt pĂ«rfundimtar, ekzekuton testimin dhe nĂ« fund llogarit rrugĂ«n mĂ« tĂ« shkurtĂ«r pĂ«r tĂ« arritur funksionalitetin e dĂ«shiruar tĂ« produktit bazuar nĂ« komponentĂ«t ekzistues dhe faktorĂ«t e rrezikut. NĂ«se pĂ«rditĂ«simi nuk Ă«shtĂ« i mundur, ky sistem e njofton zhvilluesin pĂ«r komponentĂ«t e disponueshĂ«m dhe pĂ«r atĂ« ku ndodhet gabimi. Po e pĂ«rsĂ«ris edhe njĂ« herĂ«, se sistemi i testeve kĂ«tu Ă«shtĂ« kritik — pasi sistemi i integrimit pĂ«rdor testet si kriter vlerĂ«simi.
  4. Sistema CD, e cila pastaj merr të dhënat nga «Sistemi i menaxhimit inteligjent» dhe kryen përditësimin direkt. Ky fazë përfundon ciklin.

PĂ«r tĂ« pĂ«rmbledhur, pĂ«r mua njĂ« nga problemet mĂ« tĂ« mĂ«dha aktualisht Ă«shtĂ« mungesa e njĂ« «Sistemi tĂ« menaxhimit inteligjent», i cili lidh komponentĂ«t e ndryshĂ«m nĂ« njĂ« produkt dhe kĂ«shtu lejon tĂ« ndjekim se si Ă«shtĂ« ndĂ«rtuar produkti nĂ« tĂ«rĂ«si. Do mĂ« interesonin mendimet e komunitetit mbi kĂ«tĂ« çështje (spojler — aktualisht po punoj mbi njĂ« projekt Reliza, i cili mund tĂ« bĂ«het njĂ« sistem i tillĂ« inteligjent i menaxhimit).

NjĂ« gjĂ« e fundit qĂ« dua tĂ« pĂ«rmend — pĂ«r mua monoliti nuk Ă«shtĂ« i pranueshĂ«m pĂ«r ndonjĂ« projekt, edhe nĂ«se ka madhĂ«si mesatare. Kam njĂ« skepticizĂ«m tĂ« madh pĂ«r pĂ«rpjekjet pĂ«r tĂ« Acceleruar kohĂ«n e zbatimit dhe cilĂ«sinĂ« e zhvillimit duke u rikthyer nĂ« monolit. SĂ« pari, monoliti ka njĂ« problem tĂ« ngjashĂ«m menaxhimi komponentĂ«sh — mes bibliotekave tĂ« ndryshme, nga tĂ« cilat pĂ«rbĂ«het, por gjithçka nuk Ă«shtĂ« aq e dukshme dhe shfaqet kryesisht nĂ« kohĂ«n qĂ« zhvilluesit e shpenzojnĂ«. Pasoja e problemit tĂ« monolitit Ă«shtĂ« pamundĂ«sia faktike pĂ«r tĂ« bĂ«rĂ« ndryshime nĂ« kod — dhe shpejtĂ«sia shumĂ« e ngadalshme e zhvillimit.

MikroshĂ«rbimet pĂ«rmirĂ«sojnĂ« situatĂ«n, megjithatĂ« pastaj arkitektura e mikroshĂ«rbimeve pĂ«rballen me problemin e shpĂ«rthimit kombinator nĂ« fazĂ«n e integrimit. Po, nĂ« pĂ«rgjithĂ«si, ne e kemi shtrirĂ« tĂ« njĂ«jtin problem — nga faza e zhvillimit nĂ« fazĂ«n e integrimit. MegjithatĂ«, sipas mendimit tim, qasja e mikroshĂ«rbimeve pĂ«rsĂ«ri çon nĂ« rezultate mĂ« tĂ« mira, dhe ekipet arrijnĂ« rezultate mĂ« shpejt (ndoshta kryesisht pĂ«r shkak tĂ« zvogĂ«limit tĂ« madhĂ«sisĂ« sĂ« njĂ«si tĂ« zhvillimit — ose madhĂ«sisĂ« sĂ« grumbullit). MegjithatĂ«, kalimi nga monolitĂ«t nĂ« mikroshĂ«rbime ende nuk ka sjellĂ« pĂ«rmirĂ«sime tĂ« mjaftueshme nĂ« proces — eksplozioni kombinatorik i versioneve tĂ« mikroshĂ«rbimeve Ă«shtĂ« njĂ« problem i madh, dhe kemi mundĂ«si tĂ« mĂ«dha pĂ«r tĂ« pĂ«rmirĂ«suar situatĂ«n ndĂ«rsa e zgjidhim atĂ«.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster