{"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\/it\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","title":{"rendered":"Microservizi: la dimensione conta, anche se hai Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>19 settembre a Mosca <noindex><a rel=\"nofollow\" href=\"https:\/\/www.meetup.com\/HighLoad-User-Group\/events\/254238096\/\">si \u00e8 tenuto<\/a><\/noindex> il primo meetup tematico HUG (Highload++ User Group), dedicato ai microservizi. Durante l'evento \u00e8 stata presentata la relazione \"Gestione dei microservizi: la dimensione conta, anche se hai Kubernetes\", in cui abbiamo condiviso l'ampia esperienza dell'azienda \"Flant\" nella gestione di progetti con architettura a microservizi. Sar\u00e0 particolarmente utile per tutti gli sviluppatori che stanno considerando di adottare questo approccio nei loro progetti attuali o futuri.<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/5d84197eef093da02b3db2156841e644.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPresentiamo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=g9cgppj0gKQ\"><b>il video della presentazione<\/b><\/a><\/noindex> (50 minuti, molto pi\u00f9 informativo di un articolo) e anche un riassunto testuale principale.<\/p>\n<p><i>NB: Il video e la presentazione sono disponibili anche alla fine di questa pubblicazione.<\/i><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Introduzione<\/h2>\n<p>\nDi solito, una buona storia ha un'introduzione, un conflitto principale e una conclusione. Questa relazione somiglia pi\u00f9 a un'introduzione, e per di pi\u00f9 tragica. \u00c8 importante sottolineare che offre anche una visione dei microservizi dal punto di vista di <i>sfruttamento<\/i>.<\/p>\n<p>Inizier\u00f2 con questo grafico, la cui autore \u00e8 (nel 2015) <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/MicroservicePremium.html\">ha iniziato<\/a><\/noindex> Martin Fowler:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/f0cc0e00f32f5ea0a736e09fd20eaa85.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi pu\u00f2 osservare come, nel caso di un'applicazione monolitica che ha raggiunto una certa dimensione, inizi a diminuire la produttivit\u00e0. I microservizi si distinguono per il fatto che la loro produttivit\u00e0 iniziale \u00e8 pi\u00f9 bassa, tuttavia, con l'aumento della complessit\u00e0, la degradazione dell'efficacia non \u00e8 cos\u00ec evidente.<\/p>\n<p>Integrer\u00f2 questo grafico per il caso d'uso di Kubernetes:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/1b83f03639324c610a84bfd434317f48.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPerch\u00e9 un'applicazione con microservizi ha avuto un miglioramento? Perch\u00e9 questa architettura presenta requisiti rigorosi che sono eccellentemente soddisfatti dalle capacit\u00e0 di Kubernetes. D'altra parte, parte di questa funzionalit\u00e0 sar\u00e0 utile anche per il monolite, soprattutto considerando che il monolite tipico attuale non \u00e8 propriamente un monolite (i dettagli seguiranno nel rapporto).<\/p>\n<p>Come si pu\u00f2 vedere, il grafico finale (con applicazioni sia monolitiche che microservizi nell'infrastruttura Kubernetes) non differisce molto dall'originale. In seguito si parler\u00e0 di applicazioni gestite utilizzando Kubernetes.<\/p>\n<h2>Microservizi utili e dannosi<\/h2>\n<p>\nE qui la idea principale:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c555e5fbdf09e4bb2be17fad23b8ff6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nChe cos'\u00e8 <b>normale<\/b> L'architettura a microservizi? Deve offrirvi un reale valore, aumentando l'efficienza del lavoro. Se torniamo al grafico, eccola qui:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c27a7af10812580f0543888256a0e698.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe la chiamiamo <b>utile<\/b>, dall'altra parte del grafico ci sar\u00e0 <b>dannosa<\/b> microservizialit\u00e0 (ostacola il lavoro):<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/27a7298bd8f877b2bc69d19378a542e2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTornando al \u00abconcetto principale\u00bb: dovrei fidarmi della mia esperienza? Dall'inizio di quest'anno ho esaminato <b>85 progetti<\/b>. Non tutti erano a microservizi (circa un terzo o met\u00e0 di essi avevano tale architettura), ma \u00e8 comunque un numero significativo. Noi (l'azienda \u00abFlant\u00bb) come fornitori di outsourcing riusciamo a vedere una vasta gamma di applicazioni sviluppate sia in piccole aziende (con 5 sviluppatori) che in grandi (~500 sviluppatori). Un ulteriore vantaggio \u00e8 che vediamo come queste applicazioni vivono e si evolvono nel corso degli anni.<\/p>\n<h2>Perch\u00e9 i microservizi?<\/h2>\n<p>\nLa risposta alla domanda sui benefici dei microservizi \u00e8 <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/microservice-trade-offs.html\">abbastanza specifica<\/a><\/noindex> secondo l'ormai citato Martin Fowler:<\/p>\n<ol>\n<li> confini modulari chiari;<\/li>\n<li> deploy indipendente;<\/li>\n<li> libert\u00e0 di scelta delle tecnologie.<\/li>\n<\/ol>\n<p>\nHo parlato molto con architetti e sviluppatori di software, chiedendo loro perch\u00e9 avessero bisogno dei microservizi. Ho creato la mia lista delle loro aspettative. Ecco cosa \u00e8 emerso:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e9fa2f1a03da2017e90c5f952b752187.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe descriviamo \u00abnelle sensazioni\u00bb alcuni dei punti, allora:<\/p>\n<ul>\n<li> confini chiari dei moduli: abbiamo un terribile monolite e ora tutto sar\u00e0 ben organizzato nei repository Git, dove tutto \u00e8 \u00aba posto\u00bb, senza mescolare caldo con freddo;<\/li>\n<li> indipendenza del deployment: potremo rilasciare i servizi in modo indipendente, accelerando lo sviluppo (pubblicando nuove funzionalit\u00e0 in parallelo);<\/li>\n<li> indipendenza nello sviluppo: possiamo assegnare questo microservizio a un team\/sviluppatore, e quell\u2019altro a un altro, il che ci consente di sviluppare pi\u00f9 rapidamente;<\/li>\n<li> b<i>un<\/i>maggiore affidabilit\u00e0: se si verifica una parziale degradazione (un microservizio su 20 va gi\u00f9), funzioner\u00e0 solo un pulsante, mentre il sistema continuer\u00e0 a operare nel suo insieme.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Architettura microservizi tipica (dannosa)<\/h2>\n<p>\nPer spiegare perch\u00e9 in realt\u00e0 le cose non sono come ci aspettiamo, presenter\u00f2 <i>un'immagine<\/i> collettiva dell'architettura microservizi, basata sull'esperienza di numerosi progetti diversi.<\/p>\n<p>Un esempio sar\u00e0 un negozio online astratto che mira a competere con Amazon o almeno OZON. La sua architettura a microservizi appare cos\u00ec:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3b85936587109631d16882a52dd1b310.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer un insieme di motivi, questi microservizi sono scritti su piattaforme diverse:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e145b212a83814218add965ce26b3fed.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPoich\u00e9 ogni microservizio deve essere autonomo, molti di essi necessitano di un proprio database e di una cache. L'architettura finale risulta essere la seguente:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/299b2ac7b6956e295c3d59210955e5e9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Quali sono le sue conseguenze?<\/h2>\n<p>\n\u0423 Fowler&#8217;\u0430 \u0438 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0441\u0447\u0451\u0442 <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/microservice-trade-offs.html\">ha un articolo<\/a><\/noindex> sulla \"penale\" per l'uso dei microservizi:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/50fc6ac602cb2eb8383d2103101c01ce.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE noi vedremo se le nostre aspettative si sono avverate.<\/p>\n<h3>Confini chiari dei moduli\u2026<\/h3>\n<p>\nMa <b>quanti microservizi dobbiamo realmente sistemare<\/b>, per rilasciare una modifica? Possiamo davvero capire come funziona tutto senza un tracciatore distribuito (dato che ogni richiesta \u00e8 elaborata da met\u00e0 dei microservizi)?<\/p>\n<p>Esiste un pattern del \"<noindex><a rel=\"nofollow\" href=\"http:\/\/www.laputan.org\/mud\/\">grande groviglio di fango<\/a><\/noindex>\", e qui si \u00e8 addirittura creato un groviglio distribuito di fango. A conferma di ci\u00f2, ecco un'illustrazione approssimativa di come scorrono le richieste:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c91086409c06f5a76b1f76bec30b737d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Indipendenza del deployment\u2026<\/h3>\n<p>\nTecnicamente \u00e8 possibile: possiamo implementare ogni microservizio singolarmente. Ma nella pratica, dobbiamo tenere in considerazione che vengono sempre rilasciati <b>numerosi microservizi<\/b>, e dobbiamo considerare <b>l'ordine di rilascio<\/b>. Idealmente, dovremmo testare in un contesto separato per assicurarci che il rilascio avvenga nell'ordine corretto.<\/p>\n<h3>Libert\u00e0 nella scelta della tecnologia\u2026<\/h3>\n<p>\nEsiste. Tuttavia, bisogna ricordare che spesso la libert\u00e0 confina con l'anarchia. \u00c8 molto importante non scegliere le tecnologie solo per 'giocare' con esse.<\/p>\n<h3>Indipendenza dello sviluppo\u2026<\/h3>\n<p>\nCome creare un contesto di test per l'intera applicazione (con cos\u00ec tanti componenti)? E bisogna anche mantenerlo aggiornato. Tutto ci\u00f2 porta al fatto che <b>il numero reale di contesti di test<\/b>, che possiamo effettivamente gestire, <b>risulta essere minimo.<\/b>.<\/p>\n<p>E per implementare tutto questo in locale? Risulta che spesso lo sviluppatore svolge il proprio lavoro in modo indipendente, ma 'alla cieca', poich\u00e9 \u00e8 costretto ad aspettare che si liberi un contesto per i test.<\/p>\n<h3>Scalabilit\u00e0 separata\u2026<\/h3>\n<p>\nS\u00ec, ma \u00e8 limitato per quanto riguarda i DBMS utilizzati. Nell'esempio fornito, non ci sarebbero problemi con Cassandra, ma ci sarebbero con MySQL e PostgreSQL.<\/p>\n<h3>B<i>un<\/i>maggiore affidabilit\u00e0\u2026<\/h3>\n<p>\nNon solo il guasto di un singolo microservizio pu\u00f2 spesso compromettere il corretto funzionamento dell'intero sistema, ma c'\u00e8 anche un nuovo problema: <b>rendere ogni microservizio resiliente \u00e8 molto difficile.<\/b>Perch\u00e9 nei microservizi vengono utilizzate tecnologie diverse (memcache, Redis, ecc.), e per ognuna bisogna progettare e implementare tutto, il che \u00e8 certamente possibile, ma richiede risorse enormi.<\/p>\n<h3>Misurabilit\u00e0 del carico\u2026<\/h3>\n<p>\nCon questo siamo davvero a posto.<\/p>\n<h3>La \u00ableggerezza\u00bb dei microservizi\u2026<\/h3>\n<p>\nNon solo abbiamo ora enormi <b>sovraccarichi di rete<\/b> (le richieste DNS, ecc. si moltiplicano), ma a causa di numerosi sottoquery abbiamo iniziato a <b>replicare i dati<\/b> (memorizzare le cache), il che ha portato a un notevole volume di archiviazione.<\/p>\n<p>Ecco qual \u00e8 il risultato rispetto alle nostre aspettative:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/ab189c8649d720c7add975ac54811f51.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Ma non \u00e8 tutto!<\/h3>\n<p>\nPerch\u00e9:<\/p>\n<ul>\n<li> Probabilmente avremo bisogno di un bus di messaggi.<\/li>\n<li> Come fare un backup consistente in un momento specifico? L'unico <i>reale<\/i> L'opzione \u2014 disattivare il traffico per questo. Ma come farlo in produzione?<\/li>\n<li> Quando si parla di supportare pi\u00f9 regioni, organizzare la resilienza in ciascuna di esse \u00e8 un compito molto impegnativo.<\/li>\n<li> Sorge il problema di apportare modifiche centralizzate. Ad esempio, se dobbiamo aggiornare la versione di PHP, sar\u00e0 necessario fare un commit in ogni repository (e ce ne sono decine).<\/li>\n<li> La crescita della complessit\u00e0 operativa risulta esponenziale.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Cosa fare con tutto questo?<\/h2>\n<p>\n<b>Iniziate con un'applicazione monolitica<\/b>. \u041e\u043f\u044b\u0442 Fowler&#8217;\u0430 <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/MonolithFirst.html\">afferma<\/a><\/noindex> suggerisce che praticamente tutte le applicazioni microservizio di successo sono iniziate come monoliti, che sono diventati troppo grandi e sono stati poi suddivisi. Allo stesso tempo, praticamente tutti i sistemi costruiti come microservizi fin dall'inizio hanno affrontato seri problemi, prima o poi.<\/p>\n<p>Un'altra idea preziosa \u00e8 che, affinch\u00e9 un progetto con architettura microservizi sia di successo, \u00e8 necessario avere una buona conoscenza <b>sia del dominio che di come realizzare microservizi<\/b>. E il modo migliore per conoscere il dominio \u00e8 realizzare un monolito.<\/p>\n<h2>Ma cosa fare se ci troviamo gi\u00e0 in questa situazione?<\/h2>\n<p>\nIl primo passo per risolvere qualsiasi problema \u00e8 riconoscerlo e capire che \u00e8 un problema, che non vogliamo pi\u00f9 soffrire.<\/p>\n<p>Nel caso di un monolite cresciuto (quando abbiamo esaurito la possibilit\u00e0 di aggiungere risorse), lo suddividiamo; ma in questo caso si tratta esattamente dell'opposto: quando un'eccessiva microservizialit\u00e0 non aiuta pi\u00f9 ma ostacola \u2014 <b>tagliate il superfluo e consolidate<\/b>!<\/p>\n<p>Ad esempio, per l'immagine collettiva considerata sopra\u2026<\/p>\n<p>Eliminate i microservizi pi\u00f9 discutibili:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/4b72ede0452890027a950d31ced26405.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnite tutti i microservizi responsabili per la generazione del frontend:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3bf2831a637cfa148b032ba8c521353a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 in un unico microservizio, sviluppato in un linguaggio\/framework (moderno e affidabile, come ritenete voi) che sia:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/73f53f5f4f41f72a7c6d187d855bbd95.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAvr\u00e0 un solo ORM (un solo DBMS) e inizialmente un paio di applicazioni:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/f44baf6a02bf00317f1395ab339f57a9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 e in effetti si possono trasferire molte pi\u00f9 funzioni, ottenendo un risultato simile:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/97c02ae24199bca42e4bf24f8031578a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn Kubernetes, avviamo tutto questo come istanze separate, il che significa che possiamo comunque misurare il carico e scalare separatamente.<\/p>\n<h2>In sintesi<\/h2>\n<p>\nConsiderate la situazione in modo pi\u00f9 ampio. Spesso, tutti questi problemi con i microservizi sorgono perch\u00e9 qualcuno ha preso il proprio compito ma voleva \"giocare con i microservizi\".<\/p>\n<p><b>Nella parola \u00abmicroservizi\u00bb, la parte \u00abmicro\u00bb \u00e8 superflua.<\/b>Sono \u00abmicro\u00bb solo perch\u00e9 pi\u00f9 piccoli di un enorme monolite. Ma non bisogna pensarli come qualcosa di ridotto.<\/p>\n<p>E per concludere, torniamo al grafico originale:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: la dimensione conta, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/a75665af4caa7c4982f70c59ec3c6e89.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa nota scritta per essa <i>(in alto a destra)<\/i> si riassume nel fatto che <b>le competenze del team che realizza il vostro progetto sono sempre primarie<\/b> \u2212 sono proprio loro a giocare un ruolo chiave nella vostra scelta tra microservizi e monolite. Se il team non ha le competenze necessarie, ma inizia a realizzare microservizi, la storia sar\u00e0 sicuramente fatale.<\/p>\n<h2>Video e slide<\/h2>\n<p>\nIl video della presentazione (~50 minuti; purtroppo non trasmette le numerose emozioni dei partecipanti, che in gran parte hanno definito l'atmosfera della conferenza, ma tant'\u00e8):<\/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=\"Riproduci 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>Presentazione della relazione:<\/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>\nAltre presentazioni nel nostro blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/412901\/\">Monitoraggio e Kubernetes<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 28 maggio 2018 a RootConf)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/345116\/\">Migliori pratiche CI\/CD con Kubernetes e GitLab<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 7 novembre 2017 a HighLoad++)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/331188\/\">La nostra esperienza con Kubernetes in progetti piccoli<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 6 giugno 2017 a RootConf)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/324274\/\">Creiamo immagini Docker per CI\/CD in modo rapido e conveniente con dapp<\/a><\/noindex>\u00bb <i>(Dmitrij Stolyarov; 8 novembre 2016 a HighLoad++)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/322686\/\">Pratiche di Continuous Delivery con Docker<\/a><\/noindex>\u00bb <i>(Dmitrij Stolyarov; 31 maggio 2016 a RootConf)<\/i>.<\/li>\n<\/ul>\n<p>\nProbabilmente potrebbero interessarvi anche le seguenti pubblicazioni:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/347518\/\">La morte della follia dei microservizi nel 2018<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/425085\/\">7 migliori pratiche per la gestione dei container secondo Google<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/340270\/\">Statistiche di The New Stack sulle difficolt\u00e0 di implementazione di Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Fonte: <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 4.9.10 - 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 \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\" \/>\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\/it\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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\udd47Microservizi: le dimensioni contano, anche se hai Kubernetes | ProHoster","description":"Il 19 settembre a Mosca si \u00e8 svolto il primo meetup tematico HUG (Highload++ User Group), dedicato ai microservizi. Durante l'evento \u00e8 stata presentata la relazione \"Gestire i microservizi: le dimensioni contano, anche se hai Kubernetes\", in cui abbiamo condiviso l'ampia esperienza della societ\u00e0 \"Flant\" nell'ambito della gestione di progetti con architettura a microservizi. Sar\u00e0 particolarmente utile per tutti gli sviluppatori che stanno considerando","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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 \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","og:url":"https:\/\/prohoster.info\/it\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=31761"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/31761\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/23651"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=31761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=31761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=31761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}