{"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\/it\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","title":{"rendered":"Servizi orfani: il lato opposto dell'architettura a (micro)servizi","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Il direttore per l'esercizio del portale Banki.ru, Andrey Nikol'skiy, ha parlato alla conferenza dello scorso anno <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 Moscow<\/a><\/noindex> sui servizi orfani: come riconoscere un orfano nell'infrastruttura, quali problemi comportano i servizi orfani, cosa fare con loro e come procedere se niente funziona.<\/p>\n<p>Sotto il post troverete la versione testuale della relazione. <\/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=\"Guarda il video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nSalve, colleghi! Mi chiamo Andrey, e sono responsabile dell'esercizio presso Banki.ru.<\/p>\n<p>Abbiamo grandi servizi, che sono dei monoliti, abbiamo servizi in un'accezione pi\u00f9 classica e abbiamo anche servizi molto piccoli. Nella mia terminologia da lavoratore, dico che se un servizio \u00e8 semplice e piccolo, allora \u00e8 micro, e se non \u00e8 molto semplice e non \u00e8 piccolo, allora \u00e8 semplicemente un servizio. <\/p>\n<h3><b>Vantaggi dei servizi<\/b><\/h3>\n<p>\nPasser\u00f2 rapidamente sui vantaggi dei servizi. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/4c34a3af9125c5869eb7c1650bc3855a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrimo \u2014 scalabilit\u00e0. Puoi rapidamente realizzare qualcosa su un servizio e lanciarlo in produzione. Ti arriva del traffico, quindi cloni il servizio. Ti arriva altro traffico, clonano di nuovo e con questo vivi. Questo \u00e8 un buon bonus e, fondamentalmente, quando abbiamo iniziato, era considerato il nostro motivo principale per fare tutto questo.<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/c536f380ece14e0c873f765b587fb3c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn secondo luogo, sviluppo isolato, quando hai pi\u00f9 squadre di sviluppo, diversi sviluppatori in ogni squadra, e ciascuna squadra sviluppa il proprio servizio.<\/p>\n<p>Con le squadre ci sono delle sfide. Gli sviluppatori possono essere diversi. E esistono, ad esempio, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=VPDJXngp2bM\">persone-fiocco di neve<\/a><\/noindex>. L'ho visto per la prima volta da Maksim Dorofeev. A volte ci sono persone-fiocco di neve in alcune squadre, e in altre no. Questo rende i diversi servizi utilizzati nell'azienda un po' disomogenei. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/f1e18ab059bd2b975d4c6ff1b6434626.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGuarda l'immagine: questo \u00e8 un buon sviluppatore, ha grandi mani, pu\u00f2 fare molte cose. Il problema principale \u00e8 da dove provengono queste mani. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/88fdc7266e97be8732f252908329a8f2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI servizi offrono la possibilit\u00e0 di utilizzare diversi linguaggi di programmazione, pi\u00f9 adatti a compiti diversi. Alcuni servizi sono in Go, altri in Erlang, altri in Ruby, alcuni in PHP, altri in Python. In generale, si pu\u00f2 spaziare molto. Anche qui ci sono delle sfide.<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/98a4b1037066d67e4f16bab934cebac6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'architettura orientata ai servizi riguarda soprattutto il devops. Quindi, se non hai automazione, non hai un processo di deployment, se configuri manualmente, le tue configurazioni possono variare da un'istanza all'altra del servizio, e devi andare a fare qualcosa, allora sei nei guai. <\/p>\n<p>Ad esempio, hai 20 servizi e devi fare il deployment manualmente, hai 20 console e premi \u00abenter\u00bb simultaneamente come un ninja. Non \u00e8 un buon modo di lavorare. <\/p>\n<p>Se hai un servizio dopo il collaudo (se c'\u00e8 collaudo, naturalmente) e devi ancora rifinirlo affinch\u00e9 funzioni in produzione, ho anche per te brutte notizie. <\/p>\n<p>Se ti affidi a servizi specifici di Amazon e lavori in Russia, due mesi fa anche tu avevi \u00abTutto intorno brucia, sto bene, tutto \u00e8 fantastico\u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/474f5f1c3f0ced131df5ee8f30f0aa15.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNoi utilizziamo Ansible per automatizzare il deployment, Puppet per la convergenza, Bamboo per l'automazione del deployment, Confluence per descrivere tutto ci\u00f2 in qualche modo.<\/p>\n<p>Non mi fermer\u00f2 a questo in dettaglio, perch\u00e9 la presentazione riguarda pi\u00f9 le pratiche di interazione che non la realizzazione tecnica. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/ab837bed67ee319d72da705bc632e3f3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAvevamo, ad esempio, problemi in cui Puppet sul server funziona con Ruby 2, mentre un'applicazione \u00e8 scritta per Ruby 1.8 e insieme non funzionano. L\u00ec si verifica qualche problema. E quando devi mantenere diverse versioni di Ruby su una sola macchina, di solito sorgono problemi. <\/p>\n<p>Noi, ad esempio, forniamo a ogni sviluppatore un ambiente, dove c'\u00e8 circa tutto ci\u00f2 che abbiamo, tutti i servizi che possono essere sviluppati, in modo che abbia un ambiente isolato dove pu\u00f2 distruggerlo e costruirlo come vuole. <\/p>\n<p>A volte \u00e8 necessario un pacchetto compilato appositamente con supporto per qualcosa. \u00c8 abbastanza rigoroso. Ho ascoltato una presentazione in cui l'immagine Docker pesa 45 GB. In Linux, ovviamente, \u00e8 pi\u00f9 semplice, tutto \u00e8 pi\u00f9 leggero, ma comunque non ci sar\u00e0 mai abbastanza spazio. <\/p>\n<p>E ci sono dipendenze contraddittorie, quando un pezzo del progetto dipende da una versione di una libreria, e un altro pezzo del progetto da un'altra versione, e le librerie non possono essere installate insieme in alcun modo. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/acc4c38c547cd6d0580cf3524532393a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAbbiamo siti e servizi su PHP 5.6, di cui ci vergogniamo, ma che ci possiamo fare. Questa \u00e8 una nostra piattaforma. Ci sono siti e servizi su PHP 7, ce ne sono di pi\u00f9 e per quelli non ci vergogniamo. E ogni sviluppatore ha il suo database, dove lavora felicemente. <\/p>\n<p>Se scrivi in azienda in un'unica lingua, avere tre macchine virtuali per sviluppatore suona normale. Se hai diversi linguaggi di programmazione, la situazione peggiora.<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/9f5da38456024679ba6a41768466cb82.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEmergono siti e servizi su questo, su questo, poi un'altra piattaforma per Go, una piattaforma per Ruby, e un Redis a fianco. Alla fine, tutto ci\u00f2 si trasforma in un grande campo di supporto, e c'\u00e8 sempre qualcosa che pu\u00f2 rompersi.<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/20bde06e0aaceea028fabea09540d2a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer questo motivo, abbiamo sostituito i vantaggi del linguaggio di programmazione con l\u2019uso di diversi framework, poich\u00e9 i framework su PHP sono abbastanza diversi, hanno diverse capacit\u00e0, diverse comunit\u00e0 e supporto. E si pu\u00f2 scrivere un servizio in modo che ci sia gi\u00e0 qualcosa di pronto per esso. <\/p>\n<h3><b>Ogni servizio ha il proprio team<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/ff32f7449c831e6dcb2bd9c41fb9c8e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl nostro principale vantaggio, che si \u00e8 cristallizzato nel corso degli anni, \u00e8 che ogni servizio ha il proprio team. Questo \u00e8 utile per un grande progetto, permette di risparmiare tempo nella documentazione, i manager conoscono bene il loro progetto. <\/p>\n<p>I compiti di supporto possono essere gestiti facilmente. Ad esempio, se un servizio di assicurazione si rompe. E subito il team che si occupa dell'assicurazione va a ripararlo. <\/p>\n<p>Si possono realizzare rapidamente nuove funzionalit\u00e0, perch\u00e9 quando hai un servizio atomico, puoi facilmente integrare qualcosa. <\/p>\n<p>E quando hai rotto il tuo servizio, ed \u00e8 inevitabile che accada, non danneggi gli altri servizi, e gli sviluppatori delle altre squadre non vengono da te con i bastoni dicendo: \u00abOh no, non farlo\u00bb. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/30d99fa39654701437cdf90929d6a45e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome sempre, ci sono delle sfumature. Abbiamo team stabili, i manager sono ben ancorati ai team. Ci sono documenti chiari e i manager controllano attentamente tutto. Ogni team ha diversi servizi insieme al manager, e c'\u00e8 un punto di competenza specifico. <\/p>\n<p>Se i team sono fluttuanti (anche questo avviene di tanto in tanto), c'\u00e8 un buon metodo, chiamato 'mappa stellare'.<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/cd18530d30973628f9351757a800dc37.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHai una lista di servizi e di persone. Una stellina significa che la persona \u00e8 un esperto in quel servizio, un libro significa che la persona sta studiando quel servizio. Il compito della persona \u00e8 quello di cambiare il libro in stellina. E se non \u00e8 scritto nulla di fronte al servizio, iniziano i problemi, di cui parler\u00f2 pi\u00f9 avanti. <\/p>\n<h3><b>Come nascono i servizi orfani?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/8ae33d6e940700a5941409b7cedf3e9a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl primo problema, il primo modo per avere un servizio orfano nella propria infrastruttura \u00e8 il licenziamento delle persone. A qualcuno \u00e8 mai capitato che dall'azienda arrivassero scadenze prima di aver valutato i compiti? A volte le scadenze sono rigide e non c'\u00e8 tempo per la documentazione. \u00abDevi consegnare il servizio in produzione, poi lo completiamo\u00bb. <\/p>\n<p>Se il team \u00e8 piccolo, pu\u00f2 capitare che ci sia un solo sviluppatore che scrive tutto, mentre gli altri sono di supporto. \u00abHo scritto l'architettura principale, tu inizia a gettare le basi delle interfacce\u00bb. Poi a un certo punto il manager, ad esempio, se ne va. E in quel periodo, quando il manager se ne \u00e8 andato e non \u00e8 ancora stato nominato un nuovo, gli sviluppatori decidono da soli quale direzione prendere per il servizio, cosa succede. E come sappiamo (torniamo indietro di alcuni slide), in alcuni team ci sono persone-uniche, a volte un leader unico. Poi si dimette e otteniamo un servizio orfano. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/44741c897bfd9dc04e0a977c1cf08df3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNel frattempo, i compiti del supporto e dell'azienda non svaniscono, si accumulano nel backlog. Se durante lo sviluppo del servizio ci sono stati errori architetturali, anche questi si accumulano nel backlog. Il servizio degrada lentamente. <\/p>\n<h3><b>Come identificare un orfano?<\/b> <\/h3>\n<p>\nQuesta lista descrive bene la situazione. Chi ha riconosciuto qualcosa nella propria infrastruttura?<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/b852d070bb6864f48e3a6ae9921a12b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSui work-around documentati: c'\u00e8 un servizio che, in generale, funziona, ha un manuale di due pagine su come usarlo, ma come funziona internamente nessuno lo sa. <\/p>\n<p>O, per esempio, c'\u00e8 un qualche accorciatore di link. Per noi, ad esempio, ora abbiamo tre accorciatori di link in uso per scopi diversi in vari servizi. Queste sono le conseguenze. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/350a041f21fcd75d9a948d2b9b77cda8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOra sar\u00f2 il capitano dell'evidenza. Cosa bisogna fare? Prima di tutto, bisogna trasferire il servizio a un altro manager, a un altro team. Se il vostro team leader non si \u00e8 ancora dimesso, allora in questo altro team, quando comprendete che il servizio assomiglia a un orfano, dovete includere qualcuno che abbia almeno una comprensione di esso. <\/p>\n<p>La cosa principale: dovete avere procedure di trasferimento scritte in modo chiaro. Nel nostro caso, di solito seguo io questo aspetto, perch\u00e9 ho bisogno che tutto funzioni. Ai manager serve che venga consegnato rapidamente e quello che succeder\u00e0 dopo non \u00e8 cos\u00ec importante per loro. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/87b9d86c2c795f5d71db1489cab200a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl modo successivo per creare un orfano \u00e8: \u00abFarlo in outsourcing, sar\u00e0 pi\u00f9 veloce, e poi lo passeremo al team\u00bb. \u00c8 chiaro che ognuno ha dei piani e delle priorit\u00e0 all'interno del team. Spesso il cliente aziendale pensa che un esternalizzatore far\u00e0 le cose allo stesso modo del dipartimento tecnico presente in azienda. Anche se i loro motivi sono diversi. Nell'outsourcing si possono trovare soluzioni tecnologiche strane e algoritmi bizzarri.<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/b4208ccb134cbc694ea4993ec2751ec5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAd esempio, noi avevamo un servizio in cui Sphinx si trovava in posti inaspettati. Ti racconter\u00f2 pi\u00f9 avanti cosa abbiamo dovuto fare. <\/p>\n<p>Gli esternalizzatori possono avere framework proprietari. Si tratta semplicemente di PHP nudo con del copia e incolla da un progetto precedente, dove si possono trovare di tutto. Grandi pasticci negli script di distribuzione, quando devi cambiare alcune righe in qualche file usando complicati script Bash, e questi script di distribuzione vengono richiamati da qualche terzo script. Alla fine cambi il sistema di distribuzione, scegli qualcosa di diverso, e puff, il tuo servizio smette di funzionare. Perch\u00e9 l\u00ec dovevi anche mettere altre 8 link tra diverse cartelle. Oppure, pu\u00f2 capitare che mille registrazioni funzionano, ma centomila no. <\/p>\n<p>Continuo a capitaneare. L'accettazione di un servizio esternalizzato \u00e8 una procedura obbligatoria. A chi \u00e8 capitato che un servizio esternalizzato arrivi, ma non venga accettato da nessuna parte? Non \u00e8 cos\u00ec popolare come il servizio orfano, ma c'\u00e8 comunque. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/92ef67a1bb714cdfb820efe432d0303b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl servizio deve essere controllato, il servizio deve essere rivisto, \u00e8 necessario cambiare le password. Abbiamo avuto un caso in cui ci hanno proposto un servizio, dove l'admin panel riportava \"if login == 'admin' &amp;&amp; password == 'admin'\u2026\", scritto direttamente nel codice. Stiamo qui a riflettere, e questo viene scritto da persone nel 2018?<\/p>\n<p>Il test del volume di storage \u00e8 anche una cosa necessaria. \u00c8 importante vedere cosa succede con centomila registrazioni, anche prima di lanciare questo servizio in produzione. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/3fabdc20049892cee7636c30e595881d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNon dovrebbe essere imbarazzante inviare un servizio per la rifinitura. Quando dici: \u00abNon accetteremo questo servizio, abbiamo 20 compiti, completateli e allora lo accetteremo\u00bb, \u00e8 normale. La coscienza non dovrebbe soffrire perch\u00e9 stai mettendo in difficolt\u00e0 un manager o perch\u00e9 l'azienda spender\u00e0 dei soldi. L'azienda spender\u00e0 di pi\u00f9 in seguito.<\/p>\n<p>Noi abbiamo avuto un caso in cui abbiamo deciso di realizzare un progetto pilota in outsourcing.<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/a5b25638e51c4eabe9d6a6971f08fa6b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 stato consegnato in tempo, ed era l'unico criterio di qualit\u00e0. Perci\u00f2 \u00e8 stato creato un altro progetto pilota, che in realt\u00e0 non era pi\u00f9 completamente pilota. Questi servizi sono stati accettati, tramite modalit\u00e0 amministrative \u00e8 stato detto: ecco il vostro codice, ecco il team, ecco il vostro manager. I servizi hanno gi\u00e0 iniziato a generare profitti. Tuttavia, di fatto, sono rimasti ancora orfani, nessuno capisce come funzionano e i manager si disconnettono in ogni modo dai loro compiti. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/29ac8ab670df5d2c92dc7940d0a74e24.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'\u00e8 anche un ottimo concetto: lo sviluppo partigiano. Quando qualche dipartimento, di solito il dipartimento marketing, vuole testare un'ipotesi e ordina un servizio interamente in outsourcing. Inizia a ricevere traffico, chiudono i documenti, firmano i contratti con il fornitore, entra in esercizio e dicono: \u00abRagazzi, abbiamo un servizio qui, ha gi\u00e0 del traffico, ci sta generando soldi, accettiamolo\u00bb. Noi siamo tipo: \u00abAspetta, come \u00e8 possibile\u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/1fa0187e5db9bed7af0c97ac8500567f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn altro modo per ottenere un servizio orfano \u00e8 quando un certo team si trova improvvisamente sopraffatto, e la direzione dice: \u00abPassiamo il servizio di questo team a un altro team, che ha meno carico\u00bb. E poi lo passeremo a un terzo team e cambiamo il manager. E alla fine, abbiamo di nuovo un orfano.<\/p>\n<h3><b>Qual \u00e8 il problema con gli orfani?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/009170e7989a78e8bd9f5b7b364e358c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer chi non lo sa, si tratta della nave da guerra Wasa, costruita in Svezia, famosa perch\u00e9 \u00e8 affondata cinque minuti dopo il varo. E il re di Svezia, tra l'altro, non ha giustiziato nessuno per questo. \u00c8 stata costruita da due generazioni di ingegneri che non sapevano costruire navi simili. Un effetto prevedibile.<\/p>\n<p>La nave poteva affondare, tra l'altro, in maniera molto peggiore, ad esempio, quando a bordo ci sarebbe stato il re in mezzo a una tempesta. Invece, \u00e8 affondata subito, secondo l'approccio agile questo \u00e8 positivo \u2014 fallire presto. <\/p>\n<p>Se falliamo presto, di solito non ci sono problemi. Ad esempio, durante l'accettazione viene rimandata per modifiche. Ma se falliamo gi\u00e0 in produzione, quando sono stati investiti dei soldi, allora possono esserci problemi. Le conseguenze, come si dice nel business.<\/p>\n<p>Quali sono i rischi dei servizi orfani:<\/p>\n<ul>\n<li>Il servizio pu\u00f2 rompersi improvvisamente. <\/li>\n<li>Il servizio \u00e8 difficile da riparare o non si ripara affatto. <\/li>\n<li>Problemi di sicurezza. <\/li>\n<li>Problemi con modifiche e aggiornamenti. <\/li>\n<li>Se un servizio importante si rompe, la reputazione dell'azienda ne risente. <\/li>\n<\/ul>\n<p><\/p>\n<h3><b>Cosa fare con i servizi orfani?<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/094444a042ccf12bf4c9e166c3fffe47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRipeto ancora una volta cosa fare. In primo luogo, deve esserci documentazione. I 7 anni in Banki.ru mi hanno insegnato che i tester non devono credere alle parole degli sviluppatori, e che l'operativit\u00e0 non deve fidarsi della parola di nessuno. Bisogna verificare. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/23d652f96e93eb52d9172b103121fe54.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn secondo luogo, \u00e8 necessario scrivere schemi di interazione, perch\u00e9 a volte i servizi che vengono accolti non molto bene contengono dipendenze di cui nessuno ha parlato. Ad esempio, gli sviluppatori hanno collegato un servizio al proprio API di Yandex.Maps o a Dadata. Il tuo limite gratuito \u00e8 esaurito, tutto si \u00e8 bloccato e non sai cosa sia successo. Tutti questi problemi devono essere descritti: nel servizio \u00e8 usato Dadata, Sms, o altro.<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/b2770a07cf265ad8a3890b2cb2f62263.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn terzo luogo, lavorare con il debito tecnico. Quando fai delle soluzioni temporanee o accetti un servizio e dici che qualcosa deve essere fatto, devi assicurarti che venga fatto. Perch\u00e9 poi potrebbe rivelarsi che un piccolo problema non \u00e8 cos\u00ec piccolo e ci cadi dentro.<\/p>\n<p>Con le questioni architetturali abbiamo avuto una storia proprio riguardo Sphinx. In uno dei servizi, Sphinx era utilizzato per inserire liste. Solo una lista con paginazione, ma veniva riindicizzata ogni notte. Era composto da due indici: un grande indicizzato ogni notte, e c'era anche un piccolo indice che vi era connesso. Ogni giorno, con il 50% di probabilit\u00e0 o saltava, o no, durante il rilascio l'indice si rompeva e le notizie smettevano di aggiornarsi sulla homepage. Inizialmente ci volevano 5 minuti, finch\u00e9 l'indice veniva riindicizzato, poi l'indice \u00e8 cresciuto e a un certo punto ha iniziato a riindicizzarsi in 40 minuti. Quando l'abbiamo rimosso, abbiamo respirato di sollievo, perch\u00e9 era chiaro che sarebbe passato ancora un po' di tempo e il nostro indice sarebbe stato riindicizzato per un'intera giornata lavorativa. Questo sarebbe stato un fallimento per il nostro portale, otto ore senza notizie: finita, il business si \u00e8 fermato.<\/p>\n<h3><b>Piano di lavoro con il servizio orfano<\/b><\/h3>\n<p>\n<img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/f072ec872d59de058faf1994ac39f161.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn realt\u00e0, \u00e8 molto difficile fare ci\u00f2, perch\u00e9 il DevOps riguarda la comunicazione. Si desidera avere buoni rapporti con i propri colleghi, ma quando colpisci colleghi e manager con le normative, possono provare sentimenti contrastanti verso le persone che si comportano in questo modo. <\/p>\n<p>Oltre a tutti questi punti, c'\u00e8 un'altra cosa importante: per ciascun servizio specifico, per ciascun specifico segmento della procedura di deploy, devono rispondere persone specifiche. Quando non ci sono persone disponibili e si deve coinvolgere qualcun altro, studiare tutta la situazione diventa difficile.<\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/28e7372012d5089d3ac1be3d7dc97e03.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe tutto questo non ha funzionato e il servizio orfano \u00e8 rimasto tale, nessuno vuole adottarlo, la documentazione non viene scritta, il team coinvolto in questo servizio si rifiuta di fare qualcosa, c'\u00e8 un modo semplice: rifare tutto. <\/p>\n<p>Cio\u00e8, riprendete i requisiti per il servizio da capo e scrivete un nuovo servizio, migliore, su una piattaforma migliore, senza soluzioni tecnologiche strane. E lo migrate in produzione. <\/p>\n<p><img decoding=\"async\" alt=\"Servizi orfani: il lato opposto dell&#039;architettura a (micro)servizi\" src=\"\/wp-content\/uploads\/2019\/10\/63d0bf7d9ac1e5c5b00b67b519e228a1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAbbiamo avuto una situazione in cui abbiamo preso un servizio su Yii 1 e abbiamo capito che non potevamo continuare a svilupparlo, perch\u00e9 ci erano finiti gli sviluppatori capaci di scrivere bene su Yii 1. Tutti gli sviluppatori scrivono bene su Symfony 3. Cosa fare? Abbiamo dedicato tempo, formato un team, assegnato un manager, riscritto il progetto e lentamente spostato su di esso il traffico. <\/p>\n<p>Dopo di ci\u00f2, il vecchio servizio pu\u00f2 essere eliminato. Questa \u00e8 la mia procedura preferita, quando dal sistema di gestione delle configurazioni si deve rimuovere un servizio e poi assicurarsi che tutte le macchine in produzione siano state disattivate, in modo che non rimangano tracce per gli sviluppatori. Il repository in git rimane.<\/p>\n<p>Questo \u00e8 tutto ci\u00f2 di cui volevo parlare, sono pronto a discuterne, \u00e8 un tema controverso e molti ci hanno nuotato dentro. <\/p>\n<p><b>Nelle slide si parlava del fatto che avete unificato i linguaggi. Come esempio veniva citato il ridimensionamento delle immagini. \u00c8 davvero necessario essere rigorosi con un solo linguaggio? Perch\u00e9 il ridimensionamento di un'immagine in PHP, beh, si poteva tranquillamente fare anche in Golang.<\/b><\/p>\n<p>In realt\u00e0, non \u00e8 obbligatorio, come tutte le pratiche. In alcuni casi, potrebbe persino essere indesiderato. Ma bisogna comprendere che se nella vostra azienda ci sono 50 persone nel dipartimento tecnico, 45 di esse sono programmatori PHP, 3 sono devops che conoscono Python, Ansible, Puppet e simili, e solo uno di loro scrive un servizio in Go per il ridimensionamento delle immagini, quando se ne va, l'expertise se ne va con lui. E in questo caso dovrete cercare un sviluppatore di mercato specifico che conosca questo linguaggio, specialmente se \u00e8 raro. Quindi, da un punto di vista organizzativo, \u00e8 problematico. Dal punto di vista del devops, non dovrete solo clonare un set di playbook pronti che utilizzate per distribuire servizi, ma dovrete riscriverli da zero. <\/p>\n<p>Attualmente stiamo sviluppando un servizio su Node.js, e questo sar\u00e0 proprio uno spazio dedicato a ciascun sviluppatore con un linguaggio separato. Ma abbiamo pensato che ne valga la pena. Quindi, qui c'\u00e8 da riflettere.<\/p>\n<p><b>Come monitorate i vostri servizi? Come raccogliete e tracciate i log?<\/b><\/p>\n<p>Raccogliamo i log in Elasticsearch e li mettiamo in Kibana, e a seconda che siano ambienti di produzione o di test, utilizziamo diversi raccoglitori. Da qualche parte utilizziamo Lumberjack, in altre parti non ricordo. Ci sono anche alcuni posti in determinati servizi dove installiamo Telegraf e inviamo i dati in altre destinazioni. <\/p>\n<p><b>Come convivere con Puppet e Ansible in un'unica ambiente?<\/b><\/p>\n<p>In realt\u00e0, attualmente abbiamo due ambienti, uno con Puppet e l'altro con Ansible. Stiamo lavorando per ibridarli. Ansible \u00e8 un buon ambiente per le configurazioni iniziali, mentre Puppet \u00e8 meno efficace per le impostazioni iniziali perch\u00e9 richiede intervento manuale diretto con l'ambiente, e Puppet garantisce la coerenza della configurazione. Questo significa che l'ambiente si mantiene automaticamente aggiornato, mentre per mantenere un macchina gestita da Ansible in stato attuale, \u00e8 necessario eseguire regolarmente i playbook. Questa \u00e8 la differenza. <\/p>\n<p><b>Come mantenete la compatibilit\u00e0? Avete configurazioni sia in Ansible che in Puppet?<\/b><\/p>\n<p>Questo \u00e8 il nostro grande dolore, sosteniamo la compatibilit\u00e0 manualmente e pensiamo a come passare a qualcos'altro. Risulta che Puppet gestisca i pacchetti e mantenga alcuni link, mentre Ansible, ad esempio, gestisce il codice e adatta le nuove configurazioni delle applicazioni.<\/p>\n<p><b>Nella presentazione si parlava delle diverse versioni di Ruby. Qual \u00e8 la soluzione?<\/b><\/p>\n<p>Ci siamo trovati di fronte a questo problema in un certo luogo e dobbiamo tenerlo sempre a mente. Abbiamo semplicemente disattivato quella parte che funzionava con la versione di Ruby incompatibile con le applicazioni, tenendola separata. <\/p>\n<blockquote><p> Quest'anno la conferenza <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 Moscow<\/a><\/noindex> si svolger\u00e0 il 7 dicembre a \"Technopolis\". Accettiamo proposte di relazioni fino all'11 novembre. <noindex><a rel=\"nofollow\" href=\"http:\/\/devopsdays.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=dod-2019&amp;utm_content=post3\">Scriveteci<\/a><\/noindex> se desiderate intervenire.<\/p>\n<p>Le registrazioni per i partecipanti sono aperte, unitevi a noi! \n<\/p><\/blockquote>\n<p>Fonte: <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.1.1 - 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\/it\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\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\/it\/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\udd47Servizi orfani: il rovescio della medaglia dell'architettura (micro)servizi | ProHoster","description":"Il direttore per l'esercizio del portale Banki.ru, Andrey Nikol'skiy, ha parlato alla conferenza dello scorso anno","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/servisy-siroty-obratnaya-storona-mikro-servisnoj-arhitektury","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/38981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=38981"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/38981\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/29246"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=38981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=38981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=38981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}