{"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\/et\/blog\/administrirovanie\/legacy-servisy-v-vashej-infrastrukture","title":{"rendered":"Legacy-teenused teie infrastruktuuris","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere! Minu nimi on Pasha Chernyak, olen QIWI peaarendaja ja t\u00e4na tahan r\u00e4\u00e4kida millestki v\u00e4ltimatust. Legacy.<\/p>\n<p>Alustame k\u00fcsimusega: mis on Legacy-teenus? Kas see on teenus, millega arendaja ei ole viimase n\u00e4dala\/kuu\/aasta jooksul kokku puutunud? V\u00f5i on see teenus, mille kirjutas v\u00e4hem kogenud programmeerija, n\u00e4iteks teie, kuid aasta tagasi? Ja n\u00fc\u00fcd olete te juba osavam ja kogenum. V\u00f5i on Legacy-teenus hoopis see teenus, mida olete otsustanud enam mitte uuendama ja mille jaoks valmistate tasapisi asendust? Igatahes, sellise teenuse t\u00e4helepanuta j\u00e4tmine ja mitte uuendamine on nagu aeglaselt tikkuv pomm, mis v\u00f5ib hiljem plahvatada.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/qiwi\/blog\/477682\/\"><img decoding=\"async\" alt=\"Legacy-teenused teie infrastruktuuris\" src=\"\/wp-content\/uploads\/2019\/12\/d33a4a7983d1c440570bc0ff8da0f1d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Enne kui r\u00e4\u00e4gin, kuidas me QIWI-s oma Legacy-teenustega t\u00f6\u00f6tlust teeme, jagan, kuidas me korda saime teenustele Rahakotis. Olen juba kaks aastat vastutanud selle t\u00f6\u00f6kindluse eest. Kui tekib probleem, kutsutakse mind alati esimesena. Mul on tavaliselt puudu julgust helistada kellelegi muule kell 11 \u00f5htul, nii et olen pidanud istuma ja uurima k\u00f5iki meie domeeni teenuseid. <\/p>\n<p>Aga mina, nagu iga inimene, armastan \u00f6\u00f6siti magada, seet\u00f5ttu p\u00fc\u00fcdsin aru saada, kuidas asjad k\u00e4ivad: \u00abKutse, miks te mulle helistate?\u00bb. Millele sain \u00fcsna lakoonilise vastuse: \u00abAga kellele veel?\u00bb. Sest ma parandasin teenuseid, ja poisid lihtsalt ei tea, kellele helistada.<\/p>\n<p>Seet\u00f5ttu otsustasime \u00fchel meie Koti tagasiside koosolekul, et peame koostama tabeli, kus on loetletud meie teenused, mikroteenused ja Koti monoliidid ning vastutavad isikud. Tabelid on tegelikult kasulikud, m\u00f5istlike piirideni.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLisaks teabele selle kohta, kes mille eest vastutab, olid seal vastused ka k\u00fcsimustele: kes on teenuse omanik, kes vastutab selle arendamise, arhitektuuri ja eluiga. Inimesed, kes on selle teenuse eest vastutavad \u2014 need on inimesed, kes saavad seda vajaduse korral parandada. Teenuse omanikul on \u00f5igus j\u00e4tta +2 commitidesse, vastutavad peavad samuti kindlasti olema kohal \u00fclevaatusel, enne kui see teenus uue commit'i vastu v\u00f5tab.<\/p>\n<p>Aeg kulges, uutest praktikadest hakkasid sisse tulema n\u00e4iteks migratsioon Kubernetesesse, erinevad checkstyle, spotbugs, ktlint, logide olemasolu Kibanas, teenuste autodiscovery asemel otse aadresside m\u00e4\u00e4ramine ja muud kasulikud asjad. Ja igal pool v\u00f5imaldas meie tabel hoida meie teenuste aktuaalsust. Meie jaoks on see nagu kontrollnimekiri, mis \u00fctleb, et see teenus oskab seda teha, aga seda veel ei oska. Kuid me liikusime edasi, m\u00f5istes, et meil on puudulik teave meie teenuste kohta, mida me j\u00e4lgime, kus asuvad teenuse l\u00e4htekoodid, kus k\u00e4ivitatakse \u00fclesanded ehituses TeamCitys, kuidas neid juurutatakse, kus s\u00e4ilitatakse end2end testide l\u00e4htekoodid, fotod arhitektuuriga seonduvatest grooming'utest ja tehtud otsustest. Ideaalis sooviksime, et kogu see teave oleks kuskil olemas ja kergesti k\u00e4eulatuses, kui seda vajame. Seet\u00f5ttu sai meie tabelist teabeotsingu l\u00e4htekoht.<\/p>\n<p>Kuid QIWI, kuigi s\u00e4ilitab start-up'i vaimu, on suur ettev\u00f5te. Meie oleme juba 12 aastat tegutsenud ja meeskonnad vahetuvad: inimesed lahkuvad, inimesed tulevad, moodustuvad uued meeskonnad. Oleme avastanud oma domeenis mitu teenust, mis on meile p\u00e4randiks j\u00e4\u00e4nud. M\u00f5ned tulid teiste meeskondade arendajatelt, m\u00f5ned olid lihtsalt kuidagi seotud Koti teenusega, seet\u00f5ttu on teenus n\u00fc\u00fcd meie bilansis. Miks uurida, mis ja kuidas t\u00f6\u00f6tab? Teenus ju t\u00f6\u00f6tab ning meil on toote funktsioonid, mida peab kindlasti v\u00e4ljat\u00f6\u00f6tama.<\/p>\n<h2>Nagu ikka<\/h2>\n<p>\nAga mingil hetkel avastame, et teenus l\u00f5petab oma funktsiooni, midagi on katki \u2014 kuidas sellises olukorras k\u00e4ituda? Teenus lihtsalt ei t\u00f6\u00f6ta. \u00dcldse. Ja me saime sellest teada, esiteks juhuslikult ja teiseks, poole aasta p\u00e4rast. Nii juhtub. Ainus, mida me teadsime, oli see, millistel virtuaalmasinatel teenus t\u00f6\u00f6tab, kus on selle l\u00e4htekood ja k\u00f5ik. Teeme git clone'i ja sukeldume inimese m\u00f5tetesse, kes kirjutas seda paar aastat tagasi, aga mida me n\u00e4eme? \u00dchtegi tuttavat Spring Boot'i, kuigi oleme k\u00f5igega harjunud, meil on ju full stack ja k\u00f5ik selline. V\u00f5ib-olla seal on Spring Framework? Aga ei ole.<\/p>\n<p>Poiss, kes k\u00f5ike seda kirjutas, oli karm ja kirjutas k\u00f5ik puhtas Java's. Arendaja tuttavaid t\u00f6\u00f6riistu ei ole ja viskub m\u00f5te \u2014 peaksime selle k\u00f5ik \u00fcmber kirjutama. Meil on ju mikroteenused ja igaelt r\u00f6stsaiast kostab tuttav \u201ePoisid, mikroteenused on see, mida te vajate!\u201d. Kui midagi l\u00e4heb valesti, v\u00f5ite rahulikult v\u00f5tta mis tahes keele ja k\u00f5ik l\u00e4heb suurep\u00e4raselt.<\/p>\n<p>K\u00fcsimus on selles, et praegu pole meil tellijat, kes vastutab selle teenuse eest. Millised olid tema \u00e4ri n\u00f5uded, mida see teenus peaks \u00fcldse tegema? Ja teenus on tihedalt integreeritud teie \u00e4ri protsessidesse. <\/p>\n<p>Ja n\u00fc\u00fcd \u00fctlege, kui lihtne oleks teenust \u00fcmber kirjutada, teadmata selle \u00e4ri n\u00f5udeid? Teenuse logimine on arusaamatu, kas m\u00f5\u00f5dikud on olemas \u2014 pole teada. Millised need on, kui olemas \u2014 veelgi v\u00e4hem on teada. Ja samas on teenuses tohutu hulk arusaamatut \u00e4ri loogikat. Midagi siseneb andmebaasi, millest me samuti praegu midagi ei tea. <\/p>\n<h2>Kust alustada?<\/h2>\n<p>\nK\u00f5ige loogilisemast \u2014 testide olemasolust. Seal on tavaliselt kirjas v\u00e4hemalt mingi loogika ja saab teha j\u00e4reldusi selle kohta, mis toimub. Praegu on moes TDD, kuid me n\u00e4eme, et viis aastat tagasi oli k\u00f5ik peaaegu sama, mis n\u00fc\u00fcd: \u00fcksuste teste on peaaegu mitte ja need ei \u00fctle meile tegelikult midagi. No, v\u00e4lja arvatud ehk m\u00f5ne kontrolli kohta, kuidas mingi xml millegagi kinnitatud sertifikaadiga allkirjastatakse.<\/p>\n<p>Koodi p\u00f5hjal ei olnud midagi aru saada, ja me pidime minema vaatama, mis seal virtuaalkeskkonnas toimub. Avastasime teenuse logidest http-klienti puudutava vea, ise allkirjastatud sertifikaadi, mis oli rakenduse ressurssidesse sisse kodeeritud, oli h\u00e4bi p\u00e4rast aegunud. V\u00f5tsime \u00fchendust meie anal\u00fc\u00fctikutega, nad palusid uut sertifikaati, mis v\u00e4ljastati ja teenus t\u00f6\u00f6tab j\u00e4lle. Tundub, et sellega on k\u00f5ik. V\u00f5i siiski? Teenus t\u00f6\u00f6tab, t\u00e4idab mingit funktsiooni, mis on meie \u00e4ri jaoks vajalik. Meil on teatud rakenduste arendamise standardid, mis t\u00f5en\u00e4oliselt on ka teil. N\u00e4iteks ei tohiks logisid node\u2019is kaustas hoida, vaid mingis ladustamises, nagu n\u00e4iteks Elasticsearchis, ja vaadata neid Kibana kaudu. Saame meenutada ka kuldsete m\u00f5\u00f5dikute olemust. See t\u00e4hendab teenusele avaldatud koormust, teenusele tehtud p\u00e4ringute arvu, kas see on eluj\u00f5uline, ja kuidas tervisekontrollid l\u00e4bivad. Igatahes aitavad need m\u00f5\u00f5dikud teada saada, millal saab selle rahulikult kasutusest v\u00e4lja v\u00f5tta ja unustada kui halva une.<\/p>\n<h2>Mida teha<\/h2>\n<p>\nSeet\u00f5ttu lisame sellise vana teenuse tabelisse ja seej\u00e4rel otsime arendajate seast vabatahtlikke, kes teenuse korda teevad: kirjutavad teenuse kohta v\u00e4hemalt mingid andmed, lisavad lingid Grafana armatuurlaudadele, ehitus\u00fclesannetele, selgitavad, kuidas rakendust k\u00e4ivitada, ei ole ju m\u00f5tet FTP kaudu faile k\u00e4sitsi \u00fcles laadida. <\/p>\n<p>Oluline on, kui palju aega see kogu kasulik vabatahtlik tegevus v\u00f5tab? \u00dcks sprind kogenud arendajale, n\u00e4iteks 20% tehnilise v\u00f5laga. Aga kui palju aega kulus kogu s\u00fcgava loogika m\u00f5istmiseks, et suhelda mingi riikliku s\u00fcsteemiga ja tuua see uuemate tehnoloogiate juurde? Ma ei garanteeri, v\u00f5ib-olla l\u00e4heb kuu, v\u00f5ib-olla isegi kaks meeskonna t\u00f6\u00f6d. Seda r\u00e4\u00e4gin ma praeguse aja integratsiooni kogemuse p\u00f5hjal m\u00f5ne uue teenusega.<\/p>\n<p>Kuid \u00e4riv\u00e4\u00e4rtuse v\u00e4ljund on null. Absoluutselt. Teenuse toetamine ja sellele natuke aega kulutamine on normaalne. Kuid p\u00e4rast meie tavalisi teenuseprotseduure lisasime selle tabelisse, t\u00e4iendasime teavet selle kohta ja v\u00f5ib-olla kirjutame kunagi uuesti. Praegu vastab see meie teenuse t\u00f6\u00f6standarditele.<\/p>\n<p>Kokkuv\u00f5tteks tahaksin v\u00e4lja tuua plaani, mida teha p\u00e4randteenustega. <\/p>\n<p><b>P\u00e4randi nullist \u00fcmberkirjutamine on halb idee.<\/b><br \/>\nT\u00f5siselt, sellele ei tasu isegi m\u00f5elda. On selge, et seda tahaks ja m\u00f5ned plussid paistavad silma, kuid tavaliselt ei ole see kellelegi vajalik, sealhulgas teile endale.<\/p>\n<p><b>K\u00e4sitegevus<\/b><br \/>\nKaevake v\u00e4lja oma rakenduste l\u00e4htekoodid, koostage k\u00e4siraamat, milles on kirjas, mis ja kus asub ning kuidas see t\u00f6\u00f6tab; sinna kirjutage ka projekti kirjeldus (tingimuslik readme.md), et kiiresti aru saada, kus on logid ja m\u00f5\u00f5dikud. Arendaja, kes teiega p\u00e4rast seda tegelema hakkab, \u00fctleb ait\u00e4h.<\/p>\n<p><b>M\u00f5istke domeeni<\/b><br \/>\nKui teil on m\u00f5ni domeen, siis p\u00fc\u00fcdke hoida end kursis. See k\u00f5lab banaalselt, kuid mitte k\u00f5ik ei j\u00e4lgi, et teenused oleksid \u00fchte moodi. Olles \u00fches standardis, on t\u00f5epoolest palju lihtsam t\u00f6\u00f6tada.<\/p>\n<p class=\"for_users_only_msg\">Ainult registreeritud kasutajad saavad k\u00fcsitluses osaleda. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Logige sisse<\/a><\/noindex>, palun.<\/p>\n<h2 class=\"default-block__polling-title\">Mida te teete oma legacy'ga?<\/h2>\n<ul class=\"poll-result\">\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">31.5%<\/strong>Kirjutan nullist \u00fcmber, nii on \u00f5igesti12<\/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>Peaaegu sama, mis teie20<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">10.5%<\/strong>Meil pole legacy't, me oleme tublid4<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">5.2%<\/strong>Kirjutan kommentaaridesse2<\/p>\n<\/li>\n<\/ul>\n<p>    H\u00e4\u00e4letas 38 kasutajat. Olid erapooletud 20 kasutajat.<br \/>\n<br \/>Allikas: <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\/et\/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=\"et_EE\" \/>\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\/et\/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\udd47Legacy-teenused teie infrastruktuuris | ProHoster","description":"Tere! Minu nimi on Pasha \u010cernjak, olen QIWI juhtiv arendaja, ja t\u00e4na tahan r\u00e4\u00e4kida v\u00e4ltimatust. Legacy'st. Alustame k\u00fcsimusega: mis on legacy-teenus? Legacy-teenus on teenus, millega arendaja pole n\u00e4dalat\/kuud\/aastat tegelenud? V\u00f5i on see teenus, mille kirjutas v\u00e4hem kogenud programmeerija, n\u00e4iteks just teie, kuid aasta tagasi? Ja n\u00fc\u00fcd olete te osavam ja","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/legacy-servisy-v-vashej-infrastrukture","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/53442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=53442"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/53442\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/53443"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=53442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=53442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=53442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}