{"id":31761,"date":"2019-10-31T21:42:55","date_gmt":"2019-10-31T18:42:55","guid":{"rendered":"https:\/\/prohoster.info\/blog\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes\/"},"modified":"2019-10-31T21:42:55","modified_gmt":"2019-10-31T18:42:55","slug":"mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","title":{"rendered":"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>19 septembrie \u00een Moscova <noindex><a rel=\"nofollow\" href=\"https:\/\/www.meetup.com\/HighLoad-User-Group\/events\/254238096\/\">a avut loc<\/a><\/noindex> prima \u00eent\u00e2lnire tematic\u0103 HUG (Highload++ User Group), care a fost dedicat\u0103 microserviciilor. Aici a fost sus\u021binut\u0103 prezentarea \u201eExploatarea microserviciilor: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\u201d, \u00een care am \u00eemp\u0103rt\u0103\u0219it o experien\u021b\u0103 vast\u0103 a companiei \u201eFlant\u201d \u00een exploatarea proiectelor cu arhitectur\u0103 de microservicii. \u00cen primul r\u00e2nd, va fi util\u0103 tuturor dezvoltatorilor care se g\u00e2ndesc s\u0103 aplice aceast\u0103 abordare \u00een proiectul lor actual sau viitor.<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/5d84197eef093da02b3db2156841e644.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrezent\u0103m <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=g9cgppj0gKQ\"><b>un videoclip cu prezentarea<\/b><\/a><\/noindex> (50 de minute, mult mai informativ dec\u00e2t un articol), precum \u0219i rezumatul principal \u00een format text.<\/p>\n<p><i>NB: Videoclipul \u0219i prezentarea sunt de asemenea disponibile la sf\u00e2r\u0219itul acestei publica\u021bii.<\/i><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Introducere<\/h2>\n<p>\nDe obicei, o poveste bun\u0103 are o introducere, un plot principal \u0219i o concluzie. Aceast\u0103 prezentare seam\u0103n\u0103 mai mult cu o introducere, de fapt una tragic\u0103. De asemenea, este important de men\u021bionat c\u0103 este prezentat un punct de vedere asupra microserviciilor din perspectiva <i>exploat\u0103rii<\/i>.<\/p>\n<p>Voi \u00eencepe cu un astfel de grafic, al c\u0103rui autor (\u00een 2015) <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/MicroservicePremium.html\">este<\/a><\/noindex> Martin Fowler:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/f0cc0e00f32f5ea0a736e09fd20eaa85.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen acesta se observ\u0103 cum, \u00een cazul unei aplica\u021bii monolitice care a atins o anumit\u0103 dimensiune, productivitatea \u00eencepe s\u0103 scad\u0103. Microserviciile se disting prin faptul c\u0103 productivitatea ini\u021bial\u0103 este mai mic\u0103, dar pe m\u0103sur\u0103 ce complexitatea cre\u0219te, degradarea eficien\u021bei nu este at\u00e2t de evident\u0103.<\/p>\n<p>Voi completa acest grafic pentru cazul utiliz\u0103rii Kubernetes:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/1b83f03639324c610a84bfd434317f48.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe ce a devenit mai bun\u0103 aplica\u021bia cu microservicii? Deoarece o astfel de arhitectur\u0103 impune cerin\u021be serioase asupra arhitecturii, care, la r\u00e2ndul lor, sunt excelente pentru capacit\u0103\u021bile Kubernetes. Pe de alt\u0103 parte, o parte din aceast\u0103 func\u021bionalitate va fi util\u0103 \u0219i pentru monolit, mai ales din cauza faptului c\u0103 monolitul tipic de ast\u0103zi nu este chiar un monolit (detalii vor fi date ulterior \u00een prezentare).<\/p>\n<p>Dup\u0103 cum se vede, graficul final (c\u00e2nd at\u00e2t aplica\u021biile monolitice, c\u00e2t \u0219i cele microserviciilor sunt \u00een infrastructura Kubernetes) nu se deosebe\u0219te prea mult de cel ini\u021bial. \u00cen continuare, vom vorbi despre aplica\u021biile exploatate utiliz\u00e2nd Kubernetes.<\/p>\n<h2>Microservicii utile \u0219i d\u0103un\u0103toare<\/h2>\n<p>\n\u0218i aici, g\u00e2ndul principal este:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c555e5fbdf09e4bb2be17fad23b8ff6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCe este <b>o arhitectur\u0103<\/b> microserviciilor normal\u0103? Aceasta ar trebui s\u0103 v\u0103 aduc\u0103 beneficii reale, cresc\u00e2nd eficien\u021ba muncii. Dac\u0103 ne \u00eentoarcem la grafic, atunci o avem:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c27a7af10812580f0543888256a0e698.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDac\u0103 o numim <b>util\u0103<\/b>, atunci pe cealalt\u0103 parte a graficului va fi <b>d\u0103un\u0103toare<\/b> microserviciu (\u00eengreuneaz\u0103 munca):<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/27a7298bd8f877b2bc69d19378a542e2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRevenind la \u201eideea principal\u0103\u201d: ar trebui s\u0103 am \u00eencredere \u00een experien\u021ba mea? De la \u00eenceputul acestui an, am v\u0103zut <b>85 de proiecte<\/b>. Nu toate au fost microservicii (aproximativ o treime p\u00e2n\u0103 la jum\u0103tate dintre ele aveau aceast\u0103 arhitectur\u0103), dar totu\u0219i este un num\u0103r semnificativ. Noi (compania \u201eFlant\u201d) ca outsourceri reu\u0219im s\u0103 vedem o diversitate larg\u0103 de aplica\u021bii, dezvoltate at\u00e2t \u00een companii mici (cu 5 dezvoltatori), c\u00e2t \u0219i \u00een companii mari (~500 de dezvoltatori). Un alt avantaj este c\u0103 vedem cum evolueaz\u0103 aceste aplica\u021bii de-a lungul anilor.<\/p>\n<h2>De ce microservicii?<\/h2>\n<p>\nLa \u00eentrebarea despre beneficiile microserviciilor exist\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/microservice-trade-offs.html\">un r\u0103spuns foarte concret<\/a><\/noindex> dat de deja men\u021bionatul Martin Fowler:<\/p>\n<ol>\n<li> grani\u021be clare ale modularit\u0103\u021bii;<\/li>\n<li> implementare independent\u0103;<\/li>\n<li> libertatea de a alege tehnologiile.<\/li>\n<\/ol>\n<p>\nAm discutat mult cu arhitec\u021bi \u0219i dezvoltatori software \u0219i i-am \u00eentrebat de ce le sunt necesare microserviciile. \u0218i am \u00eentocmit lista a\u0219tept\u0103rilor lor. Iat\u0103 ce a rezultat:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e9fa2f1a03da2017e90c5f952b752187.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDac\u0103 a\u0219 descrie \u201e\u00een percep\u021bii\u201d c\u00e2teva dintre puncte, acestea ar fi:<\/p>\n<ul>\n<li> grani\u021be clare \u00eentre module: avem un monolit terifiant, iar acum totul va fi organizat frumos \u00een repo-uri Git, \u00een care totul este \u201epe rafturi\u201d, f\u0103r\u0103 a amesteca cele calde cu cele moi;<\/li>\n<li> independen\u021ba implement\u0103rii: vom putea lansa servicii \u00een mod independent, pentru a accelera dezvoltarea (public\u00e2nd noi caracteristici \u00een paralel);<\/li>\n<li> independen\u021ba dezvolt\u0103rii: putem \u00eencredin\u021ba acest microserviciu unei echipe\/developer, iar cel\u0103lalt va prelua altul, ceea ce ne va permite s\u0103 dezvolt\u0103m mai repede;<\/li>\n<li> b<i>mare<\/i>fiabilitate mai mare: dac\u0103 se va produce o degradare par\u021bial\u0103 (se va pr\u0103bu\u0219i un microserviciu din 20), va func\u021biona doar un singur buton, iar sistemul, \u00een ansamblu, va continua s\u0103 func\u021bioneze.<\/li>\n<\/ul>\n<p><\/p>\n<h2>O arhitectur\u0103 microservic\u0103 tipic\u0103 (d\u0103un\u0103toare)<\/h2>\n<p>\nPentru a explica de ce \u00een realitate lucrurile nu sunt a\u0219a cum ne a\u0219tept\u0103m, voi prezenta <i>un exemplu<\/i> de arhitectur\u0103 microservic\u0103, bazat pe experien\u021be din numeroase proiecte diferite.<\/p>\n<p>Un exemplu va fi un magazin online abstract, care inten\u021bioneaz\u0103 s\u0103 concureze cu Amazon sau m\u0103car cu OZON. Arhitectura sa microservic\u0103 arat\u0103 astfel:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3b85936587109631d16882a52dd1b310.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDin diverse motive, aceste microservicii sunt scrise pe platforme diferite:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e145b212a83814218add965ce26b3fed.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDeoarece fiecare microserviciu trebuie s\u0103 aib\u0103 autonomitate, multe dintre ele au nevoie de propria baz\u0103 de date \u0219i cache. Arhitectura final\u0103 devine urm\u0103toarea:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/299b2ac7b6956e295c3d59210955e5e9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Care sunt consecin\u021bele?<\/h2>\n<p>\nLa Fowler \u0219i \u00een aceast\u0103 privin\u021b\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/microservice-trade-offs.html\">despre \"costurile\" utiliz\u0103rii microserviciilor:<\/a><\/noindex> Uite c\u0103 ne vom verifica dac\u0103 a\u0219tept\u0103rile noastre s-au \u00eendeplinit.<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/50fc6ac602cb2eb8383d2103101c01ce.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLimitele clare ale modulelor...<\/p>\n<h3>c\u00e2te microservicii ar trebui de fapt s\u0103 corect\u0103m<\/h3>\n<p>\nDar <b>, pentru a implementa o modificare? Putem \u00een\u021belege cu adev\u0103rat cum func\u021bioneaz\u0103 totul f\u0103r\u0103 un trasor distribuit (deoarece orice solicitare este procesat\u0103 de jum\u0103tate dintre microservicii)?<\/b>Exist\u0103 un model de \"<\/p>\n<p>morman de murd\u0103rie<noindex><a rel=\"nofollow\" href=\"http:\/\/www.laputan.org\/mud\/\">\", iar aici s-a format un morman distribuit de murd\u0103rie. \u00cen sprijinul acestui fapt - iat\u0103 o ilustra\u021bie aproximativ\u0103 a modului \u00een care circul\u0103 solicit\u0103rile:<\/a><\/noindex>Independen\u021ba desf\u0103\u0219ur\u0103rii...<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c91086409c06f5a76b1f76bec30b737d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Tehnic, aceasta a fost realizat\u0103: putem desf\u0103\u0219ura fiecare microserviciu separat. Dar \u00een practic\u0103, trebuie s\u0103 lu\u0103m \u00een considerare c\u0103 \u00eentotdeauna sunt desf\u0103\u0219urate<\/h3>\n<p>\nmai multe microservicii <b>, iar noi trebuie s\u0103 lu\u0103m \u00een considerare<\/b>ordonarea desf\u0103\u0219ur\u0103rii lor. <b>\u00cen mod ideal, ar trebui s\u0103 test\u0103m \u00een mod separat dac\u0103 desf\u0103\u0219ur\u0103m release-ul \u00een ordinea corect\u0103.<\/b>Libertatea de a alege tehnologia...<\/p>\n<h3>Exist\u0103. Dar trebuie s\u0103 re\u021binem c\u0103, adesea, libertatea se limiteaz\u0103 la haos. Este foarte important s\u0103 nu alegem tehnologiile doar pentru a \u201cne juca\u201d cu ele.<\/h3>\n<p>\nIndependen\u021ba dezvolt\u0103rii...<\/p>\n<h3>Cum s\u0103 construim un mediu de testare pentru \u00eentreaga aplica\u021bie (dintr-o at\u00e2t de mare varietate de componente)? \u0218i trebuie s\u0103-l men\u021binem mereu actualizat. Toate acestea duc la faptul c\u0103<\/h3>\n<p>\nnum\u0103rul real de medii de testare <b>, pe care le putem sus\u021bine,<\/b>se dovede\u0219te a fi minim. <b>\u0218i ce zici de desf\u0103\u0219urarea totului local?.. Se pare c\u0103, adesea, dezvoltatorul \u00ee\u0219i face treaba independent, dar \"la noroc\", pentru c\u0103 este nevoit s\u0103 a\u0219tepte s\u0103 se elibereze un mediu pentru testare.<\/b>.<\/p>\n<p>Scalarea separat\u0103...<\/p>\n<h3>Da, dar este limitat\u0103 \u00een ceea ce prive\u0219te bazele de date utilizate. \u00cen exemplul prezentat, nu vor exista probleme cu Cassandra, dar vor fi cu MySQL \u0219i PostgreSQL.<\/h3>\n<p>\nO<\/p>\n<h3>fiabilitate mai mare...<i>mare<\/i>Nu doar c\u0103, de fapt, defectarea unui microserviciu sparge de multe ori func\u021bionarea corect\u0103 a \u00eentregului sistem, dar exist\u0103 \u0219i o nou\u0103 problem\u0103:<\/h3>\n<p>\na face fiecare microserviciu tolerant la erori este foarte complicat. <b>Este foarte dificil s\u0103 faci fiecare microserviciu rezistent la erori.<\/b>. Pentru c\u0103 \u00een microservicii se folosesc tehnologii diferite (memcache, Redis etc.), pentru fiecare trebuie s\u0103 ne g\u00e2ndim la tot \u0219i s\u0103 implement\u0103m, ceea ce, desigur, este posibil, dar necesit\u0103 resurse imense.<\/p>\n<h3>M\u0103surabilitatea \u00eenc\u0103rc\u0103turii\u2026<\/h3>\n<p>\nCu asta, \u00eentr-adev\u0103r, totul este bine.<\/p>\n<h3>\u00abU\u0219urin\u021ba\u00bb microserviciilor\u2026<\/h3>\n<p>\nNu doar c\u0103 ne-au ap\u0103rut imense <b>costuri de re\u021bea<\/b> (cre\u0219te num\u0103rul cererilor DNS etc.), dar \u0219i din cauza multor subcereri am \u00eenceput s\u0103 <b>replic\u0103m datele<\/b> (s\u0103 stoc\u0103m cache-uri), ceea ce a dus la un volum semnificativ de stocare.<\/p>\n<p>\u0218i iat\u0103 care este rezultatul conformit\u0103\u021bii cu a\u0219tept\u0103rile noastre:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/ab189c8649d720c7add975ac54811f51.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Dar asta nu e tot!<\/h3>\n<p>\nPentru c\u0103:<\/p>\n<ul>\n<li> Cel mai probabil ne va trebui un sistem de mesaje.<\/li>\n<li> Cum s\u0103 facem un backup consistent la momentul dorit? Singura <i>op\u021biune<\/i> real\u0103 este s\u0103 oprim traficul pentru asta. Dar cum se poate face \u00een produc\u021bie?<\/li>\n<li> Dac\u0103 este vorba despre suportul pentru mai multe regiuni, organizarea rezilien\u021bei \u00een fiecare dintre ele este o sarcin\u0103 foarte laborioas\u0103.<\/li>\n<li> Apas\u0103 pe problem\u0103 modific\u0103rii centralizate. De exemplu, dac\u0103 trebuie s\u0103 actualiz\u0103m versiunea PHP, va trebui s\u0103 facem un commit \u00een fiecare repository (iar acestea sunt zeci).<\/li>\n<li> Cre\u0219terea complexit\u0103\u021bii operative este, de la prima vedere, exponen\u021bial\u0103.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Ce s\u0103 facem cu toate acestea?<\/h2>\n<p>\n<b>\u00cencepe\u021bi cu o aplica\u021bie monolitic\u0103<\/b>. Experien\u021ba lui Fowler <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/MonolithFirst.html\">spune<\/a><\/noindex> indic\u0103 faptul c\u0103 aproape toate aplica\u021biile microserviciu de succes au \u00eenceput dintr-un monolit care a devenit prea mare \u0219i a fost apoi divizat. \u00centre timp, aproape toate sistemele construite ca microservicii de la \u00eenceput, mai devreme sau mai t\u00e2rziu, au experimentat probleme serioase.<\/p>\n<p>\u00cenc\u0103 o idee valoroas\u0103 \u2013 pentru ca un proiect cu arhitectur\u0103 microserviciu s\u0103 fie de succes, trebuie s\u0103 cunoa\u0219te\u021bi foarte bine <b>at\u00e2t domeniul de activitate, c\u00e2t \u0219i cum s\u0103 realiza\u021bi microservicii.<\/b>. Iar cea mai bun\u0103 modalitate de a cunoa\u0219te domeniul de activitate este s\u0103 face\u021bi un monolit.<\/p>\n<h2>Dar ce s\u0103 facem dac\u0103 ne afl\u0103m deja \u00een aceast\u0103 situa\u021bie?<\/h2>\n<p>\nPrimul pas spre rezolvarea oric\u0103rei probleme este s\u0103 accept\u0103m c\u0103 este o problem\u0103 \u0219i s\u0103 \u00een\u021belegem c\u0103 nu mai vrem s\u0103 suferim.<\/p>\n<p>Dac\u0103 \u00een cazul unui monolit crescut (c\u00e2nd am terminat resursele pentru el), \u00eel diviz\u0103m, \u00een acest caz avem povestea invers\u0103: c\u00e2nd microserviciile excesive nu mai ajut\u0103, ci deranjeaz\u0103 \u2013 <b>t\u0103ia\u021bi excesul \u0219i m\u0103ri\u021bi<\/b>!<\/p>\n<p>De exemplu, pentru imaginea de ansamblu discutat\u0103 mai sus\u2026<\/p>\n<p>Sc\u0103pa\u021bi de cele mai \u00eendoielnice microservicii:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/4b72ede0452890027a950d31ced26405.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUni\u021bi toate microserviciile responsabile pentru generarea frontend-ului:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3bf2831a637cfa148b032ba8c521353a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 \u00eentr-un singur microserviciu, scris \u00eentr-o limb\u0103\/framework modern (a\u0219a cum considera\u021bi c\u0103 este) dintr-un singur tip:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/73f53f5f4f41f72a7c6d187d855bbd95.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAcesta va avea un singur ORM (o baz\u0103 de date) \u0219i ini\u021bial c\u00e2teva aplica\u021bii:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/f44baf6a02bf00317f1395ab339f57a9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 dar \u00een general, se pot muta mult mai multe acolo, ob\u021bin\u00e2nd astfel acest rezultat:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/97c02ae24199bca42e4bf24f8031578a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMai mult, \u00een Kubernetes le lans\u0103m ca instan\u021be separate, ceea ce \u00eenseamn\u0103 c\u0103 putem \u00eenc\u0103 m\u0103sura \u00eenc\u0103rcarea \u0219i s\u0103 le scal\u0103m individual.<\/p>\n<h2>\u00cen concluzie<\/h2>\n<p>\nPrivind la imaginea de ansamblu. Foarte des, toate aceste probleme cu microserviciile apar deoarece cineva \u0219i-a asumat sarcina, dar a vrut s\u0103 \u201ese joace cu microserviciile\u201d.<\/p>\n<p><b>\u00cen cuv\u00e2ntul \u201emicroservicii\u201d, partea \u201emicro\u201d este redundant\u0103.<\/b>. Ele sunt \u201emicro\u201d doar pentru c\u0103 sunt mai mici dec\u00e2t un monolit imens. Dar nu trebuie s\u0103 le considera\u021bi ca fiind ceva mic.<\/p>\n<p>\u0218i pentru g\u00e2ndul final, s\u0103 ne \u00eentoarcem la graficul ini\u021bial:<\/p>\n<p><img decoding=\"async\" alt=\"Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/a75665af4caa7c4982f70c59ec3c6e89.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNota scris\u0103 pentru acesta <i>(\u00een dreapta sus)<\/i> se reduce la faptul c\u0103 <b>abilit\u0103\u021bile echipei care lucreaz\u0103 la proiectul dumneavoastr\u0103 sunt mereu primordiale<\/b> \u2014 ele vor juca rolul principal \u00een alegerea \u00eentre microservicii \u0219i monolit. Dac\u0103 echipei \u00eei lipsesc abilit\u0103\u021bile, dar \u00eencepe s\u0103 creeze microservicii, povestea va fi cu siguran\u021b\u0103 fatal\u0103.<\/p>\n<h2>Videoclipuri \u0219i diapozitive<\/h2>\n<p>\nVideoclipul prezent\u0103rii (~50 de minute; din p\u0103cate, nu surprinde numeroasele emo\u021bii ale vizitatorilor, care au determinat \u00een mare parte tonul prezent\u0103rii, dar a\u0219a este):<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"g9cgppj0gKQ\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/g9cgppj0gKQ\/hqdefault.jpg\" alt=\"Reda\u021bi video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Prezentarea conferin\u021bei:<\/p>\n<p><center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"\/\/speakerdeck.com\/player\/f4f5ab9957084712bc92aa8a0ef61e45\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/p>\n<h2>P.S.<\/h2>\n<p>\nAlte prezent\u0103ri pe blogul nostru:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/412901\/\">Monitorizare \u0219i Kubernetes<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 28 mai 2018 la RootConf)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/345116\/\">Cele mai bune practici CI\/CD cu Kubernetes \u0219i GitLab<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 7 noiembrie 2017 la HighLoad++)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/331188\/\">Experien\u021ba noastr\u0103 cu Kubernetes \u00een proiecte mici<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 6 iunie 2017 la RootConf)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/324274\/\">Construim imagini Docker pentru CI\/CD rapid \u0219i convenabil \u00eempreun\u0103 cu dapp<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 8 noiembrie 2016 la HighLoad++)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/322686\/\">Practici de Continuous Delivery cu Docker<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 31 mai 2016 la RootConf)<\/i>.<\/li>\n<\/ul>\n<p>\nProbabil, v-ar mai interesa urm\u0103toarele publica\u021bii:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/347518\/\">Moartea nebuniei microservicilor \u00een 2018<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/425085\/\">7 cele mai bune practici pentru exploatarea containerelor conform Google<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/340270\/\">Statistici The New Stack despre dificult\u0103\u021bile implement\u0103rii Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/424531\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>19 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u0432 \u041c\u043e\u0441\u043a\u0432\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0438\u0442\u0430\u043f HUG (Highload++ User Group), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c. \u041d\u0430 \u043d\u0451\u043c \u043f\u0440\u043e\u0437\u0432\u0443\u0447\u0430\u043b \u0434\u043e\u043a\u043b\u0430\u0434 \u00ab\u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432: \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 Kubernetes\u00bb, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u043b\u0438\u0441\u044c \u043e\u0431\u0448\u0438\u0440\u043d\u044b\u043c \u043e\u043f\u044b\u0442\u043e\u043c \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u00ab\u0424\u043b\u0430\u043d\u0442\u00bb \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0432\u0441\u0435\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":23651,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31761","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"19 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u0432 \u041c\u043e\u0441\u043a\u0432\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0438\u0442\u0430\u043f HUG (Highload++ User Group), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b: \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"19 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u0432 \u041c\u043e\u0441\u043a\u0432\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0438\u0442\u0430\u043f HUG (Highload++ User Group), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:42:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:42:55+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Microserviciile: dimensiunea conteaz\u0103, chiar dac\u0103 ave\u021bi Kubernetes | ProHoster","description":"Pe 19 septembrie, la Moscova, a avut loc prima \u00eent\u00e2lnire tematic\u0103 HUG (Highload++ User Group), care a fost dedicat\u0103.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b: \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 Kubernetes | ProHoster","og:description":"19 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f \u0432 \u041c\u043e\u0441\u043a\u0432\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0438\u0442\u0430\u043f HUG (Highload++ User Group), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:42:55+00:00","article:modified_time":"2019-10-31T18:42:55+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31761","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 07:42:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:11:22","updated":"2026-01-21 07:42:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/31761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=31761"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/31761\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/23651"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=31761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=31761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=31761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}