Lesezeit: 2 Minuten
Teil 4: Eigenschaften einer Cloud-native Architektur
Brave New World
“Innovation is the only insurance against irrelevance” - Gary Hamel
Cloud-Technologien liefern Softwarearchitekten neue Möglichkeiten, Dinge zu tun, die mit bisherigen Mitteln in den eigenen Rechenzentren häufig nicht mit vertretbaren Aufwänden (Dauer, Kosten) umsetzbar bzw. mit zusätzlichen Risiken verbunden waren (z.B. fehlende Erfahrung im Betrieb von kritischer Infrastruktur, NoSQL Datenbanken, usw.).
Zu den neuen Möglichkeiten zählen folgende Aspekte:
- Self-Healing bei Störungen und Fehlerfällen,
- automatisierte Skalierung (in beide Richtungen)
- Elastizität, um bei Lastspitzen automatisch, bedarfsgerecht reagieren zu können
- Reduzierung der Tätigkeiten im Bereich Infrastruktur für DevOps-Teams
- Autonomie und Flexibilität durch Self-Services und Automatisierungslösungen
- Transparenter und kosteneffizienter Betrieb der (geteilten) Infrastruktur
Zielsetzungen
Darüber hinaus bringen Cloud-native Architekturen eine eigene Philosophie und Arbeitsweise mit sich, die sich u.a. durch folgende Zielsetzungen beschreiben lässt:
- Arbeitserleichterung durch Nutzung von Services/Abstraktionen des Cloud-Anbieters
- Bessere Systemqualität durch hohen Automatisierungsgrad
- Überblick und kontinuierliche Überwachung der Systemlandschaft mittels Monitoring und geeigneten Alerting-Mechanismen
- Vermeidung von Flaschenhälsen (z.B. durch Einsatz stark skalierender Persistenzsysteme, Nutzung von Serverless Frameworks und Implementierung von zustandslosen Diensten)
- Behandlung von Schnittstellen/APIs als Produkte (API Lifecycle Management für HTTP/RESTful APIs aber auch für asynchrone APIs wie z.B. Kafka, AMQP, MQTT)
- Kontinuierliche Überprüfung der Sicherheit aller Komponenten und Härtungsmaßnahmen und verteiltes Verantwortungsmodell zwischen Cloud Service Provider und Nutzer
- Ausrichtung der Architektur auf Veränderung (Evolutionäre Architekturen)
Vergleichen wir unsere Ziele mit der Definition der CNCF (http://www.cncf.io) für Cloud-native Systeme:
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.