Microservices und das Twelve-Factor Apps Prinzip
Microservices sind nicht erst seit gestern ein Trend. In den letzten Jahren entstanden und entstehen mehr und mehr modulare Anwendungen, die eher klein sind und miteinander interagieren und sich ergänzen, anstatt als ein großes monolithisches Programm zu funktionieren.
Doch Microservices sind keine problemlose und wartungsfreie Lösung, denn vor allem wenn man Dinge nicht ordentlich strukturiert und dokumentiert kann es schnell in einem absoluten Chaos enden. Um genau diesen Aufbau der Microservices selbst, den Einsatz und die Wartung kümmert sich das Twelve-Factor App Prinzip.
Die Prinzipien starten mit der Codebase, welche in einem Versionsmanagementsystem liegen soll. Weiter geht es mit Abhängigkeiten, die explizit deklariert und isoliert genutzt werden sollen. An der dritten Stelle steht die Konfiguration, welche durch Umgebungsvariablen definiert werden soll. Ebenso wie der Microservice selbst, sollen Unterstützende Dienste behandelt werden, also als unterstützende und angehängte unabhängige Ressourcen.
Beim Erstellen von Binaries sollte es in der Build, Release und Run Phase eine klare Trennung zwischen den genannten Schritten geben. Verschiedene zustandslose Prozesse sollen dynamisches Management und eine einfache Skalierbarkeit durch Nebenläufigkeit erlauben, während die verschiedenen Anwendungen selbst über geöffnete Ports kommunizieren. Dies setzt voraus das schnelle Start- / Stopp-Zyklen von Prozessen oder der gesamten Anwendung möglich sind. Getestet wird auf verschiedenen Instanzen, wobei z.B. das Staging und Production Environment möglichst identisch sein sollten, um relevante Tests zu generieren. Logs werden als Streams ausgegeben und dynamisch von den gewünschten Tools verwendet. Admins sollten ähnliche Werkzeuge und Abläufe in allen Environments nutzen, um Fehler zu vermeiden und Abläufe reproduzieren zu können.
Alles in allem kann ich die meisten Empfehlungen nachvollziehen, allerdings sollte man das geschriebene entsprechend auch nur als Empfehlungen wahrnehmen. Ich selbst denke z.B. dass Umgebungsvariablen zur Konfiguration auch diverse Probleme schaffen und das Config-Dateien in vielen Situationen sehr praktisch und besser wartbar sein können. Ich habe mir das ganze Konzept durchaus interessiert angeschaut, vieles mitgenommen und diverse Sachen setzte ich bereits ähnlich um, aber einige Dinge löse ich anders.
Wie erwähnt sollte man nicht alles als absolute Wahrheit ansehen, denn auch wenn die aufgeführten Punkte durchaus valide sind, so gibt es Ausnahmen, Dinge die sich im eigenen Kontext anders verhalten und Punkte die einfach vergessen worden. Was denkt ihr über die Twelve-Factor Apps?