© saicle/Shutterstock.com
PHP Magazin
Wie Docker und Consul Entwicklungsprozesse revolutionieren

Orchestrierte Microservices

Microservices sind Anwendungsbausteine, die jeweils für sich genommen funktionieren und entsprechend einzeln angesprochen und deployt werden können. Um die Vielzahl der Microservices orchestrieren zu können, erfreut sich das Service-Discovery-Tool „Consul“ wachsender Beliebtheit.

Jan De Cooman


Im folgenden Beitrag beschreibe ich anhand eines Praxisbeispiels, wie unter Einsatz von Consul und Docker die Entwicklungsprozesse deutlich verschlankt werden und Projekte schneller live gehen können.

Klassischer Deployment-Prozess: fehleranfällig und zeitaufwendig

Softwarereleases durchlaufen in der Regel mehrere Zyklen und Schleifen, bevor Sie „live“ gehen. Zwar ist diese klassische Vorgehensweise der sicherste Weg zur Implementierung der Software, jedoch ist der Prozess fehleranfällig und zeitaufwendig. So können beispielsweise mehrere Dienste in einer lokalen Umgebung gestartet werden, jedoch müssen die IP-Adressen geändert werden, damit sich die Services gegenseitig „sehen“ können. Mit jeder neuen Umgebung muss dieser Vorgang wiederholt und die IPs angepasst werden. Wenn dutzende miteinander verbundene Services bereitgestellt werden sollen, wird dieser Prozess unkontrollierbar und übermäßig fehleranfällig.

Bei großen Kundenprojekten von Neofonie durchläuft das Deployment in der Regel mehrere Phasen. Hierbei ist für jede Phase eine eigene Property-Datei mit dedizierten IP-Adressen definiert. Beispielsweise erfordert die Entwicklungsphase die manuelle Anbindung an eine My­SQL-Instanz auf dem Localhost. Prelive und Produktion erfordern die Anbindung der Anwendung an eine Remote-MySQL-Instanz. Dazu müssen mehrere IPs umkonfiguriert werden. So trivial das erscheinen mag, schleichen sich in solche Prozesse – wenn auch selten – Fehler ein. Infolge dessen kommt es zu Verbindungsproblemen.

Im vorliegenden Szenario verpacken wir die Anwendungen im Docker-Container [1], wodurch die Anwendungen separiert und vom Betriebssystem isoliert werden. Jedoch ist Docker nicht in der Lage, die IP-Adressen interdependenter Dienste selbstständig aufzulösen und zu aktualisieren. Aber genau das wäre nötig, wenn ein Service ausfällt oder neu gestartet wird. Unser Ziel sind Container, die bei jedem Start und im laufenden Betrieb die IPs aller abhängigen Anwendungen und Dienste automatisiert aktualisieren. Hierfür setzen wir Consul ein.

Containerdienste mit Consul als Service Registry

Die Verwendung von Consul als DNS-Server [2] in Kombination mit der Consul Service Registry bedeutet, dass wir die gesamte Sammlung von Docker-Images überall ausführen können, ohne Properties anzupassen. Die Servicetopologie wird von den darunterliegenden Maschinen entkoppelt, ganz gleich, ob Entwicklung, Test oder Produktion – das Vorgehen, wie wir Dienste anfragen, bleibt unverändert.

Alle verfügbaren...

PHP Magazin
Wie Docker und Consul Entwicklungsprozesse revolutionieren

Orchestrierte Microservices

Microservices sind Anwendungsbausteine, die jeweils für sich genommen funktionieren und entsprechend einzeln angesprochen und deployt werden können. Um die Vielzahl der Microservices orchestrieren zu können, erfreut sich das Service-Discovery-Tool „Consul“ wachsender Beliebtheit.

Jan De Cooman


Im folgenden Beitrag beschreibe ich anhand eines Praxisbeispiels, wie unter Einsatz von Consul und Docker die Entwicklungsprozesse deutlich verschlankt werden und Projekte schneller live gehen können.

Klassischer Deployment-Prozess: fehleranfällig und zeitaufwendig

Softwarereleases durchlaufen in der Regel mehrere Zyklen und Schleifen, bevor Sie „live“ gehen. Zwar ist diese klassische Vorgehensweise der sicherste Weg zur Implementierung der Software, jedoch ist der Prozess fehleranfällig und zeitaufwendig. So können beispielsweise mehrere Dienste in einer lokalen Umgebung gestartet werden, jedoch müssen die IP-Adressen geändert werden, damit sich die Services gegenseitig „sehen“ können. Mit jeder neuen Umgebung muss dieser Vorgang wiederholt und die IPs angepasst werden. Wenn dutzende miteinander verbundene Services bereitgestellt werden sollen, wird dieser Prozess unkontrollierbar und übermäßig fehleranfällig.

Bei großen Kundenprojekten von Neofonie durchläuft das Deployment in der Regel mehrere Phasen. Hierbei ist für jede Phase eine eigene Property-Datei mit dedizierten IP-Adressen definiert. Beispielsweise erfordert die Entwicklungsphase die manuelle Anbindung an eine My­SQL-Instanz auf dem Localhost. Prelive und Produktion erfordern die Anbindung der Anwendung an eine Remote-MySQL-Instanz. Dazu müssen mehrere IPs umkonfiguriert werden. So trivial das erscheinen mag, schleichen sich in solche Prozesse – wenn auch selten – Fehler ein. Infolge dessen kommt es zu Verbindungsproblemen.

Im vorliegenden Szenario verpacken wir die Anwendungen im Docker-Container [1], wodurch die Anwendungen separiert und vom Betriebssystem isoliert werden. Jedoch ist Docker nicht in der Lage, die IP-Adressen interdependenter Dienste selbstständig aufzulösen und zu aktualisieren. Aber genau das wäre nötig, wenn ein Service ausfällt oder neu gestartet wird. Unser Ziel sind Container, die bei jedem Start und im laufenden Betrieb die IPs aller abhängigen Anwendungen und Dienste automatisiert aktualisieren. Hierfür setzen wir Consul ein.

Containerdienste mit Consul als Service Registry

Die Verwendung von Consul als DNS-Server [2] in Kombination mit der Consul Service Registry bedeutet, dass wir die gesamte Sammlung von Docker-Images überall ausführen können, ohne Properties anzupassen. Die Servicetopologie wird von den darunterliegenden Maschinen entkoppelt, ganz gleich, ob Entwicklung, Test oder Produktion – das Vorgehen, wie wir Dienste anfragen, bleibt unverändert.

Alle verfügbaren...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang