Microservices - eng kombinatoresch Explosioun vu Versiounen

Moien, Habr! Ech presentéieren Iech op Är Opmierksamkeet Auteur d'Iwwersetzung vum Artikel Microservices - Kombinatoresch Explosioun vu Versiounen.
Microservices - eng kombinatoresch Explosioun vu Versiounen
Zu enger Zäit wou d'IT Welt sech lues a lues a Richtung Mikroservicer an Tools wéi Kubernetes beweegt, gëtt nëmmen ee Problem ëmmer méi opfälleg. Dëse Problem - kombinatoresch Explosioun microservice Versiounen. Trotzdem mengt d'IT Gemeinschaft datt déi aktuell Situatioun vill besser ass wéi "Ofhängegkeet Hell" virdrun Generatioun vun Technologie. Wéi och ëmmer, Versioune vu Mikroservicer ass e ganz komplexe Problem. Ee Beweis dofir kann Artikele wéi "Gëff mir mäi Monolith zréck".

Wann Dir de Problem nach ëmmer net versteet andeems Dir dësen Text liest, loosst mech erklären. Loosst eis soen datt Äert Produkt aus 10 Mikroservicer besteet. Loosst eis elo unhuelen datt 1 nei Versioun fir all vun dëse Mikroservicer verëffentlecht gëtt. Nëmmen 1 Versioun - ech hoffen mir kënnen all d'accord sinn datt dëst e ganz triviale an onbedeitende Fakt ass. Elo kucke mer awer nach eng Kéier op eise Produit. Mat just enger neier Versioun vun all Komponent hu mir elo 2^10 - oder 1024 Permutatiounen wéi eise Produkt ka komponéiert sinn.

Wann et nach ëmmer e Mëssverständnis gëtt, loosst mech d'Mathematik ofbriechen. Also hu mir 10 Mikroservicer, jidderee kritt een Update. Dat ass, mir kréien 2 méiglech Versioune fir all Mikroservice (entweder al oder nei). Elo, fir jidderee vun de Produktkomponenten, kënne mir entweder vun dësen zwou Versiounen benotzen. Mathematesch ass et d'selwecht wéi wa mir eng binär Zuel vun 10 Ziffere hätten. Zum Beispill, loosst eis soen datt 1 déi nei Versioun ass, an 0 déi al Versioun ass - da kann eng méiglech Permutatioun als 1001000000 bezeechent ginn - wou déi 1. a 4. Komponenten aktualiséiert ginn, an all déi aner net. Vun der Mathematik wësse mer datt eng 10-Ziffer binär Zuel 2^10 oder 1024 Wäerter kann hunn. Dat ass, mir hunn d'Skala vun der Zuel bestätegt, mat där mir ze dinn hunn.

Loosst eis weider Begrënnung weiderféieren - wat geschitt wa mir 100 Mikroservicer hunn an all 10 méiglech Versiounen hunn? Déi ganz Situatioun gëtt zimlech désagréabel - mir hunn elo 10^100 Permutatiounen - wat eng enorm Zuel ass. Ech bezeechnen dës Situatioun awer léiwer esou, well mir elo net méi hannert Wierder wéi "kubernetes" verstoppen, mä éischter mat dem Problem wéi et ass.

Firwat sinn ech esou faszinéiert vun dësem Problem? Deelweis well mir virdru an der Welt vun NLP an AI geschafft hunn, hu mir de Problem vun der kombinatorescher Explosioun vill viru 5-6 Joer diskutéiert. Nëmmen amplaz Versiounen hu mir eenzel Wierder, an amplaz Produkter hu mir Sätz an Abschnitter. An och wann d'Problemer vun NLP an AI gréisstendeels ongeléist bleiwen, muss et zouginn datt bedeitend Fortschrëtter an de leschte Jore gemaach goufen (menger Meenung no kéint Fortschrëtt gemaach ginnоEt wier besser wann d'Leit an der Industrie e bësse manner Opmierksamkeet op d'Maschinn léieren an e bësse méi un aner Techniken bezuelen - awer dëst ass scho off-Thema).

Loosst eis zréck an d'Welt vun DevOps a Mikroservicer. Mir si mat engem risege Problem konfrontéiert, sech als Elefant an der Kunstkamera verkleeden - well wat ech dacks héieren ass "huelt just Kubernetes an Helm, an alles wäert gutt sinn!" Awer nee, alles wäert net gutt sinn wann alles sou bleift. Ausserdeem schéngt eng analytesch Léisung fir dëse Problem net akzeptabel wéinst senger Komplexitéit. Wéi an NLP, sollte mir als éischt dëse Problem ugoen andeems Dir de Sichomfang schmëlzt - an dësem Fall, andeems se verouderte Permutatiounen eliminéiert.

