Die Zeit der Monolithen geht zu Ende. Lange war es üblich, dass Software in einer einzigen Anwendung viele Funktionen zur Verfügung stellte. Das machte die Skalierung kompliziert und jede Wartung wurde zu einem regelrechten Großereignis.
Mittlerweile bieten Microservices als Apps in der Cloud viel einfachere Erweiter- und Skalierbarkeit. Microservices sind Anwendungen, die jeweils eine eigene Code-Basis haben. Sie werden um bestimmte Funktionalitäten gebaut und können – das ist ein großer Vorteil – unabhängig voneinander bereitgestellt werden. Für eine Detailänderung reicht es dann, die entsprechende App zu ändern.
„Mit Microservices können wir Anwendungen modularisieren und hochkomplexe Software in kleine, gut handhabbare Dienste zerlegen“, erklärt Christoph Wellner. Der Lead Consultant und sein Team konzipieren und entwickeln komplexe Softwarelösungen für Kunden, die sich für Cloud-native Apps interessieren.
„Die Gesamtfunktion bleibt mit Microservices erhalten, kann aber schnell und nahtlos um neue Funktionen erweitert werden“, weiß Wellner. So wächst eine Anwendung über kleine wöchentliche oder sogar tägliche Updates einfach weiter.
In der Cloud können Unternehmen das Kostenmodell perfekt auf ihre Bedürfnisse zuschneiden, es gibt also keine brachliegenden Ressourcen.“
Christoph Wellner, Lead Consultant
Weg von der Hardware
„Wenn wir solche Microservices in der Cloud betreiben, erhalten wir weitere Vorteile“, erklärt Wellner: „Mit Cloud Computing können wir ganz nach Bedarf auf einen geteilten Pool von konfigurierbaren Ressourcen zuzugreifen und das jederzeit und von überall.“ Serviceanbieter stellen dafür die passende Infrastruktur mit minimalem Managementaufwand zur Verfügung.
Dadurch sparen Unternehmen die Kosten für „das Blech“, wie Wellner es nennt. Sie müssen also keine eigene Hardware anschaffen, betreiben oder warten. Stattdessen können sie in der Cloud ein Kostenmodell perfekt auf ihre Bedürfnisse zuschneiden, es gibt also keine brachliegenden Ressourcen, weil man vielleicht Hardware angeschafft hat, die dann selten oder nie gebraucht wird.
Kommt es in Spitzenzeiten zu einer erhöhten Last, können schnell zusätzliche Ressourcen bereitgestellt werden – ohne auf Lieferzeiten angewiesen zu sein. Wenn sich die Last wieder normalisiert hat, können die Ressourcen einfach wieder zurückgegeben werden, so dass dafür keine weiteren Kosten anfallen.
Dabei garantiert der Cloud-Betreiber jederzeit die Ausfallsicherheit der von ihm zur Verfügung gestellten Komponenten, kümmert sich um Updates und weitere Wartungsarbeiten. Dazu kommt der Vorteil der geografischen Verteilung: Cloud-Anbieter betreiben ihre Rechenzentren weltweit, dadurch können die Services, die man nutzt, nah am Verwender sein. So vermeidet man Netzwerklatenz.
Modellierung im Zentrum
Das Thema Cloud-native Apps gewinnt zunehmend an Relevanz, das zeigen auch die Ergebnisse der Studie „Cloud Native 2020“: 63 Prozent der befragten Unternehmen setzen bereits Cloud-native Apps ein, davon allerdings 40 erst seit kurzem. Zweidrittel der Befragten rechnen damit, dass Cloud Native in den kommenden Jahren eine hohe oder sehr hohe Bedeutung für Unternehmen haben wird.
Bei der Entwicklung von Apps für die Cloud ist das sogenannte Domain-driven Design (DDD) die Herangehensweise der Wahl. DDD ist eine Sammlung von Methoden, die die Bedeutung der Domäne und deren Modellierung ins Zentrum der Architekturarbeiten stellt.
Die Domäne ist das Anwendungsgebiet beziehungsweise der Einsatzbereich der Software. Expertise und Kenntnisse für den Einsatzbereich liegen bei den Mitarbeitenden in diesem Bereich, nicht bei den Softwareentwicklern. Die Fachlichkeit und die Fachlogik für die Entwicklung steuern also in der Regel Menschen ohne Kenntnisse in der Softwareentwicklung bei. Als Abbildung des Einsatzbereichs entsteht dann ein Domänenmodell als Grundlage für die Entwicklung. Bei DDD geht man davon aus, dass der größte Teil der Komplexität einer Software nicht in der technischen Umsetzung liegt, sondern in dieser Modellierung der Domäne.
Alles „as a Service“
Für den Entwickler liegt der Hauptfokus bei DDD darauf, die Fachlichkeit des Einsatzbereichs zu verstehen und eine gemeinsame Sprache zu erstellen. Mit dieser „ubiquitären Sprache“ können sich dann „Fachler“ und Entwickler so austauschen, dass es weniger zu Missverständnissen kommt.
Für die fertige Anwendung können dann Cloud-Plattformen eine zuverlässige, skalierbare Infrastruktur zur Verfügung stellen (Infrastructure as a Service, IaaS). Darüber hinaus bieten Cloud-Unternehmen wie Amazon, Microsoft oder Google vorkonfigurierte Umgebungen an, die das Entwickeln, Ausführen und Verwalten von Anwendungen flexibel und recht komfortabel unterstützen. Systeme wie Kubernetes zur automatisierten Bereitstellung, Skalierung und Verwaltung von eigenständigen Containern-Anwendungen hat mittlerweile jeder große Cloudbetreiber genauso wie Build Pipelines, die scriptgesteuert den Quellcode von Anwendungen testen und dann ausspielen (Platform as a Service, PaaS).
Zahlreiche Anwendungen gibt es mittlerweile auch als Online-Dienst (Software as a Service, Saas), zum Beispiel CRM-Systeme oder – das kennen sicher die meisten – Office-Anwendungen wie Microsoft Office 365. Mit dem Umstieg in die Cloud können Unternehmen also nicht nur „das Blech“ loswerden, sie gewinnen darüber hinaus Flexibilität – und sparen Kosten.