{"id":53442,"date":"2019-12-02T00:00:00","date_gmt":"2019-12-01T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/legacy-servisy-v-vashej-infrastrukture"},"modified":"2020-02-18T14:01:20","modified_gmt":"2020-02-18T11:01:20","slug":"legacy-servisy-v-vashej-infrastrukture","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/legacy-servisy-v-vashej-infrastrukture","title":{"rendered":"Servizi legacy nella vostra infrastruttura","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ciao! Sono Pasha Chernyak, lead developer in QIWI, e oggi voglio parlare dell'inevitabile. Di Legacy.<\/p>\n<p>Iniziamo con la domanda: che cos'\u00e8 un servizio Legacy? \u00c8 un servizio che non \u00e8 stato toccato da un developer per una settimana\/mese\/anno? Oppure \u00e8 un servizio scritto da un programmatore meno esperto, per esempio da te, ma un anno fa? E ora sei molto pi\u00f9 capace e esperto. O forse un servizio Legacy \u00e8 quello che hai deciso di non toccare mai pi\u00f9 e per cui stai lentamente preparando una sostituzione? In ogni caso, lasciare un servizio del genere senza supervisione e non aggiornarlo \u00e8 una bomba a orologeria che potrebbe esplodere pi\u00f9 avanti.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/qiwi\/blog\/477682\/\"><img decoding=\"async\" alt=\"Servizi legacy nella vostra infrastruttura\" src=\"\/wp-content\/uploads\/2019\/12\/d33a4a7983d1c440570bc0ff8da0f1d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Prima di passare a come lavoriamo con i nostri servizi Legacy in QIWI, vi racconter\u00f2 come abbiamo messo ordine nei servizi nel Portafoglio. Sono gi\u00e0 due anni che sono responsabile del suo funzionamento. Se c'\u00e8 qualche problema, sono sempre il primo a ricevere una chiamata. Di solito non ho il coraggio di chiamare qualcun altro alle 11 di sera, quindi mi sono dovuto sedere e capire tutti i servizi del nostro dominio. <\/p>\n<p>Ma io, come qualsiasi persona, amo dormire di notte, quindi ho cercato di capire il funzionamento: 'Ragazzi, perch\u00e9 mi state chiamando?'. A cui ho ricevuto una risposta piuttosto concisa come 'E a chi altro?'. Perch\u00e9 riparo i servizi, e inoltre i ragazzi semplicemente non sanno a chi chiamare.<\/p>\n<p>Pertanto, durante una delle retrospettive del team backend del Wallet, abbiamo deciso che era necessario creare una tabella con un elenco dei nostri servizi, microservizi e monoliti del wallet, e le persone responsabili per essi. Le tabelle sono davvero utili, se usate con criterio.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nOltre alle informazioni su chi \u00e8 responsabile di cosa, c'erano risposte alle domande: chi \u00e8 il proprietario del servizio, chi si occupa del suo sviluppo, dell'architettura e del ciclo di vita. Le persone responsabili per questo servizio sono quelle in grado di ripararlo, se necessario. Il proprietario del servizio ha il diritto di lasciare +2 nei commit, e i responsabili devono essere sempre presenti nella revisione prima che questo servizio possa accettare un nuovo commit.<\/p>\n<p>Il tempo passava e iniziavano ad essere adottate nuove pratiche, come la migrazione in Kubernetes, vari checkstyle, spotbugs, ktlint, la presenza di log in Kibana, autodiscovery dei servizi invece di specificare indirizzi direttamente e altre utilit\u00e0. E ovunque la nostra tabella consentiva di mantenere aggiornati i nostri servizi. Per noi \u00e8 una sorta di checklist che indica che questo servizio sa fare determinate cose, mentre altre no. Ma siamo andati oltre, rendendoci conto che ci mancava informazioni sui nostri servizi, come dove si trovano i sorgenti del servizio, dove vengono lanciati i task di build in TeamCity, come vengono deployati, dove si trovano i sorgenti dei test end2end, foto sui grooming riguardanti l'architettura e le decisioni prese. Idealmente, volevamo che tutte queste informazioni fossero conservate da qualche parte e facilmente accessibili quando necessario. Perci\u00f2 la nostra tabella \u00e8 diventata il punto di partenza per la ricerca delle informazioni.<\/p>\n<p>Ma QIWI, pur mantenendo lo spirito di startup, \u00e8 una grande azienda. Sono gi\u00e0 passati 12 anni, e i team cambiano: le persone se ne vanno, altre arrivano, si formano nuovi gruppi. Abbiamo scoperto sul nostro dominio diversi servizi ereditati. Qualcosa \u00e8 arrivato dai programmatori di altri team, qualcosa semplicemente si riferiva in qualche modo al Portafoglio, quindi ora il servizio \u00e8 nel nostro saldo. Perch\u00e9 preoccuparsi di cosa e come funziona? Il servizio \u00e8 attivo e abbiamo funzionalit\u00e0 di prodotto che devono assolutamente essere sviluppate.<\/p>\n<h2>Come succede<\/h2>\n<p>\nA un certo punto, ci rendiamo conto che il servizio smette di funzionare, qualcosa si \u00e8 rotto \u2014 come comportarsi in una situazione del genere? Il servizio ha smesso di funzionare. Del tutto. E lo abbiamo scoperto, innanzitutto, per caso, e in secondo luogo, dopo sei mesi. Pu\u00f2 succedere. L'unica cosa che sapevamo era su quali virtual machine fosse implementato il servizio, dove si trovassero i suoi sorgenti, e basta. Facciamo un git clone e ci immergiamo nei pensieri di chi scrisse tutto questo qualche anno fa, ma cosa vediamo? Nessun Spring Boot familiare, anche se ci siamo abituati a tutto, dato che abbiamo un full stack e cos\u00ec via. Forse c'\u00e8 Spring Framework? No, proprio no.<\/p>\n<p>Il ragazzo che ha scritto tutto questo era severo e ha scritto tutto in pura Java. Strumenti familiari per il sviluppatore non ci sono, e sorge un'idea \u2014 bisognerebbe riscrivere tutto. Abbiamo microservizi, e da ogni tostapane arriva il familiare \u00abRagazzi, i microservizi sono ci\u00f2 di cui avete bisogno!\u00bb. Se per caso qualcosa non va, potete tranquillamente prendere qualsiasi linguaggio e andr\u00e0 tutto alla grande.<\/p>\n<p>Il problema \u00e8 che attualmente non abbiamo un cliente responsabile per questo servizio. Quali erano le sue esigenze commerciali, cosa deve fare questo servizio in realt\u00e0? Inoltre, il servizio \u00e8 strettamente integrato nei vostri processi aziendali. <\/p>\n<p>E ora diteci, quanto \u00e8 semplice riscrivere il servizio, senza conoscerne le esigenze commerciali? Non \u00e8 chiaro come viene effettuato il logging, se ci sono delle metriche - \u00e8 sconosciuto. Quali sono, se ci sono - ancora di pi\u00f9, non lo sappiamo. E in pi\u00f9, nel servizio ci sono un enorme numero di classi di logica aziendale poco chiare. Qualcosa entra in un database di cui non sappiamo ancora nulla. <\/p>\n<h2>Da dove cominciare?<\/h2>\n<p>\nDal punto pi\u00f9 logico: dalla presenza di test. Di solito, l\u00e0 \u00e8 scritta qualche logica e si possono fare conclusioni su cosa sta accadendo. Ora va di moda il TDD, ma vediamo che anche 5 anni fa era praticamente lo stesso di ora: ci sono quasi nessun test unitari, e questi non ci diranno sostanzialmente nulla. A meno che non siano utili per verificare come venga firmato un xml con un certificato personalizzato.<\/p>\n<p>Non siamo riusciti a comprendere nulla dal codice e abbiamo dovuto controllare direttamente sulla virtual machine. Abbiamo aperto i log del servizio e abbiamo trovato un errore legato al client HTTP, un certificato auto-firmato che era incorporato nelle risorse dell'applicazione e che era scaduto. Ci siamo messi in contatto con i nostri analisti, che hanno richiesto un nuovo certificato, che ci \u00e8 stato fornito, e il servizio ha ripreso a funzionare. Sembrerebbe che sia tutto a posto. O invece no? Comunque il servizio funziona, svolge una funzione necessaria per il nostro business. Abbiamo degli standard di sviluppo delle applicazioni, che probabilmente hai anche tu. Ad esempio, non conservare i log sulla nodi in una cartella, ma memorizzarli in un qualche tipo di storage, come Elasticsearch, e visualizzarli in Kibana. Possiamo anche ricordare le metriche fondamentali. Cio\u00e8 il carico sul servizio, il numero di richieste al servizio, se \u00e8 attivo o meno, come passano i controlli di salute. Almeno queste metriche possono aiutare a capire quando \u00e8 possibile dismetterlo con tranquillit\u00e0 e dimenticarlo come un brutto sogno.<\/p>\n<h2>Cosa fare<\/h2>\n<p>\nQuindi aggiungiamo un servizio cos\u00ec datato nella tabella, e poi andiamo a cercare tra i programmatori volontari che si occupino del servizio e lo sistemino: scriveranno almeno alcune informazioni sul servizio, aggiungeranno link ai dashboard in Grafana, agli task di build, e capiranno come distribuire l'applicazione; non \u00e8 certo il caso di caricare file tramite FTP a mano. <\/p>\n<p>La cosa principale \u00e8: quanto tempo richieder\u00e0 tutta questa utile attivit\u00e0 di volontariato? Un sprint per un programmatore abbastanza esperto, ad esempio, durante il 20% del debito tecnico. E quanto tempo ci \u00e8 voluto per comprendere la logica radicata nelle comunicazioni con un certo sistema governativo e aggiornarla a tecnologie pi\u00f9 moderne? Non posso garantire, potrebbe richiedere un mese, o forse due di lavoro del team. Parlo per esperienza di integrazione con qualche nuovo servizio nel contesto attuale.<\/p>\n<p>In questo caso, non c'\u00e8 alcun valore commerciale. Assolutamente nulla. Prendere un servizio per il supporto e dedicare un po' di tempo a questo \u00e8 normale. Ma dopo i nostri standard rituali con il servizio, lo abbiamo inserito nella tabella, aggiunto informazioni su di esso e, forse, un giorno lo riscriveremo. Ma al momento, soddisfa i nostri standard per il funzionamento dei servizi.<\/p>\n<p>In sintesi, vorrei arrivare a un certo piano su cosa fare con i servizi legacy. <\/p>\n<p><b>Riscrivere il legacy da zero \u00e8 una cattiva idea<\/b><br \/>\nSeriamente, non dovresti nemmeno pensarci. \u00c8 chiaro che ci sono desideri e si vedono alcuni vantaggi, ma di solito non serve a nessuno, incluso voi stessi.<\/p>\n<p><b>Manuale<\/b><br \/>\nScavare nei codici sorgente delle vostre applicazioni, creare un manuale che indichi che cosa e dove si trova e come funziona, includere anche una descrizione del progetto (un eventuale readme.md), in modo da capire rapidamente dove si trovano i log e le metriche. Lo sviluppatore che dovr\u00e0 occuparsi di questo dopo di voi vi ringrazier\u00e0.<\/p>\n<p><b>Comprendere il dominio<\/b><br \/>\nSe possiedi un dominio, cerca di tenere d'occhio la situazione. Pu\u00f2 sembrare banale, ma non tutti si assicurano che i servizi siano coerenti. E lavorare con uno standard unico \u00e8 in realt\u00e0 molto pi\u00f9 facile.<\/p>\n<p class=\"for_users_only_msg\">Solo gli utenti registrati possono partecipare al sondaggio. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Accedi<\/a><\/noindex>, per favore.<\/p>\n<h2 class=\"default-block__polling-title\">Cosa fai con il tuo legacy?<\/h2>\n<ul class=\"poll-result\">\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">31.5%<\/strong>Lo riscrivo da zero, \u00e8 pi\u00f9 corretto.<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent  poll-result__data-percent_winner\">52.6%<\/strong>Quasi la stessa cosa che fai tu.<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">10.5%<\/strong>Non abbiamo legacy, siamo bravi.<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">5.2%<\/strong>Scriver\u00f2 nei commenti.<\/p>\n<\/li>\n<\/ul>\n<p>    Hanno votato 38 utenti. 20 utenti si sono astenuti.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/qiwi\/blog\/477682\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0448\u0430 \u0427\u0435\u0440\u043d\u044f\u043a, \u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 QIWI, \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e\u043c. \u041e Legacy. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u0430: \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Legacy-\u0441\u0435\u0440\u0432\u0438\u0441? Legacy-\u0441\u0435\u0440\u0432\u0438\u0441 \u2014 \u044d\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435 \u043a\u0430\u0441\u0430\u043b\u0441\u044f \u0443\u0436\u0435 \u043d\u0435\u0434\u0435\u043b\u044e\/\u043c\u0435\u0441\u044f\u0446\/\u0433\u043e\u0434? \u0418\u043b\u0438 \u044d\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043c\u0435\u043d\u0435\u0435 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432\u0430\u043c\u0438, \u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434? \u0410 \u0442\u0435\u043f\u0435\u0440\u044c-\u0442\u043e \u0432\u044b \u043a\u0440\u0443\u0447\u0435 \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":53443,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-53442","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0448\u0430 \u0427\u0435\u0440\u043d\u044f\u043a, \u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 QIWI, \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e\u043c. \u041e Legacy. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u0430: \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Legacy-\u0441\u0435\u0440\u0432\u0438\u0441? Legacy-\u0441\u0435\u0440\u0432\u0438\u0441 \u2014 \u044d\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435 \u043a\u0430\u0441\u0430\u043b\u0441\u044f \u0443\u0436\u0435 \u043d\u0435\u0434\u0435\u043b\u044e\/\u043c\u0435\u0441\u044f\u0446\/\u0433\u043e\u0434? \u0418\u043b\u0438 \u044d\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043c\u0435\u043d\u0435\u0435 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432\u0430\u043c\u0438, \u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434? \u0410 \u0442\u0435\u043f\u0435\u0440\u044c-\u0442\u043e \u0432\u044b \u043a\u0440\u0443\u0447\u0435 \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\/legacy-servisy-v-vashej-infrastrukture\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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\udd47Legacy-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0432 \u0432\u0430\u0448\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0448\u0430 \u0427\u0435\u0440\u043d\u044f\u043a, \u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 QIWI, \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e\u043c. \u041e Legacy. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u0430: \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Legacy-\u0441\u0435\u0440\u0432\u0438\u0441? Legacy-\u0441\u0435\u0440\u0432\u0438\u0441 \u2014 \u044d\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435 \u043a\u0430\u0441\u0430\u043b\u0441\u044f \u0443\u0436\u0435 \u043d\u0435\u0434\u0435\u043b\u044e\/\u043c\u0435\u0441\u044f\u0446\/\u0433\u043e\u0434? \u0418\u043b\u0438 \u044d\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043c\u0435\u043d\u0435\u0435 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432\u0430\u043c\u0438, \u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434? \u0410 \u0442\u0435\u043f\u0435\u0440\u044c-\u0442\u043e \u0432\u044b \u043a\u0440\u0443\u0447\u0435 \u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/legacy-servisy-v-vashej-infrastrukture\" \/>\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-12-01T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:01:20+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 legacy nella tua infrastruttura | ProHoster","description":"Ciao! Mi chiamo Pasha Chernyak, sono il principale sviluppatore in QIWI e oggi voglio parlare dell'inevitabile. Del Legacy. Iniziamo con una domanda: che cos'\u00e8 un servizio Legacy? \u00c8 un servizio che lo sviluppatore non tocca da una settimana\/mese\/anno? O un servizio scritto da un programmatore meno esperto, ad esempio da te un anno fa? Ma ora sei molto pi\u00f9 esperto e...","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/legacy-servisy-v-vashej-infrastrukture","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\udd47Legacy-\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0432 \u0432\u0430\u0448\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041f\u0430\u0448\u0430 \u0427\u0435\u0440\u043d\u044f\u043a, \u044f \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432 QIWI, \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e\u043c. \u041e Legacy. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0432\u043e\u043f\u0440\u043e\u0441\u0430: \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Legacy-\u0441\u0435\u0440\u0432\u0438\u0441? Legacy-\u0441\u0435\u0440\u0432\u0438\u0441 \u2014 \u044d\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435 \u043a\u0430\u0441\u0430\u043b\u0441\u044f \u0443\u0436\u0435 \u043d\u0435\u0434\u0435\u043b\u044e\/\u043c\u0435\u0441\u044f\u0446\/\u0433\u043e\u0434? \u0418\u043b\u0438 \u044d\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043c\u0435\u043d\u0435\u0435 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432\u0430\u043c\u0438, \u043d\u043e \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434? \u0410 \u0442\u0435\u043f\u0435\u0440\u044c-\u0442\u043e \u0432\u044b \u043a\u0440\u0443\u0447\u0435 \u0438","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/legacy-servisy-v-vashej-infrastrukture","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-12-01T21:00:00+00:00","article:modified_time":"2020-02-18T11:01:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"53442","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 07:23:42","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:25:27","updated":"2026-01-24 07:23:42"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/53442","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=53442"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/53442\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/53443"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=53442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=53442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=53442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}