Ee vun de Saachen déi hëllefe kéint ass eppes wat ech d'lescht Joer geschriwwen hunn iwwer de Besoin fir e Minimum Ënnerscheed tëscht Versioune fir Clienten gepost ze erhalen. Et ass och wichteg ze bemierken datt e gutt entworf CI / CD Prozess immens hëlleft Variatioun ze reduzéieren. Wéi och ëmmer, den aktuellen Zoustand mat CI / CD ass net gutt genuch fir de Problem vun Permutatiounen ze léisen ouni zousätzlech Tools fir Comptabilitéit an Tracking Komponenten.

Wat mir brauchen ass e System vun Experimenter an der Integratioun Etapp, wou mir de Risiko Faktor fir all Komponent bestëmmen kann, an och en automatiséierte Prozess fir Aktualiséierung opgetrueden verschidde Komponente an Testen ouni Bedreiwer Interventioun - ze gesinn wat funktionnéiert a wat net.

Esou e System vun Experimenter kéint esou ausgesinn:

  1. D'Entwéckler schreiwen Tester (dëst ass eng kritesch Etapp - well soss hu mir keen Evaluatiounskriterium - et ass wéi d'Etikettéierungsdaten am Maschinnléieren).
  2. All Komponent (Projet) kritt säin eegene CI System - dëse Prozess ass elo gutt entwéckelt, an d'Thema vun der Schafung vun engem CI System fir eng eenzeg Komponent ass gréisstendeels geléist
  3. De "Smart Integration System" sammelt d'Resultater vu verschiddene CI Systemer a montéiert Komponentprojeten an d'Finale Produkt, fiert Testen a berechent endlech de kuerste Wee fir déi gewënscht Produktfunktionalitéit ze kréien baséiert op existente Komponenten a Risikofaktoren. Wann en Update net méiglech ass, informéiert dëse System d'Entwéckler iwwer déi existent Komponenten a wéi eng vun hinnen de Feeler verursaacht. Nach eng Kéier ass den Testsystem hei vu kritescher Wichtegkeet - well den Integratiounssystem Tester als Evaluatiounskriterium benotzt.
  4. CD System, deen dann Daten vum Smart Integration System kritt an den Update direkt ausféiert. Dës Etapp endet den Zyklus.

Fir ze resuméieren, fir mech ass ee vun de gréisste Probleemer elo de Mangel u sou engem "Smart Integration System", deen déi verschidde Komponenten an e Produkt verbënnt an domat Iech erlaabt ze verfollegen wéi de Produit als Ganzt zesummegesat ass. Ech wäert d'Gedanken vun der Gemeinschaft iwwer dëst interesséieren (Spoiler - ech schaffen am Moment un engem Projet Reliza, wat esou e Smart Integratiounssystem ka ginn).

Eng lescht Saach, déi ech wëll ernimmen, ass datt, fir mech, e Monolith net akzeptabel ass fir all Projet vu mëttlerer Gréisst. Fir mech, Versuche fir d'Ëmsetzungszäit an d'Qualitéit vun der Entwécklung ze beschleunegen andeems Dir op e Monolith zréckkuckt, verursaacht grouss Skepsis. Als éischt huet e Monolith en ähnleche Problem fir Komponenten ze managen - tëscht de verschiddene Bibliothéiken, aus deem et besteet, ass dat awer net sou bemierkbar a manifestéiert sech haaptsächlech an der Zäit vun den Entwéckler. D'Konsequenz vum Monolithproblem ass déi virtuell Onméiglechkeet fir Ännerunge vum Code ze maachen - an extrem lues Entwécklungsgeschwindegkeet.

Mikroservicer verbesseren d'Situatioun, awer dann ass d'Mikroservicearchitektur de Problem vun der kombinatorescher Explosioun an der Integratiounsstadium. Jo, am Allgemengen hu mir dee selwechte Problem vun der Entwécklungsphase op d'Integratiounsphase geréckelt. Wéi och ëmmer, menger Meenung no, féiert d'Mikroservicer Approche nach ëmmer zu bessere Resultater, an d'Teams erreechen Resultater méi séier (wahrscheinlech haaptsächlech wéinst der Reduktioun vun der Gréisst vun der Entwécklung Eenheet - oder Batch Gréisst). Wéi och ëmmer, de Beweegung vu Monolith op Mikroservicer huet nach net genuch Verbesserung vum Prozess bruecht - déi kombinatoresch Explosioun vu Mikroservice Versiounen ass e grousse Problem, a mir hu vill Potenzial fir d'Situatioun ze verbesseren wéi mir et léisen.

Source: will.com

Setzt e Commentaire