{"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: le dimensioni contano, 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 svolto<\/a><\/noindex> il primo meetup tematico HUG (Highload++ User Group), dedicato ai microservizi. Durante l'incontro, \u00e8 stata presentata la relazione \"Gestione dei microservizi: le dimensioni contano, anche se hai Kubernetes\", in cui abbiamo condiviso l'ampia esperienza della societ\u00e0 \"Flant\" nella gestione di progetti con architettura a microservizi. Sar\u00e0 particolarmente utile a tutti gli sviluppatori che stanno considerando di adottare questo approccio nel loro progetto attuale o futuro.<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, 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), insieme a un riassunto principale del contenuto in forma testuale.<\/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, una trama principale e una conclusione. Questa relazione \u00e8 pi\u00f9 simile a un'introduzione, peraltro tragica. \u00c8 anche importante notare che offre una visione sui microservizi dal punto di vista <i>sfruttamento<\/i>.<\/p>\n<p>Inizio con questo grafico, il cui autore (nel 2015) <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/MicroservicePremium.html\">\u00e8 diventata parte di<\/a><\/noindex> Martin Fowler:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/f0cc0e00f32f5ea0a736e09fd20eaa85.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMostra come, nel caso di un'applicazione monolitica, raggiunta una certa dimensione, la produttivit\u00e0 inizia a diminuire. I microservizi si differenziano perch\u00e9 la produttivit\u00e0 iniziale con essi \u00e8 inferiore, ma man mano che aumenta la complessit\u00e0, la degradazione dell'efficienza non \u00e8 cos\u00ec evidente.<\/p>\n<p>Aggiungo questo grafico per il caso di utilizzo di Kubernetes:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, 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 a microservizi funziona meglio? Perch\u00e9 tale architettura pone serie esigenze all'architettura stessa, che sono eccellentemente soddisfatte dalle capacit\u00e0 di Kubernetes. D'altra parte, parte di questa funzionalit\u00e0 sar\u00e0 utile anche per il monolite, soprattutto per il motivo che un tipico monolite al giorno d'oggi non \u00e8 del tutto monolitico (i dettagli verranno presentati nella relazione).<\/p>\n<p>Come si pu\u00f2 notare, il grafico finale (una volta che sia le applicazioni monolitiche che quelle a microservizi operano su un'infrastruttura con Kubernetes) non differisce molto dall'originale. Discuteremo in seguito delle applicazioni gestite con Kubernetes.<\/p>\n<h2>Microservizi utili e dannosi<\/h2>\n<p>\nE qui la questione principale:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c555e5fbdf09e4bb2be17fad23b8ff6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCos'\u00e8 <b>un'architettura<\/b> a microservizi normale? Deve portarti un reale vantaggio, aumentando l'efficienza del lavoro. Se torniamo al grafico, ecco cosa significa:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, 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>, quindi dall'altra parte del grafico ci sar\u00e0 <b>microservizi dannosi (intralcia il lavoro):<\/b> microservizi (creano problemi):<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/27a7298bd8f877b2bc69d19378a542e2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTornando al \"pensiero centrale\": vale la pena fidarsi della mia esperienza? Dall'inizio di quest'anno ho guardato <b>85 progetti<\/b>. Non tutti erano microservizi (questa architettura era presente in circa un terzo a met\u00e0 di essi), ma \u00e8 comunque un numero considerevole. A noi (l'azienda \"Flant\") come fornitori di servizi riesce di vedere una grande variet\u00e0 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 sviluppano nel corso degli anni.<\/p>\n<h2>Perch\u00e9 i microservizi?<\/h2>\n<p>\nAlla domanda sull'utilit\u00e0 dei microservizi c'\u00e8 <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/microservice-trade-offs.html\">una risposta<\/a><\/noindex> piuttosto concreta<\/p>\n<ol>\n<li> da parte del gi\u00e0 citato Martin Fowler:<\/li>\n<li> confini chiari di modularit\u00e0;<\/li>\n<li> deploy indipendente;<\/li>\n<\/ol>\n<p>\nlibert\u00e0 di scelta delle tecnologie.<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e9fa2f1a03da2017e90c5f952b752187.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHo parlato molto con architetti e sviluppatori di software, chiedendo loro perch\u00e9 hanno bisogno di microservizi. E ho stilato la mia lista delle loro aspettative. Ecco cosa \u00e8 emerso:<\/p>\n<ul>\n<li> Se descrivessi \"a sensazione\" alcuni dei punti, direi che:<\/li>\n<li> confini chiari dei moduli: ecco, abbiamo un terribile monolite, e ora tutto sar\u00e0 ordinatamente suddiviso in repository Git, in cui tutto \u00e8 \"in ordine\", senza mescolare il caldo con il morbido;<\/li>\n<li> indipendenza nel deploy: potremo rilasciare i servizi in modo indipendente, affinch\u00e9 lo sviluppo proceda pi\u00f9 rapidamente (pubblicare nuove funzionalit\u00e0 in parallelo);<\/li>\n<li> b<i>un<\/i>indipendenza nello sviluppo: possiamo affidare questo microservizio a quel team\/sviluppatore, e quello a un altro, il che ci consentir\u00e0 di sviluppare pi\u00f9 velocemente;<\/li>\n<\/ul>\n<p><\/p>\n<h2>maggiore affidabilit\u00e0: se si verifica una degradazione parziale (crolla un microservizio su 20), smetter\u00e0 di funzionare solo un pulsante, mentre il sistema nel suo complesso continuer\u00e0 a funzionare.<\/h2>\n<p>\nArchitettura di microservizi tipica (dannosa) <i>Per spiegare perch\u00e9 nella realt\u00e0 le cose non sono cos\u00ec come ci aspettiamo, presenter\u00f2<\/i> un'immagine<\/p>\n<p>collettiva dell'architettura dei microservizi, basata sull'esperienza di molti progetti diversi.<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3b85936587109631d16882a52dd1b310.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn esempio sar\u00e0 un negozio online astratto, che intende competere con Amazon o almeno con OZON. La sua architettura di microservizi appare cos\u00ec:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e145b212a83814218add965ce26b3fed.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer una serie di motivi, questi microservizi sono scritti su piattaforme diverse:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, 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>\nPer Fowler, su questo punto <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/microservice-trade-offs.html\">che parla della \"retribuzione\" per l'uso dei microservizi:<\/a><\/noindex> Vediamo se le nostre aspettative sono state giustificate.<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/50fc6ac602cb2eb8383d2103101c01ce.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nConfini chiari dei moduli\u2026<\/p>\n<h3>quanti microservizi dobbiamo realmente sistemare<\/h3>\n<p>\nMa <b>, per implementare una modifica? Possiamo davvero capire come funziona tutto senza un tracer distribuito (dato che ogni richiesta \u00e8 gestita dalla met\u00e0 dei microservizi)?<\/b>Esiste un pattern \"<\/p>\n<p>grande palla di fango<noindex><a rel=\"nofollow\" href=\"http:\/\/www.laputan.org\/mud\/\">\", e qui si \u00e8 creata addirittura una palla di fango distribuita. A conferma di ci\u00f2, ecco un'illustrazione approssimativa di come circolano le richieste:<\/a><\/noindex>Indipendenza nel deployment\u2026<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c91086409c06f5a76b1f76bec30b737d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Tecnicamente \u00e8 stata raggiunta: possiamo aggiornare ogni microservizio separatamente. Ma nella pratica, dobbiamo tenere presente che di solito viene aggiornato<\/h3>\n<p>\nun numero elevato di microservizi <b>, e dobbiamo considerare<\/b>l'ordine del loro rollout <b>. Idealmente dovremmo testare in un contesto separato se stiamo rilasciando la versione nell'ordine corretto.<\/b>Libert\u00e0 di scelta della tecnologia\u2026<\/p>\n<h3>C'\u00e8. Solo che bisogna ricordare che spesso la libert\u00e0 confina con l'anarchia. \u00c8 molto importante non scegliere tecnologie solo per \"giocare\" con esse.<\/h3>\n<p>\nIndipendenza nello sviluppo\u2026<\/p>\n<h3>Come creare un ambiente di test per l'intera applicazione (da un cos\u00ec gran numero di componenti)? E bisogna anche mantenerlo aggiornato. Tutto ci\u00f2 porta al fatto che<\/h3>\n<p>\nil numero reale di ambienti di test <b>, che possiamo effettivamente mantenere,<\/b>risulta essere minimo. <b>E implementare tutto questo localmente?.. Risulta che spesso lo sviluppatore svolge il proprio lavoro in modo indipendente, ma \"alla cieca\", perch\u00e9 costretto ad aspettare che si liberi un ambiente per il test.<\/b>.<\/p>\n<p>Scalabilit\u00e0 separata\u2026<\/p>\n<h3>S\u00ec, ma \u00e8 limitata nell'ambito dei DBMS utilizzati. Nell'esempio presentato, non ci saranno problemi con Cassandra, ma ci saranno con MySQL e PostgreSQL.<\/h3>\n<p>\nM<\/p>\n<h3>aggiore affidabilit\u00e0\u2026<i>un<\/i>Non solo il guasto di un microservizio danneggia spesso il corretto funzionamento dell'intero sistema, ma c'\u00e8 anche un nuovo problema:<\/h3>\n<p>\nrendere ogni microservizio tollerante ai guasti \u00e8 molto complesso <b>. Perch\u00e9 nei microservizi vengono utilizzate tecnologie diverse (memcache, Redis, ecc.), e per ognuna bisogna pensare e implementare tutto, il che, ovviamente, \u00e8 possibile, ma richiede enormi risorse.<\/b>. Perch\u00e9 nei microservizi vengono utilizzate diverse tecnologie (memcache, Redis, ecc.), per ciascuna \u00e8 necessario pianificare e implementare tutto, il che, ovviamente, \u00e8 possibile, ma richiede enormi risorse.<\/p>\n<h3>Misurabilit\u00e0 del carico\u2026<\/h3>\n<p>\nCon questo davvero tutto bene.<\/p>\n<h3>La \"leggerezza\" dei microservizi\u2026<\/h3>\n<p>\nNon solo abbiamo avuto enormi <b>oneri di rete<\/b> (aumentano le richieste DNS, ecc.), ma a causa di un gran numero di sottoquery abbiamo cominciato a <b>replicare i dati<\/b> (memorizzare le cache), il che ha portato a un volume significativo di archiviazione.<\/p>\n<p>Ecco come corrisponde alle nostre aspettative:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, 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 al momento giusto? L'unica <i>soluzione<\/i> reale \u00e8 interrompere il traffico per questo. Ma come farlo in produzione?<\/li>\n<li> Se si tratta di supportare pi\u00f9 regioni, organizzare la resilienza in ognuna di esse \u00e8 un compito molto impegnativo.<\/li>\n<li> Si presenta 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 ci\u00f2?<\/h2>\n<p>\n<b>Iniziate con un'applicazione monolitica<\/b>. L'esperienza di Fowler <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/MonolithFirst.html\">sottolinea<\/a><\/noindex> indica che praticamente tutte le applicazioni microservizi di successo sono iniziate come monoliti che sono diventati troppo grandi, dopo di che sono stati suddivisi. Allo stesso tempo, praticamente tutti i sistemi costruiti come microservizi sin dall'inizio, prima o poi, hanno affrontato seri problemi.<\/p>\n<p>Un'altra considerazione preziosa \u00e8 che affinch\u00e9 un progetto con architettura microservizi abbia successo, \u00e8 necessario conoscere molto bene <b>sia l'area tematica che come costruire microservizi<\/b>. E il modo migliore per conoscere l'area tematica \u00e8 realizzare un monolite.<\/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 accettarlo e comprendere che \u00e8 un problema, che non vogliamo pi\u00f9 soffrire.<\/p>\n<p>Se nel caso di un monolite ingrandito (quando abbiamo esaurito la possibilit\u00e0 di acquistare risorse per esso) lo tagliamo, in questo caso si presenta la storia opposta: quando un'eccessiva microservizi non aiuta pi\u00f9, ma ostacola \u2014 <b>ritagliate l'eccesso e raggruppate<\/b>!<\/p>\n<p>Ad esempio, per l'immagine collettiva sopra...<\/p>\n<p>Liberatevi dei microservizi pi\u00f9 discutibili:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, 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: le dimensioni contano, 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 microservizio, scritto in uno (moderno e adeguato, come ritenete voi) linguaggio\/framework:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, 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: le dimensioni contano, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/f44baf6a02bf00317f1395ab339f57a9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 in realt\u00e0 si pu\u00f2 trasferire molto di pi\u00f9, ottenendo un risultato del genere:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, 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, e questo significa che possiamo ancora misurare il carico e scalarle singolarmente.<\/p>\n<h2>In sintesi<\/h2>\n<p>\nGuarda il quadro in modo pi\u00f9 ampio. Molto spesso, tutti questi problemi con i microservizi sorgono perch\u00e9 qualcuno ha preso il proprio compito, ma voleva \"giocare ai microservizi\".<\/p>\n<p><b>Nella parola \"microservizi\" la parte \"micro\" \u00e8 superflua<\/b>. Sono \"micro\" solo perch\u00e9 pi\u00f9 piccoli di un grande monolito. Ma non bisogna pensarli come a qualcosa di piccolo.<\/p>\n<p>E per la riflessione finale, torniamo alla grafica iniziale:<\/p>\n<p><img decoding=\"async\" alt=\"Microservizi: le dimensioni contano, anche se hai Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/a75665af4caa7c4982f70c59ec3c6e89.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa nota scritta a it <i>(in alto a destra)<\/i> sintetizza il fatto che <b>le competenze del team che realizza il vostro progetto sono sempre primarie<\/b> \u2014 saranno proprio loro a giocare un ruolo chiave nella vostra scelta tra microservizi e monoliti. Se il team non ha le abilit\u00e0 necessarie, ma inizia a fare microservizi, la storia sar\u00e0 sicuramente fatale.<\/p>\n<h2>Video e slide<\/h2>\n<p>\nVideo della presentazione (~50 minuti; sfortunatamente, non cattura le numerose emozioni dei partecipanti, che hanno in gran parte definito l'umore del discorso, ma cos\u00ec \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=\"Guarda il 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>(Dmitrij 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>(Dmitrij 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 piccoli progetti<\/a><\/noindex>\u00bb <i>(Dmitrij Stolyarov; 6 giugno 2017 a RootConf)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/324274\/\">Costruire immagini Docker per CI\/CD in modo rapido e conveniente con dapp<\/a><\/noindex>\u00bb <i>(Dmitrij Stoliarov; 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 Stoliarov; 31 maggio 2016 a RootConf)<\/i>.<\/li>\n<\/ul>\n<p>\nProbabilmente vi interesseranno 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 5.0.1.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\/it\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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.\" \/>\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: la dimensione conta, anche se avete Kubernetes | ProHoster","description":"Il 19 settembre a Mosca si \u00e8 tenuto il primo meetup tematico HUG (Highload++ User Group), che era dedicato a.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}