{"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\/sv\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","title":{"rendered":"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Portalchefen f\u00f6r Banki.ru, Andrey Nikolsky, delade med sig av insikter under f\u00f6rra \u00e5rets konferens. <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 f\u00f6r\u00e4ldral\u00f6sa tj\u00e4nster: hur man identifierar en f\u00f6r\u00e4ldral\u00f6s i infrastrukturen, varf\u00f6r f\u00f6r\u00e4ldral\u00f6sa tj\u00e4nster \u00e4r problematiska, vad man kan g\u00f6ra med dem, och hur man ska agera om inget hj\u00e4lper.<\/p>\n<p>Under detta finns den textuella versionen av f\u00f6redraget. <\/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=\"Spela 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 kollegor! Jag heter Andrey och jag ansvarar f\u00f6r driften p\u00e5 Banki.ru.<\/p>\n<p>Vi har stora tj\u00e4nster, som monolitiska tj\u00e4nster, det finns tj\u00e4nster i en mer klassisk mening, och s\u00e5 finns det v\u00e4ldigt sm\u00e5. I min arbetsvardag skulle jag s\u00e4ga att om en tj\u00e4nst \u00e4r enkel och liten, s\u00e5 \u00e4r det en mikro-tj\u00e4nst, och om den inte \u00e4r s\u00e4rskilt enkel och inte liten, s\u00e5 \u00e4r det bara en tj\u00e4nst. <\/p>\n<h3><b>F\u00f6rdelar med tj\u00e4nster<\/b><\/h3>\n<p>\nJag kommer snabbt att g\u00e5 igenom f\u00f6rdelarna med tj\u00e4nster. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/4c34a3af9125c5869eb7c1650bc3855a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6rst och fr\u00e4mst \u2014 skalbarhet. Du kan snabbt g\u00f6ra n\u00e5got p\u00e5 tj\u00e4nsten och starta i produktion. Om du f\u00e5r trafik, kan du klona tj\u00e4nsten. F\u00e5 ytterligare trafik, klona en g\u00e5ng till och leva med det. Det \u00e4r en bra bonus och n\u00e4r vi b\u00f6rjade ans\u00e5gs det vara det viktigaste sk\u00e4let till varf\u00f6r vi \u00f6verhuvudtaget gjorde detta.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/c536f380ece14e0c873f765b587fb3c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r det andra, isolerad utveckling, d\u00e4r du har flera utvecklingsteam, flera olika utvecklare i varje team, och varje team utvecklar en egen tj\u00e4nst.<\/p>\n<p>Men det finns en nyans med teamen. Utvecklare \u00e4r olika. Och det finns till exempel <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=VPDJXngp2bM\">sn\u00f6flingor.<\/a><\/noindex>Jag s\u00e5g detta f\u00f6r f\u00f6rsta g\u00e5ngen hos Maxim Dorofeev. Ibland finns det sn\u00f6flingor i vissa team, och i andra team finns det inte. Det g\u00f6r att olika tj\u00e4nster som anv\u00e4nds inom f\u00f6retaget blir n\u00e5got oj\u00e4mna. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/f1e18ab059bd2b975d4c6ff1b6434626.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTitta p\u00e5 bilden: det h\u00e4r \u00e4r en bra utvecklare, han har stora h\u00e4nder och kan g\u00f6ra mycket. Det stora problemet \u00e4r varifr\u00e5n dessa h\u00e4nder kommer. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/88fdc7266e97be8732f252908329a8f2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTj\u00e4nster ger m\u00f6jlighet att anv\u00e4nda olika programmeringsspr\u00e5k, som \u00e4r b\u00e4ttre anpassade f\u00f6r olika uppgifter. N\u00e5gon tj\u00e4nst p\u00e5 Go, n\u00e5gon p\u00e5 Erlang, n\u00e5gon p\u00e5 Ruby, n\u00e5got p\u00e5 PHP, n\u00e5got p\u00e5 Python. Generellt kan man verkligen bredda sig. Det finns ocks\u00e5 nyanser h\u00e4r.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/98a4b1037066d67e4f16bab934cebac6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTj\u00e4nstebaserad arkitektur handlar framf\u00f6r allt om devops. Det vill s\u00e4ga om du inte har automatisering, inget deploymentsystem, om du konfigurerar manuellt, kan dina konfigurationer variera fr\u00e5n instans till instans, och du m\u00e5ste g\u00e5 \u00e5t dem f\u00f6r att g\u00f6ra n\u00e5got, d\u00e5 \u00e4r du i helvetet. <\/p>\n<p>Till exempel, om du har 20 tj\u00e4nster och beh\u00f6ver deploya manuellt, har du 20 konsoler och trycker p\u00e5 \"enter\" samtidigt som en ninja. Det \u00e4r inte optimalt. <\/p>\n<p>Om du har en tj\u00e4nst efter testning (om det finns testning f\u00f6rst\u00e5s) och beh\u00f6ver fortfarande finjustera den s\u00e5 att den fungerar i produktion, har jag ocks\u00e5 d\u00e5liga nyheter f\u00f6r dig. <\/p>\n<p>Om du \u00e4r beroende av specifika tj\u00e4nster fr\u00e5n Amazon och samtidigt arbetar i Ryssland, hade du f\u00f6r tv\u00e5 m\u00e5nader sedan ocks\u00e5 \"Allt brinner, jag \u00e4r okej, allt \u00e4r toppen\".<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/474f5f1c3f0ced131df5ee8f30f0aa15.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi anv\u00e4nder Ansible f\u00f6r att automatisera deployment, Puppet f\u00f6r konvergens, Bamboo f\u00f6r att automatisera deployment, och Confluence f\u00f6r att dokumentera allt detta.<\/p>\n<p>Jag kommer inte att g\u00e5 in p\u00e5 detalj h\u00e4r, eftersom presentationen snarare handlar om interaktionspraxis \u00e4n om teknisk implementation. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/ab837bed67ee319d72da705bc632e3f3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi har till exempel haft problem med att Puppet p\u00e5 servern k\u00f6r med Ruby 2, medan en viss applikation \u00e4r skriven f\u00f6r Ruby 1.8, och de fungerar inte tillsammans. Det uppst\u00e5r n\u00e5got fel d\u00e4r. Och n\u00e4r du beh\u00f6ver h\u00e5lla flera versioner av Ruby p\u00e5 samma maskin, uppst\u00e5r vanligtvis problem. <\/p>\n<p>Vi ger till exempel varje utvecklare en plattform d\u00e4r det finns n\u00e4stan allt vi har, alla tj\u00e4nster som kan utvecklas, s\u00e5 att de har en isolerad milj\u00f6, d\u00e4r de kan f\u00f6rst\u00f6ra och bygga som de vill. <\/p>\n<p>Ibland beh\u00f6vs ett specialkompilerat paket med st\u00f6d f\u00f6r n\u00e5got s\u00e4rskilt. Det \u00e4r ganska strikt. Jag h\u00f6rde en presentation d\u00e4r en Docker-image v\u00e4gde 45 GB. I Linux \u00e4r det f\u00f6rst\u00e5s enklare, d\u00e4r \u00e4r allt mindre, men \u00e4nd\u00e5, det finns inget utrymme kvar. <\/p>\n<p>Och det uppst\u00e5r motstridiga beroenden, n\u00e4r en del av projektet \u00e4r beroende av ett bibliotek av en version, medan en annan del \u00e4r beroende av en annan version, och biblioteken kan \u00f6verhuvudtaget inte installeras tillsammans. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/acc4c38c547cd6d0580cf3524532393a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi har webbplatser och tj\u00e4nster p\u00e5 PHP 5.6, vi sk\u00e4ms \u00f6ver dem, men vad g\u00f6r man. Det \u00e4r v\u00e5r plattform. Det finns webbplatser och tj\u00e4nster p\u00e5 PHP 7, de \u00e4r fler, och vi sk\u00e4ms inte f\u00f6r dem. Varje utvecklare har sin egen databas d\u00e4r de gladeligen kan koda. <\/p>\n<p>Om ni skriver p\u00e5 samma spr\u00e5k i f\u00f6retaget l\u00e5ter tre virtuella maskiner per utvecklare normalt. Om ni har olika programmeringsspr\u00e5k blir situationen s\u00e4mre.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/9f5da38456024679ba6a41768466cb82.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDu har webbplatser och tj\u00e4nster h\u00e4r, h\u00e4r, och sedan en plattform f\u00f6r Go, en plattform f\u00f6r Ruby, och kanske n\u00e5gon Redis vid sidan av. Slutligen blir allt detta ett stort f\u00e4lt f\u00f6r support, och n\u00e5got av detta kan alltid g\u00e5 s\u00f6nder.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/20bde06e0aaceea028fabea09540d2a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nD\u00e4rf\u00f6r har vi bytt ut programmeringsspr\u00e5kets godbitar mot anv\u00e4ndning av olika ramverk, eftersom ramverken p\u00e5 PHP \u00e4r tillr\u00e4ckligt olika, de har olika m\u00f6jligheter, olika gemenskaper, och olika st\u00f6d. Man kan skriva tj\u00e4nster s\u00e5 att man redan har n\u00e5got redo f\u00f6r dem. <\/p>\n<h3><b>Varje tj\u00e4nst har sitt eget team<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/ff32f7449c831e6dcb2bd9c41fb9c8e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u00e5r st\u00f6rsta f\u00f6rdel, som har kristalliserats fram under flera \u00e5r, \u00e4r att varje tj\u00e4nst har sitt eget team. Detta \u00e4r praktiskt f\u00f6r ett stort projekt, man kan spara tid p\u00e5 dokumentation, cheferna k\u00e4nner v\u00e4l sitt projekt. <\/p>\n<p>Supportuppgifter kan enkelt \u00f6verl\u00e5tas. Till exempel, om f\u00f6rs\u00e4kringsservicen g\u00e5r s\u00f6nder. Och genast g\u00e5r teamet som hanterar f\u00f6rs\u00e4kringen f\u00f6r att laga den. <\/p>\n<p>Nya funktioner skapas snabbt, eftersom n\u00e4r du har en viss atom\u00e4r tj\u00e4nst kan du snabbt implementera n\u00e5got nytt. <\/p>\n<p>Och n\u00e4r du har gjort din tj\u00e4nst trasig, vilket oundvikligen h\u00e4nder, p\u00e5verkar det inte andras tj\u00e4nster, och utvecklarna kommer inte rusande med klubbor fr\u00e5n andra team och s\u00e4ger: 'Aj-aj, g\u00f6r inte s\u00e5'. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/30d99fa39654701437cdf90929d6a45e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom alltid finns det nyanser. Vi har stabila team, och teamens chefer \u00e4r fast f\u00f6rankrade. Det finns tydliga dokument, och cheferna \u00f6vervakar allt noggrant. Varje team har flera tj\u00e4nster med sin chef, och det finns en specifik kompetenspunkt. <\/p>\n<p>Om teamen \u00e4r flytande (detta anv\u00e4nds ocks\u00e5 ibland hos oss), finns en bra metod som kallas 'stj\u00e4rnkarta'.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/cd18530d30973628f9351757a800dc37.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDu har en lista \u00f6ver tj\u00e4nster och personer. En stj\u00e4rna betyder att personen \u00e4r expert p\u00e5 den tj\u00e4nsten, en bok betyder att personen studerar denna tj\u00e4nst. M\u00e5let f\u00f6r personen \u00e4r att byta boken mot en stj\u00e4rna. Och om det inte st\u00e5r n\u00e5got mot tj\u00e4nsten, d\u00e5 b\u00f6rjar problemen som jag kommer att ber\u00e4tta mer om. <\/p>\n<h3><b>Hur uppst\u00e5r f\u00f6r\u00e4ldral\u00f6sa tj\u00e4nster?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/8ae33d6e940700a5941409b7cedf3e9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet f\u00f6rsta problemet, den f\u00f6rsta metoden f\u00f6r att f\u00e5 en tj\u00e4nst i din infrastruktur som blivit en f\u00f6r\u00e4ldral\u00f6s tj\u00e4nst, \u00e4r upps\u00e4gningar av personer. Har n\u00e5gon n\u00e5gonsin varit med om att det kommer tidsgr\u00e4nser fr\u00e5n aff\u00e4rssidan innan man har utv\u00e4rderat uppgifterna? Ibland finns det strikta tidsgr\u00e4nser och det finns helt enkelt inte tid f\u00f6r dokumentation. \"Vi m\u00e5ste sl\u00e4ppa tj\u00e4nsten i produktion, s\u00e5 f\u00e5r vi skriva mer senare.\" <\/p>\n<p>Om teamet \u00e4r litet kan det h\u00e4nda att det bara finns en utvecklare som skriver allt, medan resten av teamet bara st\u00f6der. \"Jag har skrivit den grundl\u00e4ggande arkitekturen, du kan l\u00e4gga till gr\u00e4nssnitt.\" Sen, vid n\u00e5got tillf\u00e4lle, till exempel n\u00e4r chefen slutar. Och under den perioden n\u00e4r chefen har slutat och ingen ny har utn\u00e4mnts, best\u00e4mmer utvecklarna sj\u00e4lva vart tj\u00e4nsten \u00e4r p\u00e5 v\u00e4g och vad som sker. Och som vi vet (l\u00e5t oss g\u00e5 tillbaka n\u00e5gra sidor) finns det i vissa team personer som \u00e4r som sn\u00f6flingor, ibland en sn\u00f6flinge-teamledare. Sen slutar de, och vi har en f\u00f6r\u00e4ldral\u00f6s tj\u00e4nst. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/44741c897bfd9dc04e0a977c1cf08df3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSamtidigt f\u00f6rsvinner inte uppgifterna fr\u00e5n supporten och aff\u00e4ren, de samlas i backloggen. Om det fanns n\u00e5gra arkitektoniska misstag vid utvecklingen av tj\u00e4nsten, s\u00e5 kvarst\u00e5r de ocks\u00e5 i backloggen. Tj\u00e4nsten degraderas sakta. <\/p>\n<h3><b>Hur identifierar man en f\u00f6r\u00e4ldral\u00f6s tj\u00e4nst?<\/b> <\/h3>\n<p>\nDen h\u00e4r listan beskriver situationen ganska bra. Vem har k\u00e4nt igen n\u00e5got i sin infrastruktur?<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/b852d070bb6864f48e3a6ae9921a12b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOm dokumenterade workarounds: det finns en tj\u00e4nst och, i stort sett, fungerar den, den har en manual p\u00e5 tv\u00e5 sidor om hur man arbetar med den, men hur den fungerar inuti, vet ingen. <\/p>\n<p>Eller, till exempel, det finns n\u00e5gon form av l\u00e4nkf\u00f6rkortare. Just nu har vi tre olika l\u00e4nkf\u00f6rkortare f\u00f6r olika syften i olika tj\u00e4nster. Det \u00e4r f\u00f6ljderna av detta. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/350a041f21fcd75d9a948d2b9b77cda8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNu ska jag vara kapten uppenbarhet. Vad beh\u00f6ver man g\u00f6ra? F\u00f6r det f\u00f6rsta m\u00e5ste tj\u00e4nsten \u00f6verl\u00e4mnas till en annan chef, ett annat team. Om er teamledare inte har slutat \u00e4nnu, b\u00f6r ni inkludera n\u00e5gon i det andra teamet som \u00e5tminstone f\u00f6rst\u00e5r n\u00e5got av tj\u00e4nsten n\u00e4r ni inser att den b\u00f6rjar likna en f\u00f6r\u00e4ldral\u00f6s tj\u00e4nst. <\/p>\n<p>Den viktigaste saken: ni m\u00e5ste ha skrivna procedurer f\u00f6r \u00f6verl\u00e4mning. I v\u00e5rt fall brukar jag h\u00e5lla koll p\u00e5 detta, f\u00f6r jag vill att allt ska fungera. Cheferna vill att det ska \u00f6verl\u00e4mnas snabbt, och vad som h\u00e4nder sedan \u00e4r inte s\u00e5 viktigt f\u00f6r dem. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/87b9d86c2c795f5d71db1489cab200a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEtt annat s\u00e4tt att skapa en \"f\u00f6r\u00e4ldral\u00f6s\" \u00e4r att s\u00e4ga \"Vi g\u00f6r det p\u00e5 outsourcing, s\u00e5 g\u00e5r det snabbare, och sedan \u00f6verl\u00e4mnar vi det till teamet\". Det \u00e4r klart att alla har n\u00e5gon typ av planer i sitt team och k\u00f6. Ofta tror aff\u00e4rskunden att outsourcere g\u00f6r det p\u00e5 samma s\u00e4tt som teknikavdelningen i f\u00f6retaget. Men incitamenten f\u00f6r dem \u00e4r olika. Det kan finnas m\u00e4rkliga tekniska l\u00f6sningar och konstiga algoritmiska l\u00f6sningar p\u00e5 outsourcing.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/b4208ccb134cbc694ea4993ec2751ec5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTill exempel hade vi en tj\u00e4nst d\u00e4r Sphinx fanns p\u00e5 olika ov\u00e4ntade st\u00e4llen. Jag ber\u00e4ttar senare vad vi var tvungna att g\u00f6ra. <\/p>\n<p>Outsourcere kan anv\u00e4nda eget skrivna ramverk. Det \u00e4r helt enkelt ren PHP med kopierat inneh\u00e5ll fr\u00e5n ett tidigare projekt, d\u00e4r man kan hitta allt m\u00f6jligt. Stora l\u00f6sningar i deploy-skript, n\u00e4r man beh\u00f6ver anv\u00e4nda komplicerade Bash-skript f\u00f6r att \u00e4ndra n\u00e5gra rader i n\u00e5gon fil, d\u00e4r dessa deploy-skript anropas av n\u00e5got tredje skript. I slut\u00e4ndan byter du ut systemet f\u00f6r distribution, och pl\u00f6tsligt fungerar inte din tj\u00e4nst l\u00e4ngre. F\u00f6r d\u00e4r beh\u00f6vde du \u00e4ven s\u00e4tta 8 l\u00e4nkar mellan olika mappar. Eller s\u00e5 fungerar tusen poster, men hundratusen g\u00f6r det inte. <\/p>\n<p>Jag forts\u00e4tter att styra. Acceptans av tj\u00e4nsten fr\u00e5n outsourcing \u00e4r en obligatorisk procedur. Har n\u00e5gon varit med om att en tj\u00e4nst fr\u00e5n outsourcing anl\u00e4nder men inte accepteras? Det \u00e4r inte s\u00e5 popul\u00e4rt som en f\u00f6r\u00e4ldral\u00f6s tj\u00e4nst, men det f\u00f6rekommer \u00e4nd\u00e5. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/92ef67a1bb714cdfb820efe432d0303b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTj\u00e4nsten m\u00e5ste kontrolleras, tj\u00e4nsten m\u00e5ste utv\u00e4rderas, l\u00f6senord m\u00e5ste bytas. Vi hade ett fall d\u00e4r n\u00e5gon gav oss en tj\u00e4nst, d\u00e4r administrat\u00f6rsgr\u00e4nssnittet var skrivet \"if login == 'admin' &amp;&amp; password == 'admin'...\" i koden. Vi sitter och t\u00e4nker, och detta skriver folk 2018?<\/p>\n<p>Test av lagringskapacitet \u00e4r ocks\u00e5 viktigt. Det \u00e4r n\u00f6dv\u00e4ndigt att se vad som h\u00e4nder med hundratusentals poster innan du sl\u00e4pper tj\u00e4nsten i produktion. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/3fabdc20049892cee7636c30e595881d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAtt skicka tj\u00e4nsten f\u00f6r vidareutveckling b\u00f6r inte vara n\u00e5got att sk\u00e4mmas f\u00f6r. N\u00e4r du s\u00e4ger: \"Vi kommer inte att acceptera den h\u00e4r tj\u00e4nsten, vi har 20 uppgifter, g\u00f6r dem s\u00e5 accepterar vi\", \u00e4r det okej. Du ska inte beh\u00f6va ha d\u00e5ligt samvete \u00f6ver att du s\u00e4tter managern i en sv\u00e5r situation eller att aff\u00e4ren spenderar pengar. Aff\u00e4ren kommer att kosta mer senare.<\/p>\n<p>Vi hade ett fall d\u00e4r vi best\u00e4mde oss f\u00f6r att g\u00f6ra ett pilotprojekt p\u00e5 outsourcing.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/a5b25638e51c4eabe9d6a6971f08fa6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet blev utl\u00e4mnat i tid, och det var den enda kvalitetskriteriet. D\u00e4rf\u00f6r gjorde vi \u00e4nnu ett pilotprojekt, som inte ens var riktigt pilotprojekt. Dessa tj\u00e4nster godk\u00e4ndes, genom administrativa medel sa de, h\u00e4r \u00e4r er kod, h\u00e4r \u00e4r ert team, h\u00e4r \u00e4r er chef. Tj\u00e4nsterna b\u00f6rjade verkligen generera vinst. Samtidigt f\u00f6rblev de i praktiken fortfarande f\u00f6r\u00e4ldral\u00f6sa, ingen f\u00f6rst\u00e5r hur de fungerar, och cheferna skyller ifr\u00e5n sig p\u00e5 deras uppgifter. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/29ac8ab670df5d2c92dc7940d0a74e24.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet finns ocks\u00e5 ett utm\u00e4rkt begrepp - guerillautveckling. N\u00e4r en avdelning, vanligtvis marknadsavdelningen, vill testa en hypotes och best\u00e4ller en tj\u00e4nst helt p\u00e5 outsourcing. Trafiken b\u00f6rjar str\u00f6mma in, de st\u00e4nger dokumenten, signerar handlingar med entrepren\u00f6ren, g\u00e5r i drift och s\u00e4ger: \"Grabbar, vi har en tj\u00e4nst, det finns redan trafik p\u00e5 den, den ger oss pengar, l\u00e5t oss acceptera den.\" Vi s\u00e4ger: \"Oj, hur blev det s\u00e5?\".<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/1fa0187e5db9bed7af0c97ac8500567f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOch \u00e4nnu ett s\u00e4tt att f\u00e5 en f\u00f6r\u00e4ldral\u00f6s tj\u00e4nst: n\u00e4r ett team pl\u00f6tsligt \u00e4r \u00f6verbelastat, s\u00e4ger ledningen: \"L\u00e5t oss \u00f6verf\u00f6ra tj\u00e4nsten fr\u00e5n detta team till ett annat team med mindre belastning.\" Och sedan \u00f6verf\u00f6r vi det till ett tredje team, och byter chefen. Och i slut\u00e4ndan har vi \u00e5terigen en f\u00f6r\u00e4ldral\u00f6s.<\/p>\n<h3><b>Vad \u00e4r problemet med de f\u00f6r\u00e4ldral\u00f6sa?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/009170e7989a78e8bd9f5b7b364e358c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r den som inte vet, det handlar om det i Sverige upph\u00f6jda linjeskeppet Wasa, ber\u00f6mt f\u00f6r att det sj\u00f6nk fem minuter efter sj\u00f6s\u00e4ttningen. Och Sveriges kung, f\u00f6r \u00f6vrigt, avr\u00e4ttade ingen f\u00f6r det. Det byggdes av tv\u00e5 generationer ingenj\u00f6rer som inte visste hur man byggde s\u00e5dana fartyg. En logisk effekt.<\/p>\n<p>Skeppet kunde f\u00f6r \u00f6vrigt ha sjunkit mycket v\u00e4rre, till exempel n\u00e4r kungen redan hade \u00e5kt n\u00e5gonstans i en storm. Men s\u00e5 sj\u00f6nk det direkt, enligt agilt t\u00e4nkande \u00e4r det bra \u2013 att misslyckas tidigt. <\/p>\n<p>Om vi misslyckas tidigt brukar det s\u00e4llan vara n\u00e5gra problem. Till exempel, vid godk\u00e4nnande skickades det f\u00f6r f\u00f6rb\u00e4ttring. Men om vi redan har misslyckats i produktionen, n\u00e4r pengar har investerats, kan det bli problem. Konsekvenser, som man s\u00e4ger i aff\u00e4rer.<\/p>\n<p>Vad \u00e4r farorna med f\u00f6r\u00e4ldral\u00f6sa tj\u00e4nster:<\/p>\n<ul>\n<li>Tj\u00e4nsten kan pl\u00f6tsligt g\u00e5 s\u00f6nder. <\/li>\n<li>Tj\u00e4nsten tar l\u00e5ng tid att laga eller lagas inte alls. <\/li>\n<li>S\u00e4kerhetsproblem. <\/li>\n<li>Problem med f\u00f6rb\u00e4ttringar och uppdateringar. <\/li>\n<li>Om en viktig tj\u00e4nst g\u00e5r s\u00f6nder, lider f\u00f6retagets rykte. <\/li>\n<\/ul>\n<p><\/p>\n<h3><b>Vad ska man g\u00f6ra med f\u00f6r\u00e4ldral\u00f6sa tj\u00e4nster?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/094444a042ccf12bf4c9e166c3fffe47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJag upprepar vad som ska g\u00f6ras. F\u00f6r det f\u00f6rsta m\u00e5ste det finnas dokumentation. 7 \u00e5r p\u00e5 Banki.ru l\u00e4rde mig att testare inte ska lita p\u00e5 utvecklare utan bevis, och att drift inte ska lita p\u00e5 n\u00e5gon. Man m\u00e5ste kontrollera. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/23d652f96e93eb52d9172b103121fe54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r det andra beh\u00f6ver man skriva interaktionsscheman, eftersom det ibland visar sig att tj\u00e4nster som antas inte \u00e4r s\u00e5 bra inneh\u00e5ller beroenden som ingen har sagt n\u00e5got om. Till exempel, utvecklarna satte en tj\u00e4nst p\u00e5 sin nyckel till Yandex.Mappar eller Dadata. Om din fria gr\u00e4ns tar slut, g\u00e5r allt s\u00f6nder och du vet inte vad som har h\u00e4nt \u00f6verhuvudtaget. Alla s\u00e5dana fall m\u00e5ste beskrivas: tj\u00e4nsten anv\u00e4nder Dadata, Sms, eller n\u00e5got annat.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/b2770a07cf265ad8a3890b2cb2f62263.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r det tredje, arbete med teknisk skuld. N\u00e4r du g\u00f6r n\u00e5gra provisoriska l\u00f6sningar eller accepterar en tj\u00e4nst och s\u00e4ger att n\u00e5got m\u00e5ste g\u00f6ras, m\u00e5ste man se till att det g\u00f6rs. F\u00f6r senare kan det visa sig att en liten grop inte \u00e4r s\u00e5 liten, och du kan falla ner i den.<\/p>\n<p>Vi hade en historia med arkitekturuppgifter om Sphinx. I en av tj\u00e4nsterna anv\u00e4ndes Sphinx f\u00f6r att mata in listor. Bara en lista med paginering, men den indexerades om varje natt. Den byggdes av tv\u00e5 index: ett stort som indexerades varje natt, och ett litet index som kopplades till det. Varje dag, med 50% chans, antingen sprack det eller inte, vid publiceringen blev indexet trasigt och nyheterna slutade uppdateras p\u00e5 hemsidan. Till en b\u00f6rjan var det 5 minuter, medan indexet blev omindexerat, sedan v\u00e4xte indexet, och vid ett tillf\u00e4lle b\u00f6rjade det ta 40 minuter att omindexera. N\u00e4r vi tog bort det andades vi ut l\u00e4ttat, f\u00f6r det blev klart att det skulle ta lite tid innan v\u00e5rt index skulle beh\u00f6va omindexeras hela arbetsdagen. Det skulle vara ett misslyckande f\u00f6r v\u00e5r portal, \u00e5tta timmar utan nyheter \u2014 d\u00e5 st\u00e5r verksamheten stilla.<\/p>\n<h3><b>Arbetsplan f\u00f6r f\u00f6r\u00e4ldral\u00f6s tj\u00e4nst<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/f072ec872d59de058faf1994ac39f161.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFaktum \u00e4r att det \u00e4r v\u00e4ldigt sv\u00e5rt att g\u00f6ra det, eftersom devops handlar om kommunikation. Man vill ha goda relationer med sina kollegor, och n\u00e4r du sl\u00e5r kollegor och chefer i huvudet med regler kan de ha blandade k\u00e4nslor f\u00f6r de som g\u00f6r s\u00e5. <\/p>\n<p>F\u00f6rutom alla dessa punkter finns det en viktig aspekt: f\u00f6r varje specifik tj\u00e4nst, f\u00f6r varje del av distributionsprocessen, b\u00f6r det finnas specifika personer som ansvarar. N\u00e4r det inte finns n\u00e5gra personer och man tvingas involvera andra, som beh\u00f6ver s\u00e4tta sig in i allt, blir det sv\u00e5rt.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/28e7372012d5089d3ac1be3d7dc97e03.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOm allt detta inte har hj\u00e4lpt och din tj\u00e4nst fortfarande \u00e4r en ensamst\u00e5ende tj\u00e4nst, ingen vill ta hand om den, dokumentationen skrivs inte, teamet som rekryterades f\u00f6r tj\u00e4nsten v\u00e4grar att g\u00f6ra n\u00e5got, finns det ett enkelt s\u00e4tt \u2014 g\u00f6ra om allt. <\/p>\n<p>Det vill s\u00e4ga, du tar kraven f\u00f6r tj\u00e4nsten p\u00e5 nytt och skriver en ny tj\u00e4nst, en b\u00e4ttre, p\u00e5 en b\u00e4ttre plattform, utan konstiga teknologiska l\u00f6sningar. Och migrerar till den i drift. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6verblivna tj\u00e4nster: den baksidan av (mikro)tj\u00e4nstearkitektur\" src=\"\/wp-content\/uploads\/2019\/10\/63d0bf7d9ac1e5c5b00b67b519e228a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi hade en situation d\u00e4r vi tog en tj\u00e4nst p\u00e5 Yii 1 och ins\u00e5g att vi inte kunde utveckla den vidare, eftersom vi inte hade n\u00e5gra utvecklare kvar som kunde skriva bra p\u00e5 Yii 1. Alla utvecklare kan skriva bra p\u00e5 Symfony 3. Vad g\u00f6ra? Vi avsatte tid, bildade ett team, uts\u00e5g en projektledare, omskrev projektet och smidigt skiftade trafik till det. <\/p>\n<p>Efter det kan den gamla tj\u00e4nsten tas bort. Det \u00e4r min favoritprocedur, n\u00e4r man i konfigurationshanteringssystemet f\u00e5r ta bort en tj\u00e4nst och sedan kolla s\u00e5 att alla enheter i produktion \u00e4r nedst\u00e4ngda, s\u00e5 att inga sp\u00e5r finns kvar f\u00f6r utvecklarna. Repositoriet i git f\u00f6rblir.<\/p>\n<p>Det \u00e4r allt jag ville ber\u00e4tta, jag \u00e4r redo f\u00f6r diskussion, det h\u00e4r \u00e4r ett kontroversiellt \u00e4mne, m\u00e5nga har erfarenhet av det. <\/p>\n<p><b>P\u00e5 bilderna n\u00e4mndes att ni hade enat spr\u00e5ken. Som exempel anv\u00e4ndes resizing av bilder. \u00c4r det verkligen n\u00f6dv\u00e4ndigt att strikt h\u00e5lla sig till ett spr\u00e5k? F\u00f6r resizing av bilder p\u00e5 PHP, ja, det kunde verkligen g\u00f6ras p\u00e5 Golang ocks\u00e5.<\/b><\/p>\n<p>I sj\u00e4lva verket \u00e4r det inte n\u00f6dv\u00e4ndigt, precis som med alla metoder. I vissa fall kan det till och med vara o\u00f6nskat. Men man m\u00e5ste f\u00f6rst\u00e5 att om ni har 50 personer i er teknikavdelning, varav 45 \u00e4r PHP-utvecklare, 3 \u00e4r DevOps som kan Python, Ansible, Puppet och liknande, och bara en av dem skriver p\u00e5 n\u00e5got Go-program f\u00f6r att \u00e4ndra storlek p\u00e5 bilder, s\u00e5 n\u00e4r han eller hon l\u00e4mnar, f\u00f6rsvinner expertisen med dem. Dessutom kommer ni att beh\u00f6va leta efter en specifik utvecklare p\u00e5 marknaden som kan det spr\u00e5ket, s\u00e4rskilt om det \u00e4r s\u00e4llsynt. S\u00e5 med tanke p\u00e5 organisationen \u00e4r detta problematiskt. Fr\u00e5n DevOps-perspektiv kommer ni att beh\u00f6va skriva nya playbooks ist\u00e4llet f\u00f6r att bara klona ett f\u00e4rdigt upps\u00e4ttning av dem som ni anv\u00e4nder f\u00f6r att drifts\u00e4tta tj\u00e4nster. <\/p>\n<p>Vi utvecklar just nu en tj\u00e4nst p\u00e5 Node.js, och det kommer att bli en plattform f\u00f6r varje utvecklare med sitt eget spr\u00e5k. Men vi har \u00f6verv\u00e4gt om det \u00e4r v\u00e4rt besv\u00e4ret. S\u00e5 h\u00e4r handlar det om att t\u00e4nka efter.<\/p>\n<p><b>Hur \u00f6vervakar ni era tj\u00e4nster? Hur samlar ni in och sp\u00e5rar loggar?<\/b><\/p>\n<p>Vi samlar loggar i Elasticsearch och l\u00e4gger dem i Kibana, och beroende p\u00e5 om det \u00e4r produktion eller testmilj\u00f6er anv\u00e4nds olika insamlare. P\u00e5 vissa st\u00e4llen anv\u00e4nds Lumberjack, p\u00e5 andra st\u00e4llen n\u00e5got annat, jag minns inte exakt. Det finns ocks\u00e5 vissa platser i specifika tj\u00e4nster d\u00e4r vi installerar Telegraf och skickar loggar n\u00e5gon annanstans separat. <\/p>\n<p><b>Hur lever ni med Puppet och Ansible i samma milj\u00f6?<\/b><\/p>\n<p>I sj\u00e4lva verket har vi just nu tv\u00e5 milj\u00f6er, en med Puppet och den andra med Ansible. Vi arbetar p\u00e5 att hybridisera dem. Ansible \u00e4r en bra milj\u00f6 f\u00f6r initial konfiguration, medan Puppet \u00e4r d\u00e5lig f\u00f6r den initiala konfigurationen eftersom den kr\u00e4ver manuella insatser direkt p\u00e5 plattformen, och Puppet s\u00e4kerst\u00e4ller konvergens i konfigurationen. Det betyder att plattformen uppr\u00e4tth\u00e5ller sig sj\u00e4lv i ett aktuellt tillst\u00e5nd, medan en Ansible-konfigurerad maskin m\u00e5ste ha playbooks k\u00f6rande kontinuerligt f\u00f6r att h\u00e5llas aktuell. Det \u00e4r skillnaden. <\/p>\n<p><b>Hur uppr\u00e4tth\u00e5ller ni kompatibilitet? Har ni konfigurationer i b\u00e5de Ansible och Puppet?<\/b><\/p>\n<p>Det \u00e4r v\u00e5r stora sorg, vi uppr\u00e4tth\u00e5ller kompatibilitet manuellt och funderar p\u00e5 hur vi kan g\u00e5 vidare fr\u00e5n allt detta. Vi har det s\u00e5 att Puppet installerar paket och hanterar n\u00e5gra l\u00e4nkar, medan Ansible till exempel installerar kod och anpassar uppdaterade konfigurationer f\u00f6r applikationer dit.<\/p>\n<p><b>I presentationen talades det om olika versioner av Ruby. Vilken l\u00f6sning finns?<\/b><\/p>\n<p>Vi st\u00f6tte p\u00e5 detta p\u00e5 ett st\u00e4lle, och vi m\u00e5ste hela tiden ha det i \u00e5tanke. Vi st\u00e4ngde helt enkelt av den del som k\u00f6rde den version av Ruby som inte var kompatibel med applikationerna och h\u00f6ll den separat. <\/p>\n<blockquote><p> I \u00e5r kommer konferensen <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> att h\u00e5llas den 7 december i \"Technopolis\". Vi tar emot anm\u00e4lningar f\u00f6r f\u00f6redrag fram till 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<\/a><\/noindex> till oss om du vill tala.<\/p>\n<p>Registreringen f\u00f6r deltagare \u00e4r \u00f6ppen, anslut er! \n<\/p><\/blockquote>\n<p>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47 F\u00f6r\u00e4ldral\u00f6sa tj\u00e4nster: den baksidan av (mikro)servicearkitektur | ProHoster","description":"Portalchefen f\u00f6r Banki.ru, Andrey Nikolsky, delade med sig av insikter under f\u00f6rra \u00e5rets konferens.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/38981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=38981"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/38981\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/29246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=38981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=38981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=38981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}