{"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\/de\/blog\/administrirovanie\/legacy-servisy-v-vashej-infrastrukture","title":{"rendered":"Legacy-Dienste in Ihrer Infrastruktur","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo! Ich bin Pasha Tschernjak, leitender Entwickler bei QIWI, und heute m\u00f6chte ich \u00fcber etwas Unvermeidliches sprechen. \u00dcber Legacy.<\/p>\n<p>Lassen Sie uns mit der Frage anfangen: Was ist ein Legacy-Service? Ist es ein Service, den der Entwickler seit einer Woche\/Monat\/Jahr nicht mehr angefasst hat? Oder ist es ein Service, der von einem weniger erfahrenen Programmierer, vielleicht von Ihnen selbst, vor einem Jahr geschrieben wurde? Und jetzt sind Sie viel erfahrener. Oder ist ein Legacy-Service etwas, das Sie nie wieder committen wollten und langsam durch etwas Neues ersetzen? In jedem Fall ist es eine tickende Zeitbombe, einen solchen Service unbeaufsichtigt zu lassen und nicht zu aktualisieren.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/qiwi\/blog\/477682\/\"><img decoding=\"async\" alt=\"Legacy-Dienste in Ihrer Infrastruktur\" src=\"\/wp-content\/uploads\/2019\/12\/d33a4a7983d1c440570bc0ff8da0f1d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Bevor ich erkl\u00e4re, wie wir bei QIWI mit unseren Legacy-Services umgehen, m\u00f6chte ich erz\u00e4hlen, wie wir Ordnung in die Dienste in Wallet gebracht haben. Seit zwei Jahren bin ich f\u00fcr die Funktionsf\u00e4higkeit verantwortlich. Wenn es ein Problem gibt, werde ich immer zuerst kontaktiert. Normalerweise habe ich nicht den Mut, um 23 Uhr jemanden anzurufen, also musste ich mich hinsetzen und alle Dienste in unserer Domain durchgehen. <\/p>\n<p>Aber ich, wie jeder andere Mensch, liebe es, nachts zu schlafen, also versuchte ich, die Nutzung zu kl\u00e4ren: \u201eLeute, warum ruft ihr mich an?\u201c. Darauf erhielt ich eine recht knappe Antwort wie: \u201eUnd wer sonst?\u201c Denn ich repariere die Dienste, und die Jungs wissen einfach nicht, wen sie anrufen sollen.<\/p>\n<p>Deshalb haben wir bei einem der Retrospektiven des Backend-Teams von Wallet beschlossen, eine Tabelle zu erstellen, auf der unsere Dienste, Mikrodienste und Monolithen des Wallets sowie die daf\u00fcr Verantwortlichen aufgef\u00fchrt sind. Tabellen sind insgesamt n\u00fctzlich, in einem vern\u00fcnftigen Rahmen.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nNeben Informationen dar\u00fcber, wer wof\u00fcr verantwortlich ist, gab es dort auch Antworten auf Fragen: Wer ist der Besitzer des Dienstes, wer ist f\u00fcr dessen Weiterentwicklung, Architektur und Lebenszyklus verantwortlich? Die Personen, die f\u00fcr diesen Dienst zust\u00e4ndig sind, sind die, die ihn im Bedarfsfall reparieren k\u00f6nnen. Der Besitzer des Dienstes hat das Recht, +2 in den Commits zu hinterlassen, und die Verantwortlichen m\u00fcssen unbedingt an der Pr\u00fcfung teilnehmen, bevor dieser Dienst einen neuen Commit \u00fcbernimmt.<\/p>\n<p>Die Zeit verging, und es wurden neue Praktiken eingef\u00fchrt, wie zum Beispiel die Migration zu Kubernetes, verschiedene Tools wie Checkstyle, Spotbugs, Ktlint, das Vorhandensein von Logs in Kibana, Autodiscovery von Services anstelle der direkten Angabe von Adressen und andere n\u00fctzliche Funktionen. Und \u00fcberall erm\u00f6glichte unsere Tabelle die Aktualit\u00e4t unserer Services. F\u00fcr uns fungiert sie als eine Art Checkliste, die zeigt, dass dieser Service das kann und jenes noch nicht. Aber wir gingen weiter und erkannten, dass uns Informationen \u00fcber unsere Services fehlten, die wir \u00fcberwachen \u2013 wo sich der Source-Code des Services befindet, wo die Builds in TeamCity gestartet werden, wie sie deployt werden, wo die Source-Codes der End-to-End-Tests gespeichert sind, Fotos von Groomings \u00fcber die Architektur und die getroffenen Entscheidungen. Ideal w\u00e4re es, wenn all diese Informationen irgendwo gespeichert w\u00e4ren und griffbereit sind, wenn sie gebraucht werden. Daher wurde unsere Tabelle zum Ausgangspunkt f\u00fcr die Informationssuche.<\/p>\n<p>QIWI bewahrt trotz seines Start-up-Geists den Charakter eines gro\u00dfen Unternehmens. Wir sind bereits 12 Jahre alt, und die Teams wechseln: Menschen gehen und kommen, es entstehen neue Gruppen. Auf unserer Domain haben wir einige Dienste gefunden, die uns im Laufe der Zeit geblieben sind. Einige stammen von Entwicklern anderer Teams, andere hatten nur indirekt mit dem Wallet zu tun, weshalb wir den Service nun auf unserem Konto haben. Warum sollen wir uns mit der Funktionsweise besch\u00e4ftigen? Der Service funktioniert, und wir haben Produktfunktionen, die unbedingt umgesetzt werden m\u00fcssen.<\/p>\n<h2>Wie es manchmal vorkommt<\/h2>\n<p>\nDoch irgendwann stellen wir fest, dass der Dienst seine Funktion nicht mehr erf\u00fcllt, etwas kaputt ist \u2013 was tun wir in so einer Situation? Der Dienst funktioniert einfach nicht mehr. \u00dcberhaupt nicht. Und wir haben davon erfahren, erstens zuf\u00e4llig und zweitens nach sechs Monaten. So l\u00e4uft das eben. Das Einzige, was wir wussten, war, auf welchen virtuellen Maschinen der Dienst l\u00e4uft und wo sich der Quellcode befindet. Wir machen ein git clone und tauchen ein in die Gedanken des Entwicklers, der das vor einigen Jahren geschrieben hat, aber was sehen wir? Kein gewohntes Spring Boot, obwohl wir an alles gew\u00f6hnt sind, schlie\u00dflich sind wir Full Stack und dergleichen. Gibt es da etwa ein Spring Framework? Aber nein.<\/p>\n<p>Der Typ, der das alles geschrieben hat, war strikt und schrieb alles in reinem Java. Die gewohnten Entwicklungswerkzeuge fehlen, und es kommt die Idee auf \u2013 das m\u00fcsste alles neu geschrieben werden. Wir haben schlie\u00dflich Mikroservices, und aus jedem Toaster ert\u00f6nt das vertraute \u201eLeute, Mikroservices sind genau das, was ihr braucht!\u201c. Wenn etwas nicht stimmen sollte, k\u00f6nnt ihr locker jede beliebige Sprache nehmen und es wird alles hervorragend funktionieren.<\/p>\n<p>Das Problem ist, dass wir derzeit keinen Auftraggeber haben, der f\u00fcr diesen Service verantwortlich ist. Was sind seine gesch\u00e4ftlichen Anforderungen und was sollte dieser Service \u00fcberhaupt leisten? Und der Service ist eng in Ihre Gesch\u00e4ftsprozesse integriert. <\/p>\n<p>Und jetzt sagen Sie mir, wie einfach es ist, einen Service neu zu programmieren, ohne seine gesch\u00e4ftlichen Anforderungen zu kennen? Es ist unklar, wie der Service geloggt wird, ob es Metriken gibt \u2013 das ist unbekannt. Welche es gibt, falls vorhanden \u2013 das ist umso weniger bekannt. Zudem gibt es im Service eine Vielzahl von Klassen mit unklarer Gesch\u00e4ftslogik. Etwas wird in eine Datenbank eingegeben, \u00fcber die wir ebenfalls noch nichts wissen. <\/p>\n<h2>Womit fangen wir an?<\/h2>\n<p>\nAm logischsten ist der Beginn mit vorhandenen Tests. Dort ist normalerweise wenigstens eine gewisse Logik festgehalten, und man kann R\u00fcckschl\u00fcsse darauf ziehen, was passiert. Momentan ist TDD in Mode, aber wir sehen, dass es vor 5 Jahren kaum anders war als heute: Es gibt fast keine Unit-Tests, und sie werden uns auch genau genommen \u00fcberhaupt nichts sagen. Nun, abgesehen vielleicht von einer irgendwie gearteten Pr\u00fcfung, wie ein XML mit einem bestimmten Zertifikat unterschrieben wird.<\/p>\n<p>Der Code war nicht verst\u00e4ndlich und wir mussten genauer hinschauen, was in der virtuellen Maschine vor sich ging. Wir \u00f6ffneten die Service-Logs und fanden einen Fehler im HTTP-Client: Ein selbstsigniertes Zertifikat, das in die Ressourcen der Anwendung eingebettet war, war abgelaufen. Wir kontaktierten unsere Analysten, die uns um ein neues Zertifikat baten, welches dann ausgestellt wurde, und der Service funktioniert wieder. Man k\u00f6nnte denken, das w\u00e4re alles. Oder doch nicht? Der Service l\u00e4uft, er erf\u00fcllt eine Funktion, die f\u00fcr unser Gesch\u00e4ft notwendig ist. Wir haben bestimmte Standards f\u00fcr die Anwendungsentwicklung, die wahrscheinlich auch bei Ihnen gelten. Zum Beispiel sollten Logs nicht direkt auf der Node gespeichert werden, sondern in einem Speichersystem wie Elasticsearch, und man sollte sie in Kibana ansehen. Man kann auch die goldenen Metriken erw\u00e4hnen. Das bedeutet, die Auslastung des Services, die Anzahl der Anfragen, ob er online ist oder nicht, und wie er den HealthCheck besteht. Diese Metriken k\u00f6nnen zumindest helfen zu erkennen, wann man ihn mit gutem Gewissen au\u00dfer Betrieb nehmen und vergessen kann wie einen Albtraum.<\/p>\n<h2>Was tun?<\/h2>\n<p>\nDaher f\u00fcgen wir diesen alten Dienst in die Tabelle ein und suchen dann nach Freiwilligen unter den Entwicklern, die sich um den Dienst k\u00fcmmern und ihn in Ordnung bringen: sie sollten zumindest einige Informationen \u00fcber den Dienst verfassen, Links zu Dashboards in Grafana hinzuf\u00fcgen, die Aufgaben f\u00fcr den Aufbau verstehen und herausfinden, wie man die Anwendung bereitstellt. Schlie\u00dflich kann man die Dateien nicht einfach h\u00e4ndisch per FTP hochladen. <\/p>\n<p>Das Wichtigste dabei ist: Wie viel Zeit wird all diese n\u00fctzliche freiwillige Aktivit\u00e4t in Anspruch nehmen? Ein Sprint f\u00fcr einen halbwegs erfahrenen Entwickler, beispielsweise w\u00e4hrend 20 % der technischen Schulden. Und wie viel Zeit wurde ben\u00f6tigt, um die fest verwurzelte Logik im Umgang mit einem bestimmten Regierungssystem zu verstehen und es auf modernere Technologien zu bringen? Daf\u00fcr kann ich keine Garantie geben; es k\u00f6nnte einen Monat, vielleicht sogar zwei Monate Teamarbeit in Anspruch nehmen. Ich spreche hier aus Erfahrung bei der Integration mit einem neuen Dienst.<\/p>\n<p>In diesem Zusammenhang gibt es keinen gesch\u00e4ftlichen Mehrwert \u2014 \u00fcberhaupt keinen. Es ist v\u00f6llig normal, einen Service zu unterst\u00fctzen und daf\u00fcr etwas Zeit aufzuwenden. Nach unseren \u00fcblichen Schwierigkeiten mit dem Service haben wir ihn in die Tabelle aufgenommen, Informationen dar\u00fcber hinzugef\u00fcgt, und vielleicht werden wir ihn irgendwann umschreiben. Aber im Moment entspricht er unseren Service-Standards.<\/p>\n<p>Zusammenfassend m\u00f6chte ich einen gewissen Plan skizzieren, was mit Legacy-Services zu tun ist. <\/p>\n<p><b>Das Legacy-System von Grund auf neu zu schreiben, ist eine schlechte Idee.<\/b><br \/>\nEhrlich gesagt, dar\u00fcber braucht man gar nicht erst nachzudenken. Es ist klar, dass es w\u00fcnschenswert w\u00e4re und gewisse Vorteile sieht, aber normalerweise ist das f\u00fcr niemanden n\u00f6tig, auch nicht f\u00fcr Sie selbst.<\/p>\n<p><b>Verzeichnis<\/b><br \/>\nHolen Sie den Quellcode Ihrer Anwendungen hervor, erstellen Sie ein Verzeichnis, in dem festgehalten wird, was wo liegt und wie es funktioniert. F\u00fcgen Sie auch eine Projektbeschreibung (sozusagen ein readme.md) hinzu, damit man schnell versteht, wo sich die Logs und Metriken befinden. Der Entwickler, der nach Ihnen damit arbeitet, wird Ihnen nur dankbar sein.<\/p>\n<p><b>Verstehen Sie die Domain<\/b><br \/>\nWenn Sie eine Domain besitzen, sollten Sie stets auf dem Laufenden bleiben. Es mag banal klingen, aber nicht jeder sorgt daf\u00fcr, dass die Dienste einheitlich sind. Dabei ist es tats\u00e4chlich viel einfacher, in einem einheitlichen Standard zu arbeiten.<\/p>\n<p class=\"for_users_only_msg\">Nur registrierte Benutzer k\u00f6nnen an der Umfrage teilnehmen. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Bitte melden Sie sich an.<\/a><\/noindex>Sind Sie an Contour interessiert?<\/p>\n<h2 class=\"default-block__polling-title\">Was machen Sie mit Ihrem Legacy?<\/h2>\n<ul class=\"poll-result\">\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">31.5%<\/strong>Ich schreibe alles von Grund auf neu, das ist die richtige Vorgehensweise.<\/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>\u00c4hnlich wie Sie.<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">10.5%<\/strong>Wir haben kein Legacy, wir sind gut.<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">5.2%<\/strong>Ich schreibe es in die Kommentare.<\/p>\n<\/li>\n<\/ul>\n<p>    38 Benutzer haben abgestimmt. 20 Benutzer haben sich enthalten.<br \/>\n<br \/>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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-Services in Ihrer Infrastruktur | ProHoster","description":"Hallo! Ich bin Pasha Chernyak, leitender Entwickler bei QIWI, und heute m\u00f6chte ich \u00fcber das Unvermeidliche sprechen. \u00dcber Legacy. Lassen Sie uns mit der Frage beginnen: Was ist ein Legacy-Service? Ist ein Legacy-Service ein Dienst, um den sich der Entwickler seit einer Woche\/Monat\/Jahr nicht gek\u00fcmmert hat? Oder ist es ein Dienst, der von einem weniger erfahrenen Programmierer, also Ihnen selbst, vor einem Jahr erstellt wurde? Aber jetzt sind Sie besser geworden und...","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/legacy-servisy-v-vashej-infrastrukture","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/53442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=53442"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/53442\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/53443"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=53442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=53442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=53442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}