Die Architektur einer von Anfang an für die Cloud entwickelten Anwendung zeichnet sich durch hohe Flexibilität, Resilienz und Wartungsfreundlichkeit aus. Die Software ist in einzelne Services aufgeteilt, was deren parallele Entwicklung in unterschiedlichen Teams ermöglicht. Die Aufgaben für das Deployment und die Überwachung dieser Services müssen automatisiert sein, um alle Vorteile einer Cloud nutzbar zu machen. Der Betrieb bekommt diese nach Fertigstellung in einem Standardformat bereitgestellt, etwa als Docker-Image. Dadurch kann er sie ohne weitere Komplikationen in Produktion bringen.
Der grundlegende Standard für den professionellen Betrieb von Cloud-basierter Software ist Kubernetes beziehungsweise davon abgeleitete kommerzielle Derivate, etwa OpenShift. Kubernetes versetzt den IT-Betrieb in die Lage, Services ohne Downtime in Betrieb zu nehmen, Lastspitzen durch automatische Skalierung abzufedern und die einzelnen Services kontinuierlich zu monitoren.
Weitere wichtige Bestandteile der Cloud-basierten Softwareentwicklung sind
- Swagger: Werkzeugsammlung zur Definition, Validierung und Dokumentation von Schnittstellen (APIs), insbesondere RESTful-APIs
- DevOps: Prozess zur weitgehenden Automatisierung der Entwicklung, Bereitstellung und Wartung von Anwendungen unter gleichzeitiger Anpassung der Kollaborationskultur zwischen allen an Umsetzung und Betrieb beteiligten Parteien Fachlichkeit und IT
- Continuous Integration und Continuous Delivery (CI/CD): automatisierte Test- und Deployment-Prozesse machen schnelle und effiziente Änderungen an Anwendungen möglich
- Testautomatisierung: stellt die Qualität der Anwendung sicher und muss möglichst nahtlos in den Entwicklungsprozess integriert sein
- Infrastructure as Code (IaC): beschreibt Infrastruktur als Code und sichert so deren Konsistenz sowie die Wiederholbarkeit von Deployments; dadurch kann aus mehreren Services auf Knopfdruck eine Applikation aufgesetzt werden