{"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\/da\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","title":{"rendered":"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>19. september i Moskva <noindex><a rel=\"nofollow\" href=\"https:\/\/www.meetup.com\/HighLoad-User-Group\/events\/254238096\/\">tog sted<\/a><\/noindex> den f\u00f8rste temam\u00f8de HUG (Highload++ User Group), der var dedikeret til mikrotjenester. Der blev pr\u00e6senteret et foredrag med titlen \u00abDrift af mikrotjenester: st\u00f8rrelse betyder noget, selvom du har Kubernetes\u00bb, hvor vi delte omfattende erfaringer fra virksomheden \u00abFlant\u00bb inden for drift af projekter med en mikrotjeneste-arkitektur. Det vil prim\u00e6rt v\u00e6re nyttigt for alle udviklere, der overvejer at anvende denne tilgang i deres nuv\u00e6rende eller fremtidige projekt.<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/5d84197eef093da02b3db2156841e644.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi pr\u00e6senterer <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=g9cgppj0gKQ\"><b>videoen med foredraget<\/b><\/a><\/noindex> (50 minutter, v\u00e6sentligt mere informativt end artiklen), samt en hovedopsummering i tekstform.<\/p>\n<p><i>NB: Video og pr\u00e6sentation er ogs\u00e5 tilg\u00e6ngelige i slutningen af denne publikation.<\/i><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Introduktion<\/h2>\n<p>\nSom regel har en god historie en opbygning, hovedplot og opl\u00f8sning. Dette foredrag minder mere om en tragisk opbygning. Det er ogs\u00e5 vigtigt at bem\u00e6rke, at det pr\u00e6senterer et syn p\u00e5 mikrotjenester fra siden af <i>udnyttelse<\/i>.<\/p>\n<p>Lad mig begynde med en s\u00e5dan graf, hvis forfatter (i 2015) er <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/MicroservicePremium.html\">blev<\/a><\/noindex> Martin Fowler:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/f0cc0e00f32f5ea0a736e09fd20eaa85.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGrafen viser, hvordan produktiviteten for en monolitisk applikation, der n\u00e5r en vis st\u00f8rrelse, begynder at falde. Mikrotjenester adskiller sig ved, at den oprindelige produktivitet med dem er lavere, men efterh\u00e5nden som kompleksiteten vokser, er degradationen af effektivitet ikke s\u00e5 m\u00e6rkbar.<\/p>\n<p>Jeg vil supplere denne graf for brug af Kubernetes:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/1b83f03639324c610a84bfd434317f48.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvorfor har applikationen med mikrotjenester f\u00e5et det bedre? Fordi en s\u00e5dan arkitektur stiller alvorlige krav til arkitekturen, som i mellemtiden bliver fremragende opfyldt af Kubernetes' muligheder. P\u00e5 den anden side vil noget af denne funktionalitet ogs\u00e5 v\u00e6re nyttig for monolitten, is\u00e6r fordi en typisk monolit i dag ikke rigtig er en ren monolit (detaljer f\u00f8lger i foredraget).<\/p>\n<p>Som det ses, adskiller den endelige graf (n\u00e5r b\u00e5de monolitiske og mikrotjenesteapplikationer k\u00f8res i en Kubernetes-infrastruktur) sig ikke meget fra den oprindelige. Herefter vil der blive talt om applikationer, der drives ved hj\u00e6lp af Kubernetes.<\/p>\n<h2>Nyttig og skadelig mikrotjenestearkitektur<\/h2>\n<p>\nHer er den vigtigste tanke:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c555e5fbdf09e4bb2be17fad23b8ff6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvad er <b>normal<\/b> mikrotjenestearkitektur? Den skal give dig reelle fordele ved at \u00f8ge arbejdseffektiviteten. Hvis vi vender tilbage til grafen, ser vi den her:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c27a7af10812580f0543888256a0e698.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvis vi kalder den <b>nyttig<\/b>, vil der p\u00e5 den anden side af grafen v\u00e6re <b>skadelig<\/b> mikrotjenestearkitektur (h\u00e6mmer arbejdet):<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/27a7298bd8f877b2bc69d19378a542e2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e5r vi vender tilbage til \"den centrale tanke\": Skal jeg overhovedet stole p\u00e5 min erfaring? Siden starten af dette \u00e5r har jeg set <b>85 projekter<\/b>. Ikke alle har v\u00e6ret mikrotjenester (omkring en tredjedel til halvdelen havde s\u00e5dan en arkitektur), men det er stadig et stort antal. Vi (firmaet \"Flant\") som outsourcere har mulighed for at se et bredt udvalg af applikationer, der udvikles b\u00e5de i sm\u00e5 virksomheder (med 5 udviklere) og i store (~500 udviklere). En ekstra fordel er, at vi ser, hvordan disse applikationer lever og udvikler sig over mange \u00e5r.<\/p>\n<h2>Hvorfor mikrotjenester?<\/h2>\n<p>\nDer er <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/microservice-trade-offs.html\">et ret konkret svar<\/a><\/noindex> fra den n\u00e6vnte Martin Fowler:<\/p>\n<ol>\n<li> klare gr\u00e6nser for modul\u00e6re deler;<\/li>\n<li> uafh\u00e6ngig deployment;<\/li>\n<li> frihed til at v\u00e6lge teknologier.<\/li>\n<\/ol>\n<p>\nJeg har talt meget med arkitekter og softwareudviklere og spurgt, hvorfor de har brug for mikrotjenester. Og jeg har lavet min liste over deres forventninger. Her er, hvad jeg kom frem til:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e9fa2f1a03da2017e90c5f952b752187.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvis jeg skal beskrive \"f\u00f8lelserne\" omkring nogle af punkterne, s\u00e5:<\/p>\n<ul>\n<li> klare gr\u00e6nser for moduler: vi har et skr\u00e6mmende monolit, og nu vil alt blive p\u00e6nt organiseret i Git-repositorier, hvor alt er \"p\u00e5 hylder\", ikke blandet varme med bl\u00f8de;<\/li>\n<li> uafh\u00e6ngighed af deployment: vi kan implementere tjenester uafh\u00e6ngigt, s\u00e5 udviklingen g\u00e5r hurtigere (parallel offentligg\u00f8re nye funktioner);<\/li>\n<li> uafh\u00e6ngighed af udviklingen: vi kan overdrage denne mikrotjeneste til et team\/udvikler, og den anden til en anden, hvilket g\u00f8r det muligt for os at udvikle hurtigere;<\/li>\n<li> b<i>fleste af<\/i>st\u00f8rre p\u00e5lidelighed: hvis der opst\u00e5r en delvis nedgang (hvis en mikrotjeneste falder ud af 20), s\u00e5 stopper kun \u00e9n knap med at fungere, mens systemet forts\u00e6tter med at fungere generelt.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Typisk (skadelig) mikrotjeneste arkitektur<\/h2>\n<p>\nFor at forklare, hvorfor virkeligheden ikke er, som vi forventer, vil jeg pr\u00e6sentere <i>et samlet<\/i> billede af mikrotjeneste arkitekturen baseret p\u00e5 erfaringer fra mange forskellige projekter.<\/p>\n<p>Et eksempel vil v\u00e6re en abstrakt internetbutik, der \u00f8nsker at konkurrere med Amazon eller i det mindste OZON. Dens mikrotjeneste arkitektur ser s\u00e5ledes ud:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3b85936587109631d16882a52dd1b310.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAf forskellige \u00e5rsager er disse mikrotjenester skrevet p\u00e5 forskellige platforme:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/e145b212a83814218add965ce26b3fed.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDa hver mikrotjeneste skal have autonomi, har mange af dem brug for deres egen database og cache. Den endelige arkitektur ser s\u00e5ledes ud:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/299b2ac7b6956e295c3d59210955e5e9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Hvad er konsekvenserne?<\/h2>\n<p>\nHos Fowler er der ogs\u00e5 noget at sige <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/microservice-trade-offs.html\">som handler om \"betalingen\" for brugen af mikrotjenester:<\/a><\/noindex> Lad os se, om vores forventninger er blevet opfyldt.<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/50fc6ac602cb2eb8383d2103101c01ce.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKlare gr\u00e6nser for moduler\u2026<\/p>\n<h3>hvor mange mikrotjenester skal vi faktisk rette<\/h3>\n<p>\nMen <b>, for at implementere \u00e6ndringen? Kan vi overhovedet forst\u00e5, hvordan det hele fungerer, uden en distribueret sporingsmekanisme (da enhver foresp\u00f8rgsel behandles af halvdelen af mikrotjenesterne)?<\/b>Der findes et m\u00f8nster af \"<\/p>\n<p>et stort klumpet rod<noindex><a rel=\"nofollow\" href=\"http:\/\/www.laputan.org\/mud\/\">\", og her er det rent faktisk blevet til et distribueret klumpet rod. For at bekr\u00e6fte dette \u2014 her er en omtrentlig illustration af, hvordan foresp\u00f8rgslerne bev\u00e6ger sig:<\/a><\/noindex>Uafh\u00e6ngighed af implementering\u2026<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/c91086409c06f5a76b1f76bec30b737d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Teknisk set er den opn\u00e5et: vi kan rulle hver mikrotjeneste ud separat. Men i praksis skal vi tage h\u00f8jde for, at der altid rulles<\/h3>\n<p>\nflere mikrotjenester ud <b>, og vi skal tage h\u00f8jde for<\/b>r\u00e6kkef\u00f8lgen af deres udrulning <b>. Ideelt set skal vi overhovedet teste i et separat milj\u00f8 for at sikre, at vi ruller ud i den rigtige r\u00e6kkef\u00f8lge.<\/b>Valgfrihed vedr\u00f8rende teknologi\u2026<\/p>\n<h3>Den er der. Men husk, at frihed ofte gr\u00e6nser op til anarki. Det er meget vigtigt her ikke kun at v\u00e6lge teknologier for at \"lege\" med dem.<\/h3>\n<p>\nUafh\u00e6ngighed af udvikling\u2026<\/p>\n<h3>Hvordan kan man skabe et testmilj\u00f8 for hele applikationen (fra s\u00e5 mange komponenter)? Og man skal ogs\u00e5 holde det opdateret. Alt dette f\u00f8rer til, at<\/h3>\n<p>\ndet reelle antal testmilj\u00f8er <b>, som vi i princippet kan vedligeholde,<\/b>viser sig at v\u00e6re minimalt <b>Og for at implementere alt dette lokalt?.. Det viser sig, at udvikleren ofte arbejder uafh\u00e6ngigt, men \"p\u00e5 gef\u00fchl\", fordi han er n\u00f8dt til at vente p\u00e5, at testmilj\u00f8et bliver ledigt.<\/b>.<\/p>\n<p>Separat skalering\u2026<\/p>\n<h3>Ja, men det er begr\u00e6nset af de anvendte databaser. I det givne eksempel vil der ikke v\u00e6re problemer med Cassandra, men der vil v\u00e6re med MySQL og PostgreSQL.<\/h3>\n<p>\nSt\u00f8rre p\u00e5lidelighed\u2026<\/p>\n<h3>Ikke alene er det s\u00e5dan, at nedbruddet af en mikrotjeneste ofte bryder den korrekte funktion af hele systemet, men der er ogs\u00e5 et nyt problem:<i>fleste af<\/i>det er meget sv\u00e6rt at g\u00f8re hver mikrotjeneste fail-sikker<\/h3>\n<p>\n. Fordi der anvendes forskellige teknologier i mikrotjenester (memcache, Redis osv.), skal der t\u00e6nkes grundigt over og implementeres en l\u00f8sning for hver, hvilket selvf\u00f8lgelig er muligt, men kr\u00e6ver enorme ressourcer. <b>Det er meget vanskeligt at g\u00f8re hver mikrotjeneste fejltolerant.<\/b>. Fordi der bruges forskellige teknologier i mikrotjenester (memcache, Redis osv.), skal der t\u00e6nkes grundigt over hver enkelt, og det skal implementeres, hvilket selvf\u00f8lgelig er muligt, men kr\u00e6ver enorme ressourcer.<\/p>\n<h3>M\u00e5le belastning...<\/h3>\n<p>\nDet er virkelig alt godt med dette.<\/p>\n<h3>\u00abLetheden\u00bb ved mikroservices...<\/h3>\n<p>\nVi har ikke kun f\u00e5et enorme <b>netv\u00e6rksomkostninger<\/b> (\u00f8get DNS-anmodninger mv.), men ogs\u00e5 p\u00e5 grund af mange underanmodninger er vi begyndt <b>at replikere data<\/b> (opbevare caches), hvilket har f\u00f8rt til betydelige lagerbehov.<\/p>\n<p>Og her er resultatet af vores forventninger:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/ab189c8649d720c7add975ac54811f51.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Men det er ikke alt!<\/h3>\n<p>\nFordi:<\/p>\n<ul>\n<li> Vi f\u00e5r sandsynligvis brug for en meddelelsesbus.<\/li>\n<li> Hvordan laver man et konsistent backup p\u00e5 det \u00f8nskede tidspunkt? Den eneste <i>reelle<\/i> mulighed er at stoppe trafikken for dette. Men hvordan g\u00f8r man det i produktion?<\/li>\n<li> N\u00e5r det handler om at underst\u00f8tte flere regioner, er det en meget ressourcekr\u00e6vende opgave at organisere robusthed i hver af dem.<\/li>\n<li> Der opst\u00e5r et problem med at foretage centraliserede \u00e6ndringer. For eksempel, hvis vi skal opdatere PHP-versionen, skal der g\u00f8res et commit i hver repository (og der er mange).<\/li>\n<li> V\u00e6ksten af operationel kompleksitet synes at v\u00e6re eksponentiel.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Hvad skal vi g\u00f8re ved alt dette?<\/h2>\n<p>\n<b>Begynd med den monolitiske applikation<\/b>. Er erfaringen fra Fowler <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/MonolithFirst.html\">says<\/a><\/noindex> med, at stort set alle succesfulde mikroservice-applikationer startede som en monolit, der blev for stor, hvorefter den blev opdelt. Samtidig har stort set alle systemer, der blev bygget som mikroservices fra starten, oplevet alvorlige problemer f\u00f8r eller siden.<\/p>\n<p>En anden v\u00e6rdifuld tanke er, at for at et projekt med mikroservice-arkitektur skal v\u00e6re succesfuldt, skal du have meget gode kendskaber til <b>b\u00e5de emneomr\u00e5det og hvordan man laver mikroservices.<\/b>Og den bedste m\u00e5de at l\u00e6re emneomr\u00e5det p\u00e5 er at lave en monolit.<\/p>\n<h2>Men hvad skal man g\u00f8re, hvis vi allerede er i en s\u00e5dan situation?<\/h2>\n<p>\nDet f\u00f8rste skridt mod at l\u00f8se ethvert problem er at acceptere det og forst\u00e5, at det er et problem, at vi ikke l\u00e6ngere \u00f8nsker at lide.<\/p>\n<p>Hvis vi sk\u00e6rer et voksende monolit af (n\u00e5r vi ikke l\u00e6ngere kan k\u00f8be ressourcer til det), s\u00e5 er det i dette tilf\u00e6lde omvendt: n\u00e5r overdreven mikroservice-hed ikke l\u00e6ngere hj\u00e6lper, men hinder \u2014 <b>sk\u00e6r det overfl\u00f8dige og forenkl<\/b>!<\/p>\n<p>For eksempel til den ovenfor beskrevne samlede figur...<\/p>\n<p>Lad v\u00e6re med at bruge de mest tvivlsomme mikroservices:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/4b72ede0452890027a950d31ced26405.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFlet alle mikroservices, der er ansvarlige for frontend-genereringen:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/3bf2831a637cfa148b032ba8c521353a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 i \u00e9n mikrotjeneste, skrevet p\u00e5 et (moderne og fornuftigt, som du selv mener) sprog\/framework:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/73f53f5f4f41f72a7c6d187d855bbd95.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen vil have \u00e9n ORM (\u00e9n DBMS) og f\u00f8rst et par applikationer:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/f44baf6a02bf00317f1395ab339f57a9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 men generelt kan der flyttes meget mere, hvilket giver dette resultat:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/97c02ae24199bca42e4bf24f8031578a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDesuden k\u00f8rer vi alt dette i Kubernetes som separate instanser, hvilket betyder, at vi stadig kan m\u00e5le belastningen og skalere dem individuelt.<\/p>\n<h2>Sammenfatning<\/h2>\n<p>\nSe p\u00e5 billedet fra et bredere perspektiv. Meget ofte opst\u00e5r alle disse problemer med mikrotjenester, fordi nogen tog deres opgave, men ville \"lege med mikrotjenester\".<\/p>\n<p><b>I ordet \"mikrotjenester\" er delen \"mikro\" overfl\u00f8dig.<\/b>. De er \"mikro\" kun fordi de er mindre end et stort monolit. Men man skal ikke t\u00e6nke p\u00e5 dem som noget lille.<\/p>\n<p>Og for den afsluttende tanke, lad os vende tilbage til den oprindelige graf:<\/p>\n<p><img decoding=\"async\" alt=\"Mikrotjenester: St\u00f8rrelse betyder noget, selvom du har Kubernetes\" src=\"\/wp-content\/uploads\/2019\/04\/a75665af4caa7c4982f70c59ec3c6e89.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen tilknyttede bem\u00e6rkning <i>(\u00f8verst til h\u00f8jre)<\/i> kan opsummeres til, at <b>f\u00e6rdighederne i det team, der laver dit projekt, altid er prim\u00e6re<\/b> \u2014 det er dem, der vil spille en n\u00f8glerolle i dit valg mellem mikrotjenester og monolit. Hvis teamet mangler kompetencer, men g\u00e5r i gang med mikrotjenester, vil historien helt sikkert ende fatalt.<\/p>\n<h2>Video og slides<\/h2>\n<p>\nVideo fra opl\u00e6gget (~50 minutter; desv\u00e6rre formidler den ikke de mange f\u00f8lelser hos deltagerne, som i h\u00f8j grad bestemte stemningen i foredraget, men s\u00e5dan er det):<\/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=\"Afspil 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>Pr\u00e6sentation af opl\u00e6gget:<\/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>\nAndre opl\u00e6g p\u00e5 vores blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/412901\/\">Overv\u00e5gning og Kubernetes<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 28. maj 2018 p\u00e5 RootConf)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/345116\/\">Bedste CI\/CD praksisser med Kubernetes og GitLab<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 7. november 2017 p\u00e5 HighLoad++)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/331188\/\">Vores erfaring med Kubernetes i sm\u00e5 projekter<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 6. juni 2017 p\u00e5 RootConf)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/324274\/\">Bygger Docker-images til CI\/CD hurtigt og nemt med dapp<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 8. november 2016 p\u00e5 HighLoad++)<\/i>;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/322686\/\">Praksis for Continuous Delivery med Docker<\/a><\/noindex>\u00bb <i>(Dmitry Stolyarov; 31. maj 2016 p\u00e5 RootConf)<\/i>.<\/li>\n<\/ul>\n<p>\nM\u00e5ske er du ogs\u00e5 interesseret i f\u00f8lgende publikationer:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/347518\/\">D\u00f8den for mikrotjenestevanviddet i 2018<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/425085\/\">7 bedste praksisser for containerdrift if\u00f8lge Google<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/flant\/blog\/340270\/\">Statistik fra The New Stack om udfordringer ved implementering af Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\udd47 Mikrotjenester: St\u00f8rrelse t\u00e6ller, selvom du har Kubernetes | ProHoster","description":"Den 19. september fandt det f\u00f8rste temam\u00f8de HUG (Highload++ User Group) sted i Moskva, som var dedikeret til.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/mikroservisy-razmer-imeet-znachenie-dazhe-esli-u-vas-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/31761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=31761"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/31761\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/23651"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=31761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=31761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=31761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}