{"id":38981,"date":"2019-10-31T22:27:10","date_gmt":"2019-10-31T19:27:10","guid":{"rendered":"https:\/\/prohoster.info\/blog\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\/"},"modified":"2019-10-31T22:27:10","modified_gmt":"2019-10-31T19:27:10","slug":"servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","title":{"rendered":"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Direkt\u00f8r for driften af portalen Banki.ru, Andrey Nikolsky, talte p\u00e5 sidste \u00e5rs konference <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">DevOpsDays Moskva<\/a><\/noindex> om for\u00e6ldrel\u00f8se tjenester: hvordan man identificerer en for\u00e6ldrel\u00f8s i infrastrukturen, hvad der er d\u00e5rligt ved for\u00e6ldrel\u00f8se tjenester, hvad man skal g\u00f8re med dem, og hvordan man skal h\u00e5ndtere det, hvis intet hj\u00e6lper.<\/p>\n<p>Under cut'en er der den tekstuelle version af rapporten. <\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"j9I4oeEXBO8\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/j9I4oeEXBO8\/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><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nHej kolleger! Mit navn er Andrey, jeg leder driften i selskabet Banki.ru.<\/p>\n<p>Vi har store tjenester, det er s\u00e5danne monolit-tjenester, der er tjenester i en mere klassisk forstand, og der er helt sm\u00e5. I min arbejds- og landmandsterminologi siger jeg, at hvis tjenesten er simpel og lille, s\u00e5 er den mikro, og hvis den ikke er s\u00e6rlig simpel og ikke lille, s\u00e5 er det bare en tjeneste. <\/p>\n<h3><b>Fordele ved tjenester<\/b><\/h3>\n<p>\nJeg vil hurtigt gennemg\u00e5 fordelene ved tjenester. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/4c34a3af9125c5869eb7c1650bc3855a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor det f\u00f8rste \u2014 skalering. Du kan hurtigt g\u00f8re noget p\u00e5 tjenesten og lancere det i produktion. Du f\u00e5r trafik, du kloner tjenesten. Du f\u00e5r mere trafik, du kloner igen, og s\u00e5 lever du med det. Det er et godt bonuspoint, og i princippet, da vi startedede, blev det betragtet som det vigtigste, hvorfor vi overhovedet laver alt dette.<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/c536f380ece14e0c873f765b587fb3c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor det andet, isoleret udvikling, n\u00e5r du har flere udviklingsteams, forskellige udviklere i hvert team, og hvert team arbejder p\u00e5 deres egen tjeneste.<\/p>\n<p>Der opst\u00e5r et problem med teams. Udviklere kan v\u00e6re forskellige. Og der findes for eksempel <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=VPDJXngp2bM\">snefnug-mennesker<\/a><\/noindex>. Jeg s\u00e5 det f\u00f8rste gang hos Maksim Dorofeev. Nogle gange er der snefnug-mennesker i nogle teams, og i andre er der ikke. Dette g\u00f8r, at de forskellige tjenester, der bruges i selskabet, er lidt uensartede. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/f1e18ab059bd2b975d4c6ff1b6434626.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe p\u00e5 billedet: det er en god udvikler, han har store h\u00e6nder, han kan g\u00f8re meget. Hovedproblemet er, hvor disse h\u00e6nder kommer fra. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/88fdc7266e97be8732f252908329a8f2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTjenester giver mulighed for at bruge forskellige programmeringssprog, der er bedre egnet til forskellige opgaver. En tjeneste p\u00e5 Go, en anden p\u00e5 Erlang, en p\u00e5 Ruby, noget p\u00e5 PHP, noget p\u00e5 Python. Generelt kan man brede sig meget. Her er der ogs\u00e5 nuancer.<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/98a4b1037066d67e4f16bab934cebac6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nServiceorienteret arkitektur handler f\u00f8rst og fremmest om devops. Det vil sige, hvis du ikke har automatisering, ikke har en deploy-process, hvis du konfigurerer manuelt, kan dine konfigurationer variere fra instans til instans, og du skal ind for at lave noget, s\u00e5 er du i helvede. <\/p>\n<p>For eksempel, hvis du har 20 tjenester, og du skal implementere dem manuelt, s\u00e5 har du 20 konsoller, og du trykker samtidig p\u00e5 \"enter\" som en ninja. Det er ikke s\u00e6rlig godt. <\/p>\n<p>Hvis du har en tjeneste efter testning (hvis der selvf\u00f8lgelig er testning), og der er behov for lidt finjustering for at f\u00e5 den til at fungere i produktion, har jeg ogs\u00e5 d\u00e5rlige nyheder til dig. <\/p>\n<p>Hvis du er afh\u00e6ngig af specifikke Amazon-tjenester og arbejder i Rusland, s\u00e5 havde du for to m\u00e5neder siden ogs\u00e5 \"Alt br\u00e6nder omkring mig, jeg har det fint, alt er fantastisk\".<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/474f5f1c3f0ced131df5ee8f30f0aa15.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi bruger Ansible til at automatisere deployment, Puppet til konvergens, Bamboo til automatisering af implementering, Confluence til at beskrive det hele p\u00e5 en eller anden m\u00e5de.<\/p>\n<p>Jeg vil ikke g\u00e5 i detaljer med det, fordi pr\u00e6sentationen handler mere om interaktionspraksis end om den tekniske implementering. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/ab837bed67ee319d72da705bc632e3f3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi har haft for eksempel problemer med, at Puppet p\u00e5 serveren k\u00f8rer med Ruby 2, mens en applikation er skrevet til Ruby 1.8, og de fungerer ikke sammen. Der opst\u00e5r et eller andet problem. Og n\u00e5r du skal have flere versioner af Ruby p\u00e5 \u00e9n maskine, begynder du normalt at f\u00e5 problemer. <\/p>\n<p>For eksempel giver vi hver udvikler en platform, der har cirka alt, hvad vi har, alle tjenester, der kan udvikles, s\u00e5 de har et isoleret milj\u00f8, hvor de kan \u00f8del\u00e6gge det og bygge det, som de \u00f8nsker. <\/p>\n<p>Nogle gange har man brug for en specielt kompilering pakke med underst\u00f8ttelse af noget. Det er ret strengt. Jeg h\u00f8rte en pr\u00e6sentation, hvor en Docker-billede vejer 45 GB. P\u00e5 Linux er det selvf\u00f8lgelig lettere, der er mindre, men derudover vil der ikke v\u00e6re plads nok. <\/p>\n<p>Og s\u00e5 er der modstridende afh\u00e6ngigheder, n\u00e5r en del af projektet afh\u00e6nger af \u00e9n version af et bibliotek, mens en anden del afh\u00e6nger af en anden version, og bibliotekerne kan slet ikke installeres sammen. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/acc4c38c547cd6d0580cf3524532393a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi har websites og tjenester p\u00e5 PHP 5.6, vi skammer os over dem, men hvad skal vi g\u00f8re. Det er p\u00e5 \u00e9n platform. Der er websites og tjenester p\u00e5 PHP 7, og de er flere, dem skammer vi os ikke over. Og hver udvikler har sin egen database, hvor de gladeligt arbejder. <\/p>\n<p>Hvis du arbejder i en virksomhed med et programmeringssprog, virker tre virtuelle maskiner pr. udvikler som noget normalt. Hvis du har forskellige programmeringssprog, bliver situationen v\u00e6rre.<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/9f5da38456024679ba6a41768466cb82.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDu f\u00e5r hjemmesider og tjenester, og s\u00e5 en platform til Go, en platform til Ruby, og m\u00e5ske endnu en Redis ved siden af. I sidste ende bliver det til et stort supportomr\u00e5de, hvor noget altid kan g\u00e5 i stykker.<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/20bde06e0aaceea028fabea09540d2a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDerfor har vi erstattet programmeringssprogsfunktionerne med forskellige rammer, da PHP-rammerne er meget forskellige og har forskellige muligheder, forskellige f\u00e6llesskaber og forskellig support. Man kan skrive en tjeneste, s\u00e5 man allerede har noget klar dertil. <\/p>\n<h3><b>Hver tjeneste har sit eget team<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/ff32f7449c831e6dcb2bd9c41fb9c8e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVores st\u00f8rste fordel, som har krystallisert sig over flere \u00e5r, er, at hver tjeneste har sit eget team. Det er bekvemt for store projekter, da man kan spare tid p\u00e5 dokumentationen, og managerne kender deres projekt godt. <\/p>\n<p>Opgaver fra support kan nemt kastes ind. For eksempel, hvis en forsikringstjeneste g\u00e5r ned. S\u00e5 g\u00e5r teamet, der besk\u00e6ftiger sig med forsikring, straks ind for at rette det. <\/p>\n<p>Nye funktioner bliver hurtigt lavet, fordi n\u00e5r du har en atomar tjeneste, kan man hurtigt f\u00e5 noget til at passe ind. <\/p>\n<p>Og n\u00e5r du har brudt din tjeneste, hvilket uundg\u00e5eligt vil ske, rammer det ikke andre tjenester, og udviklerne fra andre teams kommer ikke til dig med k\u00f8ller og siger: \u00ab\u00c5h, nej, lad v\u00e6re med det\u00bb. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/30d99fa39654701437cdf90929d6a45e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom altid er der nuancer. Vi har stabile teams, og teammanagerne er godt forankrede. Der er klare dokumenter, og managerne holder godt \u00f8je med alt dette. Hver teamleder har flere tjenester, og der er specifik kompetence. <\/p>\n<p>Hvis teams er flydende (det bruges ogs\u00e5 hos os nogle gange), er der en god metode kaldet \u00abstjernekortet\u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/cd18530d30973628f9351757a800dc37.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDu har en liste over tjenester og personer. En stjerne betyder, at en person er ekspert p\u00e5 denne tjeneste, en bog betyder, at en person studerer denne tjeneste. M\u00e5lene for personen er at bytte bogen til en stjerne. Hvis der ikke st\u00e5r noget imod en tjeneste, begynder problemerne, som jeg vil tale videre om. <\/p>\n<h3><b>Hvordan opst\u00e5r for\u00e6ldrel\u00f8se tjenester?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/8ae33d6e940700a5941409b7cedf3e9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet f\u00f8rste problem, f\u00f8rste m\u00e5de at f\u00e5 en service-forladthed i sin infrastruktur p\u00e5, er fyringer af medarbejdere. Har nogen nogensinde oplevet, at deadlines fra forretningen kommer, f\u00f8r opgaverne er vurderet? Nogle gange er deadlines stramme, og der er simpelthen ikke tid til dokumentationen. \"Vi skal have servicen i produktion, s\u00e5 skriver vi resten senere.\" <\/p>\n<p>Hvis teamet er lille, kan der v\u00e6re \u00e9n udvikler, der skriver det hele, mens de andre er hj\u00e6lpere. \"Jeg har skrevet hovedarkitekturen, s\u00e5 lad os f\u00e5 nogle gr\u00e6nseflader p\u00e5 plads.\" S\u00e5 p\u00e5 et tidspunkt forlader lederen, for eksempel, teamet. I den periode, hvor lederen er v\u00e6k, og der endnu ikke er ansat en ny, beslutter udviklerne selv, hvor servicen skal hen, hvad der sker. Og som vi ved (lad os vende tilbage til nogle slides tilbage), i nogle teams er der snefnugsfolk, nogle gange er snefnug-lederen ogs\u00e5 en snefnug. S\u00e5 forlader han, og vi ender med en service-forladthed. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/44741c897bfd9dc04e0a977c1cf08df3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nImidlertid forsvinder ikke opgaverne fra support og forretning, de samler sig i backloggen. Hvis der under udviklingen af servicen var arkitektoniske fejl, samler de sig ogs\u00e5 i backloggen. Servicen forringes langsomt. <\/p>\n<h3><b>Hvordan identificerer man en forladthed?<\/b> <\/h3>\n<p>\nDenne liste beskriver situationen ret godt. Hvem kan genkende sig selv i sin infrastruktur?<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/b852d070bb6864f48e3a6ae9921a12b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOm dokumenterede work-arounds: der er en service, og generelt fungerer den, den har en manual p\u00e5 to sider om, hvordan man arbejder med den, men hvordan den fungerer internt, ved ingen. <\/p>\n<p>Eller for eksempel, der findes en forkortelseslink. I \u00f8jeblikket har vi brug for tre forskellige forkortelseslink til forskellige form\u00e5l i forskellige tjenester. Det er netop konsekvenserne af det. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/350a041f21fcd75d9a948d2b9b77cda8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNu skal jeg v\u00e6re kaptajn \u00e5benbarhed. Hvad skal der g\u00f8res? For det f\u00f8rste skal servicen overdrages til en anden leder, et andet team. Hvis din teamleder ikke allerede har forladt, skal der inkluderes nogen i det andet team, der i det mindste har en forst\u00e5else for servicen, n\u00e5r man indser, at servicen ligner en forladthed. <\/p>\n<p>Hovedsagen er: du skal have procedurer for overdragelse, skrevet i blod. I vores tilf\u00e6lde er det normalt mig, der holder \u00f8je med dette, fordi jeg har brug for, at det fungerer. Ledere \u00f8nsker, at det skal overdrages hurtigt, og hvad der s\u00e5 sker, er ikke s\u00e5 vigtigt for dem. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/87b9d86c2c795f5d71db1489cab200a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen n\u00e6ste m\u00e5de at h\u00e5ndtere et projekt p\u00e5 er at sige: \u201eLad os udlicitere det, s\u00e5 g\u00e5r det hurtigere, og s\u00e5 overdrager vi det til teamet\u201d. Det er klart, at alle har nogle planer i teamet og en r\u00e6kkef\u00f8lge. Ofte t\u00e6nker forretningskunden, at outsource-virksomheden vil g\u00f8re det p\u00e5 samme m\u00e5de som den interne IT-afdeling. Selvom deres motiver er forskellige. Der kan komme m\u00e6rkelige teknologiske l\u00f8sninger og underlige algoritmiske l\u00f8sninger ved udlicitering.<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/b4208ccb134cbc694ea4993ec2751ec5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor eksempel havde vi en service, hvor Sphinx var placeret p\u00e5 forskellige uventede steder. Jeg vil senere fort\u00e6lle, hvad vi var n\u00f8dt til at g\u00f8re. <\/p>\n<p>Outsourcere har deres egne frameworks. Det er bare ren PHP med copy-paste fra et tidligere projekt, hvor man kan finde alt muligt. Store problemer i deploy-scripts, hvor man med komplicerede Bash-scripts skal \u00e6ndre et par linjer i en fil, mens disse deploy-scripts kaldes af et andet script. I sidste ende \u00e6ndrer man deployment-systemet, v\u00e6lger noget andet, og pludselig fungerer servicen ikke mere. Fordi der skulle v\u00e6re 8 links mellem forskellige mapper. Eller det kan ske, at 1000 poster fungerer, men 100.000 g\u00f8r ikke. <\/p>\n<p>Jeg forts\u00e6tter med at lede. Accept af service fra outsourcing er en procedure, der er obligatorisk. Har nogen fors\u00f8gt at modtage en service fra outsourcing, men det bliver ikke accepteret? Det er selvf\u00f8lgelig ikke s\u00e5 popul\u00e6rt som et projekt uden ejer, men stadig. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/92ef67a1bb714cdfb820efe432d0303b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTjenesten skal kontrolleres, tjenesten skal anmeldes, adgangskoder skal \u00e6ndres. Vi havde en situation, hvor vi fik en tjeneste med en adminpanel som \"if login == 'admin' &amp;&amp; password == 'admin'\u2026\", direkte skrevet i koden. Vi sidder og t\u00e6nker, og det er noget, folk skriver i 2018?<\/p>\n<p>Test af lagerkapacitet er ogs\u00e5 n\u00f8dvendigt. Man skal se, hvad der sker med 100.000 poster, inden man sender servicen i produktion. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/3fabdc20049892cee7636c30e595881d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet skal ikke v\u00e6re pinligt at sende servicen til forbedringer. N\u00e5r du siger: \u201eVi vil ikke acceptere denne service, vi har 20 opgaver, g\u00f8r dem, s\u00e5 accepterer vi det\u201d, s\u00e5 er det helt normalt. Samvittigheden b\u00f8r ikke plage dig over, at du s\u00e6tter en manager i en sv\u00e6r situation, eller at virksomheden bruger penge. Virksomheden vil senere bruge meget mere.<\/p>\n<p>Vi havde et tilf\u00e6lde, hvor vi besluttede at lave et pilotprojekt p\u00e5 outsourcing.<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/a5b25638e51c4eabe9d6a6971f08fa6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet blev afleveret til tiden, og det var det eneste kvalitetskriterium. Derfor lavede de endnu et pilotprojekt, som knap engang var et pilotprojekt. Disse tjenester blev accepteret, og med administrative midler sagde de, her er jeres kode, her er teamet, her er jeres manager. Tjenesterne begyndte faktisk allerede at generere indt\u00e6gter. Alligevel forblev de i virkeligheden stadig forladte, ingen forst\u00e5r, hvordan de fungerer, og managerne giver sig selv frie h\u00e6nder i forhold til deres opgaver. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/29ac8ab670df5d2c92dc7940d0a74e24.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer er ogs\u00e5 et fantastisk koncept \u2014 guerillaprogrammering. N\u00e5r en eller anden afdeling, som regel marketingafdelingen, \u00f8nsker at teste en hypotese og bestiller tjenesten helt i outsourcing. Den modtager trafik, de lukker dokumenter, underskriver kontrakter med entrepren\u00f8ren, g\u00e5r i drift og siger: \u00abHey, vi har en tjeneste her, den har allerede trafik, den genererer penge for os, lad os tage den i brug\u00bb. Vi er s\u00e5dan: \u00abWhoa, hvordan kan det v\u00e6re\u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/1fa0187e5db9bed7af0c97ac8500567f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOg en anden m\u00e5de at f\u00e5 en forladt tjeneste p\u00e5: n\u00e5r et team pludselig bliver overbelastet, siger ledelsen: \u00abLad os overf\u00f8re denne tjeneste fra dette team til et andet team med mindre belastning\u00bb. Og s\u00e5 overf\u00f8rer vi den til et tredje team og skifter manager. Og i sidste ende har vi igen et forladt projekt.<\/p>\n<h3><b>Hvad er problemet med de forladte tjenester?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/009170e7989a78e8bd9f5b7b364e358c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor dem, der ikke ved det, er dette den fors\u00e6nkede svenske slagskib Wasa, ber\u00f8mt for at det sank fem minutter efter sj\u00f8s\u00e6tningen. Og den svenske konge henrettede forresten ingen for det. Det blev bygget af to generationer ingeni\u00f8rer, der ikke vidste, hvordan man bygger s\u00e5danne skibe. En lovm\u00e6ssig effekt.<\/p>\n<p>Skibet kunne i \u00f8vrigt v\u00e6re sunket meget v\u00e6rre, for eksempel hvis kongen allerede var om bord p\u00e5 vej ind i en storm. Men det sank straks, og if\u00f8lge agile principper er det godt \u2014 fejle tidligt. <\/p>\n<p>Hvis vi fejler tidligt, er der som regel ikke problemer. For eksempel, under acceptansprocessen bliver det sendt til forbedring. Men hvis vi fejler allerede i produktionen, n\u00e5r pengene er investeret, kan der opst\u00e5 problemer. Konsekvenserne, som de kalder det i erhvervslivet.<\/p>\n<p>Hvad er farerne ved forladte tjenester:<\/p>\n<ul>\n<li>Tjenesten kan pludselig g\u00e5 ned. <\/li>\n<li>Tjenesten kan tage lang tid at reparere eller slet ikke blive repareret. <\/li>\n<li>Problemer med sikkerheden. <\/li>\n<li>Problemer med forbedringer og opdateringer. <\/li>\n<li>Hvis en vigtig tjeneste g\u00e5r ned, lider virksomhedens omd\u00f8mme. <\/li>\n<\/ul>\n<p><\/p>\n<h3><b>Hvad skal man g\u00f8re med forladte tjenester?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/094444a042ccf12bf4c9e166c3fffe47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLad mig gentage, hvad man skal g\u00f8re. For det f\u00f8rste skal der v\u00e6re dokumentation. 7 \u00e5r i Banki.ru l\u00e6rte mig, at testere ikke b\u00f8r tro p\u00e5 udviklerne, og driftsafdelingen skal ikke tage nogen p\u00e5 ordet. Man skal tjekke. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/23d652f96e93eb52d9172b103121fe54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor det andet skal man skrive interaktionsskemaer, fordi der er situationer, hvor tjenester, der ikke er taget s\u00e6rlig godt imod, indeholder afh\u00e6ngigheder, som ingen har n\u00e6vnt. For eksempel har udviklerne knyttet en tjeneste til deres n\u00f8gle til Yandex Maps eller Dadata. Hvis dit gratis kvote er opbrugt, g\u00e5r alt i stykker, og du ved ikke, hvad der overhovedet skete. Alle s\u00e5danne problemer skal v\u00e6re beskrevet: tjenesten bruger Dadata, Sms, eller noget andet.<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/b2770a07cf265ad8a3890b2cb2f62263.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor det tredje, arbejde med teknisk g\u00e6ld. N\u00e5r du laver vingesus eller tager en tjeneste og siger, at noget skal g\u00f8res, s\u00e5 skal du s\u00f8rge for, at det bliver gjort. Fordi det senere kan vise sig, at et lille hul ikke er s\u00e5 lille, og at du falder ned i det.<\/p>\n<p>Vi har haft en historie med arkitekturm\u00e6ssige opgaver, relateret til Sphinx. I en af tjenesterne blev Sphinx brugt til at indtaste lister. Bare en liste med paginering, men den blev genindekseret hver nat. Den var bygget fra to indekser: en stor, der blev indekseret hver nat, og en lille indeks, der blev knyttet til den. Hver dag, med 50% sandsynlighed, ville det enten g\u00e5 galt eller ej, ved udrulning blev indekset \u00f8delagt, og vores nyheder stoppede med at opdatere p\u00e5 forsiden. I starten tog det 5 minutter, indtil indekset blev genindekseret, s\u00e5 voksede indekset, og p\u00e5 et tidspunkt begyndte det at tage 40 minutter. Da vi fjernede det, sukkede vi lettet, fordi det var klart, at der ville g\u00e5 lidt tid, f\u00f8r vores indeks ville blive genindekseret i en hel arbejdsdag. Det ville v\u00e6re en fiasko for vores portal, otte timer uden nyheder \u2014 det ville stoppe forretningen.<\/p>\n<h3><b>Handlingsplan for for\u00e6ldrel\u00f8s tjeneste<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/f072ec872d59de058faf1994ac39f161.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er faktisk meget sv\u00e6rt at g\u00f8re, fordi devops handler om kommunikation. Man \u00f8nsker at have gode relationer til sine kolleger, og n\u00e5r man sl\u00e5r dem i hovedet med procedurer, kan de have blandede f\u00f8lelser om dem, der g\u00f8r s\u00e5dan. <\/p>\n<p>Udover alle disse punkter er der en vigtig ting: Der skal v\u00e6re specifikke personer ansvarlige for hver enkelt service og hvert enkelt trin i deploy-proceduren. N\u00e5r der ikke er folk til stede, og man er n\u00f8dt til at involvere andre, bliver det besv\u00e6rligt at l\u00e6re alt dette.<\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/28e7372012d5089d3ac1be3d7dc97e03.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvis alt dette ikke har hjulpet, og din for\u00e6ldrel\u00f8se service stadig er ensom, ingen \u00f8nsker at tage den til sig, dokumentationen ikke bliver skrevet, og teamet, der er blevet tilkaldt til denne service, n\u00e6gter at g\u00f8re noget, er der en simpel l\u00f8sning \u2014 lav det hele om. <\/p>\n<p>Det vil sige, at du tager kravene til servicen p\u00e5 ny og skriver en ny service, der er bedre, p\u00e5 en bedre platform, uden underlige teknologiske l\u00f8sninger. Og migrerer til den i drift. <\/p>\n<p><img decoding=\"async\" alt=\"For\u00e6ldrel\u00f8se services: den m\u00f8rke side af (mikro)servicearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/63d0bf7d9ac1e5c5b00b67b519e228a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi havde en situation, hvor vi tog en service p\u00e5 Yii 1 og inds\u00e5, at vi ikke kunne videreudvikle den, fordi vi ikke havde udviklere tilbage, der kunne skrive godt p\u00e5 Yii 1. Alle udviklere kan godt skrive p\u00e5 Symfony 3. Hvad g\u00f8r man? Vi afsatte tid, samlede et team, udpegede en leder, rewriteede projektet og skiftede blidt trafik til det. <\/p>\n<p>Efter dette kan den gamle service slettes. Det er min yndlingsprocedure, n\u00e5r man skal tage et eller andet service fra konfigurationsstyringssystemet og s\u00e5 g\u00e5 ind og sikre, at alle instanser i produktionen er lukket ned, s\u00e5 der ikke er nogen spor tilbage for udviklerne. Repositoriet i Git forbliver.<\/p>\n<p>Det er alt, hvad jeg \u00f8nskede at fort\u00e6lle, jeg er klar til at diskutere, emnet er noget kontroversielt, og mange har deres meninger. <\/p>\n<p><b>P\u00e5 slides var der n\u00e6vnt, at I havde unificeret sprog. Et eksempel var resizing af billeder. Men er det virkelig n\u00f8dvendigt at stramme det op til \u00e9t sprog? Fordi resizing af billeder p\u00e5 PHP, kunne man faktisk ogs\u00e5 g\u00f8re p\u00e5 Golang.<\/b><\/p>\n<p>Det er faktisk ikke n\u00f8dvendigt, ligesom alle andre praksisser. I visse tilf\u00e6lde kan det endda v\u00e6re u\u00f8nsket. Men det er vigtigt at forst\u00e5, at hvis der er 50 personer i din virksomheds techafdeling, hvoraf 45 er PHP-udviklere, 3 er devops, der kan Python, Ansible, Puppet og s\u00e5 videre, og kun \u00e9n af dem skriver en Go-service til resizing af billeder, s\u00e5 n\u00e5r han g\u00e5r, forlader ekspertisen virksomheden sammen med ham. Og samtidig skal du finde en specifik udvikler p\u00e5 markedet, der kender dette sprog, is\u00e6r hvis det er sj\u00e6ldent. S\u00e5 set fra en organisatorisk synsvinkel, er det problematisk. Set fra en devops-synsvinkel, skal du ikke bare klone et s\u00e6t eksisterende playbooks, men du skal skrive dem fra bunden. <\/p>\n<p>Vi arbejder lige nu p\u00e5 en service i Node.js, og det vil v\u00e6re en platform ved siden af for hver udvikler med deres eget sprog. Men vi har overvejet, om det er v\u00e6rd at g\u00f8re. Det er i bund og grund et sp\u00f8rgsm\u00e5l om at t\u00e6nke over det.<\/p>\n<p><b>Hvordan monitorerer I jeres services? Hvordan indsamler og sporer I logs?<\/b><\/p>\n<p>Vi indsamler logs i Elasticsearch og placerer dem i Kibana, afh\u00e6ngig af om det er produktions- eller testmilj\u00f8er, bruges der forskellige collectors. Nogle gange bruger vi Lumberjack, andre tider noget andet, jeg kan ikke huske det. Og der er ogs\u00e5 visse steder i specifikke services, hvor vi s\u00e6tter Telegraf op og sender data et andet sted hen. <\/p>\n<p><b>Hvordan lever man med Puppet og Ansible i samme milj\u00f8?<\/b><\/p>\n<p>Faktisk har vi nu to milj\u00f8er, et med Puppet og et med Ansible. Vi arbejder p\u00e5 at hybridisere dem. Ansible er et godt milj\u00f8 til den indledende ops\u00e6tning, Puppet er ikke s\u00e5 godt til initial ops\u00e6tning, fordi det kr\u00e6ver, at man arbejder direkte med platformen, og Puppet sikrer konvergens af konfigurationen. Det betyder, at platformen selv opretholder sig i en aktuel tilstand, mens for at en Ansible-konfigureret maskine forbliver ajourf\u00f8rt, skal playbooks k\u00f8res med j\u00e6vne mellemrum. Det er forskellen. <\/p>\n<p><b>Hvordan opretholder I kompatibilitet? Har I konfigurationer b\u00e5de i Ansible og Puppet?<\/b><\/p>\n<p>Dette er vores store smerte, vi opretholder kompatibilitet manuelt og overvejer, hvordan vi skal overg\u00e5 fra alt dette. Vi ender med, at Puppet installerer pakker og opretholder nogle links, mens Ansible for eksempel installerer koden og opdaterer de nyeste konfigurationer af applikationer der.<\/p>\n<p><b>I pr\u00e6sentationen blev der talt om forskellige versioner af Ruby. Hvad er l\u00f8sningen?<\/b><\/p>\n<p>Vi er st\u00f8dt p\u00e5 dette et sted, og vi bliver n\u00f8dt til hele tiden at have det i baghovedet. Vi slukkede bare den del, der k\u00f8rte p\u00e5 den Ruby, som var inkompatibel med applikationerne, og holdt den adskilt. <\/p>\n<blockquote><p> I \u00e5r finder konferencen <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">DevOpsDays Moskva<\/a><\/noindex> sted den 7. december i \"Teknopolis\". Vi modtager ans\u00f8gninger til foredrag indtil den 11. november. <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">Skriv til<\/a><\/noindex> os, hvis du \u00f8nsker at deltage som taler.<\/p>\n<p>Registreringen for deltagere er \u00e5ben, kom og v\u00e6r med! \n<\/p><\/blockquote>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/scienceman_events\/blog\/471146\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 DevOpsDays Moscow \u043f\u0440\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043a\u0430\u043a \u043e\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u0441\u0438\u0440\u043e\u0442\u0443 \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u0447\u0435\u043c \u043f\u043b\u043e\u0445\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b, \u0447\u0442\u043e \u0441 \u043d\u0438\u043c\u0438 \u0434\u0435\u043b\u0430\u0442\u044c, \u0438 \u043a\u0430\u043a \u0431\u044b\u0442\u044c, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043e\u043a\u043b\u0430\u0434\u0430. \u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0410\u043d\u0434\u0440\u0435\u0439, \u044f \u0440\u0443\u043a\u043e\u0432\u043e\u0436\u0443 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0435\u0439 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Banki.ru. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38981","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=\"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438\" \/>\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\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\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\u0421\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (\u043c\u0438\u043a\u0440\u043e)\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\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-31T19:27:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:10+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\udd47Tjenester uden ejerskab: bagsiden af (mikro)service-arkitekturen | ProHoster","description":"Direkt\u00f8r for driften af portalen Banki.ru, Andrey Nikolsky, talte p\u00e5 sidste \u00e5rs konference","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","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\u0421\u0435\u0440\u0432\u0438\u0441\u044b-\u0441\u0438\u0440\u043e\u0442\u044b: \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 (\u043c\u0438\u043a\u0440\u043e)\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b | ProHoster","og:description":"\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Banki.ru \u0410\u043d\u0434\u0440\u0435\u0439 \u041d\u0438\u043a\u043e\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e\u0434\u043d\u0435\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","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-31T19:27:10+00:00","article:modified_time":"2019-10-31T19:27:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38981","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-24 00:15:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:59:27","updated":"2026-01-24 00:15:21","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\/38981","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=38981"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/38981\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/29246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=38981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=38981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=38981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}