{"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\/nl\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","title":{"rendered":"Gemakkelijke configuratiebeheer van microservices met microconfig.io","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Een van de belangrijkste problemen bij de ontwikkeling en het latere onderhoud van microservices is de juiste en zorgvuldige configuratie van hun instanties. Dit kan, naar mijn mening, worden opgelost met behulp van een nieuw framework. <noindex><a rel=\"nofollow\" href=\"http:\/\/microconfig.io\">microconfig.io<\/a><\/noindex>. Het stelt ons in staat om enkele routinetaken van applicatieconfiguratie op een elegante manier op te lossen. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAls je veel microservices hebt, en elke service komt met zijn eigen configuratiebestand\/-bestanden, is de kans groot dat je een fout maakt in een van hen. Deze fout kan zonder de juiste ervaring en een logsysteem moeilijk te traceren zijn. De belangrijkste taak die het framework zich stelt, is het minimaliseren van de duplicerende configuratieparameters van de instantie, waardoor de kans op fouten vermindert.<\/p>\n<p>Laten we dit aan de hand van een voorbeeld bekijken. Stel, we hebben een eenvoudige applicatie met een configuratiebestand. <b>yaml<\/b>. Dit kan elke microservice in elke programmeertaal zijn. Laten we kijken hoe we het framework op deze service kunnen toepassen. <\/p>\n<p>Maar eerst, voor het gemak, laten we een leeg project aanmaken in IDEA IDE, waarbij we eerst de microconfig.io-plugin installeren: <\/p>\n<p><img decoding=\"async\" alt=\"Gemakkelijke configuratiebeheer van microservices met microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/e2809b31309a80cf6909cf554081e895.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWe configureren de plugin-opstartinstellingen; je kunt de standaardconfiguratie gebruiken, zoals op de bovenstaande schermafdruk.<\/p>\n<p>Onze service heet order, dus in het nieuwe project cre\u00ebren we een soortgelijke structuur:<\/p>\n<p><img decoding=\"async\" alt=\"Gemakkelijke configuratiebeheer van microservices met microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/a1edb8aa2e5dae3867cfff78276ebb8d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn de map met de naam van de service plaatsen we het configuratiebestand \u2014 <b>application.yaml<\/b>. Alle microservices worden uitgevoerd in een bepaalde omgeving, dus naast het maken van de configuratie voor de service, moeten we ook de omgeving zelf beschrijven: daarvoor maken we een map aan. <b>envs<\/b> en voegen we daar een bestand toe met de naam van onze werkelijke omgeving. Op deze manier zal het framework configuratiebestanden voor de diensten in de omgeving cre\u00ebren, aangezien deze parameter in de plugin-instellingen is ingesteld. <b>, maar volgt geen wijzigingen), gebruikmakend van een andere configuratie.<\/b>De structuur van het bestand<\/p>\n<p>dev.yaml <b>zal vrij eenvoudig zijn:<\/b> mainorder:\n    components:\n         - order <\/p>\n<pre><code class=\"plaintext\">Het framework werkt met configuraties die in groepen zijn samengevoegd. Voor onze service kiezen we een naam voor de groep.<\/code><\/pre>\n<p>\nmainorder <b>. Het framework vindt elke dergelijke groep applicaties in het omgevingsbestand en genereert configuraties voor al deze applicaties, die het in de overeenkomstige mappen vindt.<\/b>In het configuratiebestand van de service <\/p>\n<p>order <b>geven we voorlopig alleen \u00e9\u00e9n parameter aan:<\/b> spring.application.name: order <\/p>\n<pre><code class=\"plaintext\">Laten we nu de plugin starten, en deze zal de benodigde configuratie voor onze service genereren volgens het opgegeven pad in de eigenschappen:<\/code><\/pre>\n<p>\nJe kunt<\/p>\n<p><img decoding=\"async\" alt=\"Gemakkelijke configuratiebeheer van microservices met microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/9099990c05fd3c6ef0549f231dc84fb5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nhet eenvoudig houden. <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\/#\/?id=running-the-config-build\">afkomen<\/a><\/noindex> en zonder een plugin te installeren, gewoon door het framework distributief bestand te downloaden en het vanuit de opdrachtregel te starten.<br \/>\nDit type oplossing is geschikt voor gebruik op de buildserver.<\/p>\n<p>Het is vermeldenswaard dat het framework uitstekend begrijpt <b>property<\/b> syntax, dat wil zeggen normale property-bestanden die samen gebruikt kunnen worden in <b>yaml<\/b> configuraties.<\/p>\n<p>Laten we een andere service toevoegen <b>payment<\/b> en tegelijkertijd het bestaande ingewikkeld maken.<br \/>\nIn <b>geven we voorlopig alleen \u00e9\u00e9n parameter aan:<\/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: 9999\nspring.application.name: order\ndb.url: 192.168.0.100<\/code><\/pre>\n<p>\nIn <b>payment<\/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>\nHet belangrijkste probleem van deze configuraties is de aanwezigheid van veel copy-paste in de service-instellingen. Laten we eens kijken hoe het framework helpt om hiervan af te komen. Laten we beginnen met de meest voor de hand liggende \u2014 de aanwezigheid van configuratie <b>eureka<\/b> in de beschrijving van elke microservice. Laten we een nieuwe map maken met een configuratiebestand en daar een nieuwe configuratie aan toevoegen:<\/p>\n<p><img decoding=\"async\" alt=\"Gemakkelijke configuratiebeheer van microservices met microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/8b7467a3bd5b22cac5b44c0681ac17fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn in elk van onze projecten voegen we nu de regel toe <i>#include eureka<\/i>.<\/p>\n<p>Het framework vindt automatisch de eureka-configuratie en kopieert deze naar de configuratiebestanden van de services, terwijl er geen aparte eureka-configuratie zal worden gemaakt, omdat we deze niet in het omgevingsbestand zullen opgeven. <b>zal vrij eenvoudig zijn:<\/b>. De service <b>geven we voorlopig alleen \u00e9\u00e9n parameter aan:<\/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>\nDaarnaast kunnen we de database-instellingen in een aparte configuratie plaatsen door de importregel te wijzigen in <i>#include eureka, oracle<\/i>.<\/p>\n<p>Het moet worden opgemerkt dat het framework elke wijziging bij het regenereren van configuratiebestanden volgt en plaatst in een speciaal bestand naast het hoofdbestand van de configuratie. De notitie in zijn log ziet er als volgt uit: \u201cOpslag 1 wijziging in eigenschap naar <b>order\/diff-application.yaml<\/b>\u201d. Dit maakt het gemakkelijk om wijzigingen in grote configuratiebestanden te detecteren.<\/p>\n<p>Het verplaatsen van gemeenschappelijke configuratieonderdelen stelt ons in staat om veel onnodige copy-paste te vermijden, maar maakt het niet flexibel om configuraties voor verschillende omgevingen te cre\u00ebren - de eindpunten van onze services zijn uniek en hard gecodeerd, wat slecht is. Laten we proberen dit te verwijderen.<\/p>\n<p>Een goede oplossing zou zijn om alle eindpunten in \u00e9\u00e9n enkele configuratie te houden, waarnaar de anderen kunnen verwijzen. Hiervoor is er ondersteuning voor placeholders in het framework ingebouwd. Zo zal het configuratiebestand veranderen <b>eureka<\/b>:<\/p>\n<pre><code class=\"plaintext\"> client:\n   serviceUrl:\n     defaultZone: http:\/\/${endpoints@eurekaip}:6782\/eureka\/<\/code><\/pre>\n<p>\nLaten we nu kijken hoe deze placeholder werkt. Het systeem vindt de component met de naam <b>endpoints<\/b> en zoekt daarin de waarde <b>eurekaip<\/b>, waarna we deze in onze configuratie kunnen invoegen. Maar hoe gaan we om met verschillende omgevingen? Hiervoor cre\u00ebren we een instellingenbestand in <b>endpoints<\/b> de volgende indeling <b>application.dev.yaml<\/b>. Het framework beslist zelf, op basis van de bestandsextensie, tot welke omgeving deze configuratie behoort en laadt deze:<\/p>\n<p><img decoding=\"async\" alt=\"Gemakkelijke configuratiebeheer van microservices met microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/c46cf097a0efb1d578a126858077a76b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInhoud van het dev-bestand:<\/p>\n<pre><code class=\"plaintext\">eurekaip: 192.89.89.111\ndbip: 192.168.0.100<\/code><\/pre>\n<p>\nEen vergelijkbare configuratie kunnen we ook maken voor de poorten van onze diensten:<\/p>\n<pre><code class=\"plaintext\">server.port: ${ports@order}.<\/code><\/pre>\n<p>\nAlle belangrijke instellingen bevinden zich op \u00e9\u00e9n plek, waardoor de kans op fouten door verspreide parameters over configuratiebestanden vermindert.<\/p>\n<p>Het framework biedt veel vooraf gedefinieerde placeholders, bijvoorbeeld, we kunnen de naam van de directory waar het configuratiebestand zich bevindt verkrijgen en deze toewijzen:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}\nspring.application.name: ${this@name}<\/code><\/pre>\n<p>\nHierdoor hoeft de naam van de applicatie niet apart in de configuratie te worden vermeld en kan deze ook in een gemeenschappelijk module worden geplaatst, bijvoorbeeld in dezelfde 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>\nConfiguratiebestand <b>geven we voorlopig alleen \u00e9\u00e9n parameter aan:<\/b> wordt ingekort tot \u00e9\u00e9n regel:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nAls een instelling uit de bovenliggende configuratie niet nodig is, kunnen we deze in onze configuratie opgeven en zal deze worden toegepast tijdens de generatie. Dus als we om wat voor reden dan ook een unieke naam voor de service order nodig hebben, laten we gewoon de parameter <b>spring.application.name<\/b>.<\/p>\n<p>Stel, we moeten gepersonaliseerde logginginstellingen toevoegen die in een apart bestand worden bewaard, bijvoorbeeld, <b>logback.xml<\/b>. Laten we hiervoor een aparte groep instellingen maken:<\/p>\n<p><img decoding=\"async\" alt=\"Gemakkelijke configuratiebeheer van microservices met microconfig.io\" src=\"\/wp-content\/uploads\/2019\/10\/103a58dab32ebc57ea1d8457b6bcf3d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn de basisconfiguratie geven we het framework aan waar het het benodigde logginginstellingenbestand moet plaatsen met behulp van de placeholder <b>@ConfigDir<\/b>:<\/p>\n<pre><code class=\"plaintext\">microconfig.template.logback.fromFile: ${logback@configDir}\/logback.xml<\/code><\/pre>\n<p>\nIn het bestand <b>logback.xml<\/b> we configureren de standaard appenders, die ook placeholders kunnen bevatten die het framework tijdens de generatie van configuraties zal aanpassen, bijvoorbeeld:<\/p>\n<pre><code class=\"1c\">logs\/${this@name}.log<\/code><\/pre>\n<p>\nDoor in de configuraties van diensten import <b>logback<\/b>, krijgen we automatisch geconfigureerde logging voor elke dienst:<\/p>\n<pre><code class=\"1c\">#include eureka, oracle, logback\nserver.port: ${ports@order}<\/code><\/pre>\n<p>\nHet is tijd om meer gedetailleerd kennis te maken met alle beschikbare placeholders van het framework:<\/p>\n<p><b>${this@env}<\/b> \u2014 retourneert de naam van de huidige omgeving.<br \/>\n<b>${&#8230;@name} <\/b> \u2014 retourneert de naam van de component.<br \/>\n<b>${&#8230;@configDir}<\/b> \u2014 retourneert het volledige pad naar de config directory van de component.<br \/>\n<b>${&#8230;@resultDir}<\/b> \u2014 retourneert het volledige pad naar de doeldirectory van de component (de verkregen bestanden worden in deze directory geplaatst).<br \/>\n<b>${this@configRoot}<\/b> \u2014 retourneert het volledige pad naar de hoofdmap van de configuratieopslag.<\/p>\n<p>Daarnaast stelt het systeem je in staat om omgevingsvariabelen te verkrijgen, zoals het pad naar java:<br \/>\n<b>${env@JAVA_HOME}<\/b><br \/>\nOf, omdat het framework is geschreven in <b>JAVA<\/b>, kunnen we systeemvariabelen verkrijgen, vergelijkbaar met de oproep <b>System::getProperty<\/b> met behulp van een constructie van dit type:<br \/>\n<b>${system@os.name}<\/b><br \/>\nHet is vermeldenswaard dat er ondersteuning is voor de extensietaal <b>Spring EL<\/b>. In de configuratie zijn dergelijke uitdrukkingen toepasbaar:<\/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>\nen lokale variabelen kunnen in configuratiebestanden worden gebruikt met behulp van de uitdrukking <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>\nDus, het framework is een behoorlijk krachtig hulpmiddel voor de fijne en flexibele configuratie van microservices. Het framework vervult perfect zijn belangrijkste taak \u2014 het elimineren van copy-paste in instellingen, het consolideren van instellingen en daardoor het tot een minimum beperken van mogelijke fouten, terwijl het eenvoudig mogelijk is om configuraties te combineren en voor verschillende omgevingen te wijzigen.<\/p>\n<p>Als je ge\u00efnteresseerd bent in dit framework, raad ik aan om de offici\u00eble pagina te bezoeken en de volledige <noindex><a rel=\"nofollow\" href=\"https:\/\/microconfig.io\">de documentatie<\/a><\/noindex>, of om in de bronbestanden te duiken <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/microconfig\/microconfig\">here<\/a><\/noindex>.<br \/>\n<br \/>Bron: <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.3 - 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\/nl\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\udd47 Eenvoudig beheer van microservice-configuraties met behulp van microconfig.io | ProHoster","description":"Een van de belangrijkste problemen bij de ontwikkeling en verdere exploitatie van microservices is het correct en nauwkeurig instellen van hun instanties.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/legkoe-upravlenie-konfiguratsiyami-mikroservisov-s-pomoshhyu-microconfig-io","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/39476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=39476"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/39476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/39477"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=39476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=39476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=39476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}