Es gibt nicht eine korrekte Liste an Anforderungen. Anforderungen sind diskutierbar und können sich über die Zeit verändern. Außerdem kann ich ein anderes Verständnis von einer ToDo Anwendung haben und somit zu anderen Anforderungen kommen.
Hier sind einige große Themen, die wir mit dem Betrieb der ToDo-Anwendung in der Cloud erfüllen wollen. Kannst du einiger deiner Anforderungen in den Themen wiederfinden?
Wir haben uns entschieden, die ToDo-Anwendung als Webapplikation zu betreiben. Also muss die Cloudumgebung eine öffentliche, statische Webseite hosten.
Du hast in der Einleitung bereits gesehen, dass die Webapplikation Interaktionen vom Nutzer (z.b. Hinzufügen von einem neuen ToDo) an eine Backend-Applikation sendet. Wir benötigen also Server in der Cloud zum Ausführen der Backendlogik, die Anfragen von der Webapplikation verarbeitet.
Die Liste mit den ToDo-Elementen soll gespeichert werden und veränderbar sein. Dafür wollen wir eine Datenbank benutzen.
Hochverfügbarkeit (high availablability) ist die Fähigkeit eines Systems trotz Ausfall von einzelnen Komponenten immer noch den Betrieb zu gewährleisten. Die wichtigen Funktionen eines Systems dürfen nur in bestimmten Zeiträumen oder nur minimal unterbrochen sein. Um ein System hochverfügbar zu machen, müssen verschiedene Designprinzipien befolgt werden:
Die Beständigkeit (durability) eines Systems ist die Wahrscheinlichkeit, dass beispielsweise du Daten aus einem Speicherservice abrufen kannst. 99.999999999% (auch bekannt als 11 Neunen) Beständigkeit besagt, dass von 10.000.000 Objekten oder Dateien, die gespeichert werden, ist zu erwarten dass nur eine Datei binnen von 10.000 Jahren wegen Problemen mit dem Speicherservice verloren gehen wird. Somit ist die Wahrscheinlich bei 11 Neuen sehr gering, sodass Services mit einer solchen Beständigkeit verlässlich sind.
Skalierbarkeit (scalability) beschreibt die Fähigkeit eines Systems sich einem höheren Workload anzupassen durch zusätzliche Hardware-Ressourcen. Dadurch ist es möglich sich an stabile Workloads anzupassen. Systeme können horizontal und vertikal skaliert werden. Horizontales skalieren bedeutet, dass extra Ressourcen zum Beispiel Server genutzt werden. Beim vertikalen Skalieren hingegen kommt beispielsweise mehr oder weniger RAM oder CPU Leistung hinzu, wodurch die Kapazität an sich erhöht wird. Insbesondere horizontales Skalieren ist wichtig für hohe Verfügbarkeit, wenn Services nur eine geringe Downtime aufweisen sollen.
Wenn ein System wachsen oder schrumpfen kann je nach Workload, dann wird diese Fähigkeit Elastizität genannt. Beispielsweise können extra Instanzen provisioniert werden in der Cloud, um den erhöhten Kundenverkehr auf einer Webseite verarbeiten zu können. Wenn solche Peak-Events vorbei sind, können die Instanzen wieder deprovisioniert werden, da der Workload nun wieder geringer und normal ist.
Im Kapitel Shared Responsibility Model der Einleitung hast du bereits kennengelernt, dass der Cloudanbieter für die Sicherheit der Cloud zuständig ist. Das Shared Responsibility Model sagt zudem, dass du als Betreiber der Anwendung für die Sicherheit der Anwendung in der Cloud zuständig bist. Cloudanbieter stellen Werkzeuge und Funktionen, wie zum Beispiel Identity and Access Management oder Verschlüsselung, bereit. Diese Werkzeuge helfen dir, die Sicherheit der Anwendung in der Cloud umzusetzen. Anforderungen helfen dir herauszufinden, welche der Werkzeuge und Funktionen du für die Sicherheit der Anwendung benötigst. Hier sind einige Fragen, die mit den Anforderungen beantwortet sein sollten:
Authentifizierung & Autorisierung
Netzwerksicherheit
Datensicherheit
Operative Sicherheit