{"id":39476,"date":"2019-10-31T22:33:41","date_gmt":"2019-10-31T19:33:41","guid":{"rendered":"https:\/\/prohoster.info\/blog\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io\/"},"modified":"2019-10-31T22:33:41","modified_gmt":"2019-10-31T19:33:41","slug":"legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","title":{"rendered":"Einfache Verwaltung von Mikrodienstkonfigurationen mit microconfig.io","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Eine der Hauptprobleme bei der Entwicklung und anschlie\u00dfenden Wartung von Microservices ist die sorgf\u00e4ltige und akkurate Konfiguration ihrer Instanzen. Hierbei kann, meiner Meinung nach, ein neues Framework hilfreich sein, <noindex><a rel=\"nofollow\" href=\"http:\/\/microconfig.io\">microconfig.io<\/a><\/noindex>. Es erm\u00f6glicht, einige Routineaufgaben der Anwendungs \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 ziemlich elegant zu l\u00f6sen. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nWenn Sie viele Microservices haben und jeder von ihnen mit seiner eigenen Konfigurationsdatei\/en geliefert wird, ist die Wahrscheinlichkeit hoch, einen Fehler in einer von ihnen zu machen, den man ohne entsprechende Erfahrung und ein Logging-System nur schwer identifizieren kann. Die Hauptaufgabe, die das Framework verfolgt, besteht darin, die doppelten KonfigurationParameter der Instanzen zu minimieren und damit die Wahrscheinlichkeit von Fehlern zu verringern.<\/p>\n<p>Betrachten wir ein Beispiel. Angenommen, Sie haben eine einfache Anwendung mit einer Konfigurationsdatei <b>yaml<\/b>. Das kann ein beliebiger Microservice in jeder Programmiersprache sein. Schauen wir uns an, wie man das Framework auf diesen Dienst anwenden kann. <\/p>\n<p>Aber bevor wir beginnen, erstellen wir ein leeres Projekt in Idea IDE und installieren zuerst das Plugin microconfig.io: <\/p>\n<p><img decoding=\"async\" alt=\"Einfache Verwaltung von Mikrodienstkonfigurationen mit microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/e2809b31309a80cf6909cf554081e895.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWir konfigurieren die Plugin-Startkonfiguration; Sie k\u00f6nnen die Standardkonfiguration verwenden, wie auf dem oberen Screenshot.<\/p>\n<p>Unser Dienst hei\u00dft order, also erstellen wir in dem neuen Projekt eine \u00e4hnliche Struktur:<\/p>\n<p><img decoding=\"async\" alt=\"Einfache Verwaltung von Mikrodienstkonfigurationen mit microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/a1edb8aa2e5dae3867cfff78276ebb8d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn den Ordner mit dem Namen des Dienstes legen wir die Konfigurationsdatei \u2014 <b>application.yaml<\/b>. Alle Microservices laufen in irgendeiner Umgebung, also m\u00fcssen wir neben der Erstellung der Dienstkonfiguration auch die Umgebung selbst beschreiben: Daf\u00fcr erstellen wir einen Ordner <b>envs<\/b> und f\u00fcgen eine Datei mit dem Namen unserer Arbeitsumgebung hinzu. Somit wird das Framework Konfigurationsdateien f\u00fcr die Dienste in der Umgebung erstellen, <b>dev<\/b>, weil genau dieser Parameter in den Plugin-Einstellungen festgelegt ist.<\/p>\n<p>Dateistruktur <b>dev.yaml<\/b> wird ziemlich einfach sein: <\/p>\n<pre><code class=\"plaintext\">mainorder:\n    components:\n         - order<\/code><\/pre>\n<p>\nDas Framework arbeitet mit Konfigurationen, die in Gruppen zusammengefasst sind. F\u00fcr unseren Dienst w\u00e4hlen wir einen Gruppennamen <b>mainorder<\/b>. Das Framework findet jede solche Gruppe von Anwendungen in der Umgebungsdatei und erstellt f\u00fcr alle von ihnen die Konfigurationen, die in den entsprechenden Ordnern gefunden werden. <\/p>\n<p>In der Konfigurationsdatei des Dienstes <b>order<\/b> geben wir zun\u00e4chst nur einen Parameter an: <\/p>\n<pre><code class=\"plaintext\">spring.application.name: order<\/code><\/pre>\n<p>\nJetzt starten wir das Plugin, und es wird die ben\u00f6tigte Konfiguration unseres Dienstes basierend auf dem im Eigenschaften angegebenen Pfad generieren:<\/p>\n<p><img decoding=\"async\" alt=\"Einfache Verwaltung von Mikrodienstkonfigurationen mit microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/9099990c05fd3c6ef0549f231dc84fb5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMan kann <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\/#\/?id=running-the-config-build\">auch ohne Installation des Plugins auskommen, indem man das Distributionspaket des Frameworks herunterl\u00e4dt und es von der Kommandozeile aus ausf\u00fchrt.<\/a><\/noindex> Diese L\u00f6sung eignet sich f\u00fcr den Einsatz auf dem Build-Server.<br \/>\nEs ist erw\u00e4hnenswert, dass das Framework die<\/p>\n<p>property <b>-Syntax hervorragend versteht, also die \u00fcblichen Property-Dateien, die man zusammen mit den<\/b> Konfigurationen verwenden kann. <b>yaml<\/b> F\u00fcgen wir noch einen Dienst hinzu<\/p>\n<p>payment <b>und erschweren wir gleichzeitig den bestehenden.<\/b> eureka:\n instance.preferIpAddress: true\n client:\n   serviceUrl:\n     defaultZone: http:\/\/192.89.89.111:6782\/eureka\/\nserver.port: 9999\nspring.application.name: order\ndb.url: 192.168.0.100<br \/>\nIm <b>order<\/b>:<\/p>\n<pre><code class=\"plaintext\">eureka:\n instance.preferIpAddress: true\n client:\n   serviceUrl:\n     defaultZone: http:\/\/192.89.89.111:6782\/eureka\/\nserver.port: 9998\nspring.application.name: payments\ndb.url: 192.168.0.100<\/code><\/pre>\n<p>\nIm <b>und erschweren wir gleichzeitig den bestehenden.<\/b>:<\/p>\n<pre><code class=\"plaintext\">Das Hauptproblem dieser Konfigurationen ist das Vorhandensein von viel Copy-Paste in den Diensteinstellungen. Schauen wir uns an, wie das Framework hilft, dies zu vermeiden. Beginnen wir mit dem offensichtlichsten \u2014 der Pr\u00e4senz der Konfiguration<\/code><\/pre>\n<p>\neureka <b>in der Beschreibung jedes Mikrodienstes. Erstellen wir ein neues Verzeichnis mit einer Einstellungsdatei und f\u00fcgen wir dort die neue Konfiguration hinzu:<\/b> Und in jedes unserer Projekte f\u00fcgen wir jetzt die Zeile hinzu<\/p>\n<p><img decoding=\"async\" alt=\"Einfache Verwaltung von Mikrodienstkonfigurationen mit microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/8b7467a3bd5b22cac5b44c0681ac17fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Framework wird automatisch die eureka-Konfiguration finden und in die Konfigurationsdateien der Dienste kopieren, wobei die separate eureka-Konfiguration nicht erstellt wird, da wir sie nicht in der Umgebungsdatei angeben <i>#include eureka<\/i>.<\/p>\n<p>. Der Dienst <b>dev.yaml<\/b>Au\u00dferdem k\u00f6nnen wir die Datenbankkonfiguration in eine separate Konfiguration auslagern, indem wir die Importzeile auf <b>order<\/b>:<\/p>\n<pre><code class=\"1c\">#include eureka\nserver.port: 9999\nspring.application.name: order\ndb.url: 192.168.0.100<\/code><\/pre>\n<p>\nEs ist erw\u00e4hnenswert, dass das Framework bei jeder \u00c4nderung w\u00e4hrend der Neuerstellung der Konfigurationsdateien diese verfolgt und in eine spezielle Datei neben der Hauptkonfigurationsdatei speichert. Der Logeintrag sieht so aus: \u201e1 Property-\u00c4nderungen gespeichert in <i>#include eureka, oracle<\/i>.<\/p>\n<p>order\/diff-application.yaml <b>\u201c. Dies erm\u00f6glicht es, \u00c4nderungen in gro\u00dfen Konfigurationsdateien schnell zu erkennen.<\/b>Die Auslagerung gemeinsamer Teile der Konfiguration hilft, viel unn\u00f6tigen Copy-Paste zu vermeiden, erlaubt jedoch nicht, flexibel Konfigurationen f\u00fcr verschiedene Umgebungen zu erstellen \u2014 die Endpunkte unserer Dienste sind fest und hart kodiert, das ist schlecht. Lassen Sie uns versuchen, das zu beseitigen.<\/p>\n<p>Eine gute L\u00f6sung w\u00e4re es, alle Endpunkte in einer einzigen Konfiguration zu halten, auf die die anderen verweisen k\u00f6nnten. Zu diesem Zweck hat das Framework die Unterst\u00fctzung von Platzhaltern integriert. So wird sich die Konfigurationsdatei \u00e4ndern<\/p>\n<p>Eine gute L\u00f6sung w\u00e4re, alle Endpunkte in einer einzigen Konfiguration zu halten, auf die sich die anderen beziehen k\u00f6nnten. Dazu wurde Unterst\u00fctzung f\u00fcr Platzhalter in das Framework integriert. So wird sich die Konfigurationsdatei \u00e4ndern. <b>in der Beschreibung jedes Mikrodienstes. Erstellen wir ein neues Verzeichnis mit einer Einstellungsdatei und f\u00fcgen wir dort die neue Konfiguration hinzu:<\/b>:<\/p>\n<pre><code class=\"plaintext\"> client:\n   serviceUrl:\n     defaultZone: http:\/\/${endpoints@eurekaip}:6782\/eureka\/<\/code><\/pre>\n<p>\nSchauen wir uns nun an, wie dieser Platzhalter funktioniert. Das System findet die Komponente mit dem Namen <b>endpoints<\/b> und sucht darin den Wert <b>eurekaip<\/b>, daraufhin wird dieser in unsere Konfiguration eingesetzt. Aber was ist mit unterschiedlichen Umgebungen? Daf\u00fcr erstellen wir eine Konfigurationsdatei in <b>endpoints<\/b> folgender Art <b>application.dev.yaml<\/b>. Das Framework entscheidet selbst anhand der Dateierweiterung, zu welcher Umgebung diese Konfiguration geh\u00f6rt, und l\u00e4dt sie:<\/p>\n<p><img decoding=\"async\" alt=\"Einfache Verwaltung von Mikrodienstkonfigurationen mit microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/c46cf097a0efb1d578a126858077a76b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer Inhalt der dev-Datei:<\/p>\n<pre><code class=\"plaintext\">eurekaip: 192.89.89.111\ndbip: 192.168.0.100<\/code><\/pre>\n<p>\nEine \u00e4hnliche Konfiguration k\u00f6nnen wir auch f\u00fcr die Ports unserer Dienste erstellen:<\/p>\n<pre><code class=\"plaintext\">server.port: ${ports@order}.<\/code><\/pre>\n<p>\nAlle wichtigen Einstellungen befinden sich an einem Ort, wodurch die Wahrscheinlichkeit von Fehlern durch verstreute Parameter in den Konfigurationsdateien verringert wird.<\/p>\n<p>Das Framework stellt zahlreiche bereits fertige Platzhalter zur Verf\u00fcgung, zum Beispiel kann man den Namen des Verzeichnisses abrufen, in dem sich die Konfigurationsdatei befindet, und ihn zuweisen:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}\nspring.application.name: ${this@name}<\/code><\/pre>\n<p>\nDank dessen muss der Name der Anwendung nicht zus\u00e4tzlich in der Konfiguration angegeben werden und kann ebenfalls in ein gemeinsames Modul ausgelagert werden, zum Beispiel in dasselbe eureka:<\/p>\n<pre><code class=\"plaintext\">client:\n   serviceUrl:\n     defaultZone: http:\/\/${endpoints@eurekaip}:6782\/eureka\/\n spring.application.name: ${this@name}<\/code><\/pre>\n<p>\nDie Konfigurationsdatei <b>order<\/b> wird auf eine Zeile verk\u00fcrzt:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nFalls eine Einstellung aus der \u00fcbergeordneten Konfiguration nicht ben\u00f6tigt wird, k\u00f6nnen wir sie in unserer Konfiguration angeben, und genau diese wird bei der Generierung angewendet. Das hei\u00dft, wenn wir aus irgendeinem Grund einen eindeutigen Namen f\u00fcr den Dienst order ben\u00f6tigen, lassen wir einfach den Parameter <b>spring.application.name<\/b>.<\/p>\n<p>Wir nehmen an, dass in den Dienst angepasste Logginstellungen hinzugef\u00fcgt werden m\u00fcssen, die in einer separaten Datei gespeichert sind, zum Beispiel <b>logback.xml<\/b>. Erstellen wir eine separate Gruppe von Einstellungen daf\u00fcr:<\/p>\n<p><img decoding=\"async\" alt=\"Einfache Verwaltung von Mikrodienstkonfigurationen mit microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/103a58dab32ebc57ea1d8457b6bcf3d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn der Basis-Konfiguration geben wir dem Framework an, wo die ben\u00f6tigte Logdatei mit Hilfe des Platzhalters <b>@ConfigDir<\/b>:<\/p>\n<pre><code class=\"plaintext\">microconfig.template.logback.fromFile: ${logback@configDir}\/logback.xml<\/code><\/pre>\n<p>\nIn der Datei <b>logback.xml<\/b> Wir konfigurieren Standard-Appender, die ebenfalls Platzhalter enthalten k\u00f6nnen, die das Framework w\u00e4hrend der Generierung der Konfigurationen \u00e4ndert, zum Beispiel:<\/p>\n<pre><code class=\"1c\">logs\/${this@name}.log<\/code><\/pre>\n<p>\nIndem wir in den Konfigurationen der Dienste den Import <b>logback<\/b>, erhalten wir automatisch konfiguriertes Logging f\u00fcr jeden Dienst:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle, logback\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nEs ist an der Zeit, sich ausf\u00fchrlicher mit allen verf\u00fcgbaren Platzhaltern des Frameworks vertraut zu machen:<\/p>\n<p><b>${this@env}<\/b> \u2014 gibt den Namen der aktuellen Umgebung zur\u00fcck.<br \/>\n<b>${&#8230;@name} <\/b> \u2014 gibt den Namen der Komponente zur\u00fcck.<br \/>\n<b>${&#8230;@configDir}<\/b> \u2014 gibt den vollst\u00e4ndigen Pfad zum Konfigurationsverzeichnis der Komponente zur\u00fcck.<br \/>\n<b>${&#8230;@resultDir}<\/b> \u2014 gibt den vollst\u00e4ndigen Pfad zum Zielverzeichnis der Komponente zur\u00fcck (die erhaltenen Dateien werden in dieses Verzeichnis gelegt).<br \/>\n<b>${this@configRoot}<\/b> \u2014 gibt den vollst\u00e4ndigen Pfad zum Wurzelverzeichnis des Konfigurationsspeichers zur\u00fcck.<\/p>\n<p>Das System erm\u00f6glicht es auch, Umgebungsvariablen abzurufen, zum Beispiel den Pfad zu java:<br \/>\n<b>${env@JAVA_HOME}<\/b><br \/>\nAu\u00dferdem, da das Framework in <b>JAVA<\/b>geschrieben ist, k\u00f6nnen wir Systemvariablen analog zum Aufruf <b>System::getProperty<\/b> mit einer solchen Konstruktion abrufen:<br \/>\n<b>${system@os.name}<\/b><br \/>\nEs ist erw\u00e4hnenswert, dass die Unterst\u00fctzung der Erweiterungssprache <b>Spring EL<\/b>vorhanden ist. In der Konfiguration sind \u00e4hnliche Ausdr\u00fccke anwendbar:<\/p>\n<pre><code class=\"1c\">connection.timeoutInMs: #{5 * 60 * 1000}\ndatasource.maximum-pool-size: #{${this@datasource.minimum-pool-size} + 10} <\/code><\/pre>\n<p>\nund es k\u00f6nnen lokale Variablen in Konfigurationsdateien mit Hilfe des Ausdrucks verwendet werden. <b>#var<\/b>:<\/p>\n<pre><code class=\"1c\">#var feedRoot: ${system@user.home}\/feed\nfolder:\n root: ${this@feedRoot}\n success: ${this@feedRoot}\/archive\n error: ${this@feedRoot}\/error<\/code><\/pre>\n<p>\nAuf diese Weise stellt das Framework ein recht leistungsf\u00e4higes Werkzeug f\u00fcr die feine und flexible Anpassung von Microservice-Konfigurationen dar. Das Framework erf\u00fcllt seine Hauptaufgabe hervorragend \u2013 die Beseitigung von Copy-Paste in den Einstellungen, die Konsolidierung von Einstellungen und damit die Minimierung m\u00f6glicher Fehler, w\u00e4hrend es gleichzeitig erm\u00f6glicht, Konfigurationen einfach zu kombinieren und f\u00fcr verschiedene Umgebungen zu \u00e4ndern.<\/p>\n<p>Wenn Sie an diesem Framework interessiert sind, empfehle ich Ihnen, die offizielle Seite zu besuchen und sich \u00fcber die vollst\u00e4ndigen Informationen zu informieren, <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\">Dokumentation<\/a><\/noindex>oder in den Quellcodes zu st\u00f6bern. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/microconfig\/microconfig\">hier<\/a><\/noindex>.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/473078\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u0430\u044f \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432. \u0412 \u044d\u0442\u043e\u043c, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u043d\u043e\u0432\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a microconfig.io. \u041e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0443\u0442\u0438\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043c\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u043c\/\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0442\u043e \u0432\u0435\u043b\u0438\u043a\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":39477,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-39476","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=\"\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u0430\u044f \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432.\" \/>\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\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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\udd47\u041b\u0435\u0433\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e microconfig.io | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u0430\u044f \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io\" \/>\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:33:41+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:33:41+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\udd47Einfache Verwaltung von Microservice-Konfigurationen mit microconfig.io | ProHoster","description":"Eines der Hauptprobleme bei der Entwicklung und dem anschlie\u00dfenden Betrieb von Microservices ist die ordnungsgem\u00e4\u00dfe und pr\u00e4zise Konfiguration ihrer Instanzen.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","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\udd47\u041b\u0435\u0433\u043a\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e microconfig.io | ProHoster","og:description":"\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u0430\u044f \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u0445 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u043e\u0432.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","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:33:41+00:00","article:modified_time":"2019-10-31T19:33:41+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39476","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 02:05:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:48:28","updated":"2026-01-24 02:05:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/39476","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=39476"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/39476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/39477"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=39476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=39476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=39476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}