Cloud Computing
Begriff
- Bereitstellung von Computingdiensten über das Internet
- Computingdienste
- Compute
- Netzwerk
- Speicher
- Analyse
Hyperscaler
- Cloud-Service-Provider für
- Rechenleistung
- Speicher
- Security
- …
- hochskalierbar
- mehrere hundert Datenzentren
- weltweit
- Beispiele
- Amazon Web Services (aws)
- Google Cloud
- Microsoft Azure
- Alibaba Cloud
- IBM Cloud
Betriebskonzepte
Cloudarten
Public Cloud
- externer Hosting-Anbieter
- bietet Services mehreren Organisationen an
- sicherer Zugriff (meist) über öffentliches Internet
Private Cloud
- Erstellen eigener Cloudumgebung im eigenen Rechenzentrum
- Unternehmen ist zuständig für bereitgestellte Dienste und Hardware
- Beispiel für Open-Source-Software
- Apache CloudStack
Hybride Cloud
- Kombination von öffentlicher und privater Cloud
Compute-Dienste
- Virtual Machines
- Container-Groups und -Instances
- Serverless Computing
- Storage
- Networking
Clouddienstmodelle
IaaS - Infrastructure-as-a-Service
- flexibelster Clouddienst
- Benutzer
- mieten Hardware (VMs, Netwzerke usw.)
- konfigurieren den Rest (Webserver, Datenbank usw.)
PaaS - Platform-as-a-Service
- Fokus auf Anwendungsentwicklung
- Cloudanbieter
- Plattformmanagement
- Benutzer
- liefert nur Software-App
- Beispiel: Installation von HTML, CSS und JavaScript auf fertigen Webservern
SaaS - Software-as-a-Service
- Preismodell für nutzungsbasierte Bezahlung
- Benutzer
- zahlen für fertige Software (meistens) im Rahmen eines Abonnementmodells
- Beispiele: Discord, ChatGPT, Microsoft Office 356
FaaS - Function-as-a-Service
- Steuerung von Anwendungslogiken aufgrund bestimmter Ereignisse
- serverloses Computing
- Abstrahierung von Server, Infrastruktur und Betriebssysteme
- Azure übernimmt Verwaltung der Serverinfrastruktur und Zuteilung/Aufhebung der Zuteilung von Ressourcen entsprechend Bedarf
- Implementierungen in Azure: Azure Functions und Azure Logic Apps
Shared Responsibility in Azure

Projektarchitektur
- Aufteilung von Applikationen in Teilsysteme für bessere
- Übersichtlichkeit
- Wartbarkeit
- Erweiterbarkeit / Wiederverwendbarkeit
- Zertrennung auf verschiedenen Ebenen
- Funktionen
- Klassen
- Module
- Teilsysteme
- Layers / Tiers
- Unterteilungen von Applikationen
- Gruppierungen
- 1-Tier
- Client-App: Darstellung, Business-Logik, Daten
- 2-Tier
- Client-App: Darstellung, Business-Logik
- Datenbank: Daten
- 3-Tier
- Client-App: Darstellung
- Middleware: Business-Logik
- Datenbank: Daten
- n-Tier
- Aufteilung der Applikation in jede/viele einzelne Funktion
- Beispiel: Netflix
- 1-Tier
DevOps und Containerisierung
Software Development Cycle

Problematiken
- viele verschiedene Stellen
- jeder Computer ist anders
- Wiederverwendbarkeit
- Skalierbarkeit
Lösungsvarianten
- VMs
- jeder Entwickler entwickelt in VM, welche auf Environments läuft
- Nachteile
- sehr langsam
- ressourcenintensiv
- Container
- jeder Entwickler entwickelt in seinen Containern, welche auf Environments läuft
- Nachteile
- keine GUI-Applikation
Containerisierung
Container
- isolierte Prozessgruppe
- sehen nur bestimmte Resourcen
- benutzen direkt Betriebssystem, um Commands auszuführen
Container-Images
- Bauleitungen für Container
- schichtartig aufgebaut
- mit eigenen Schichten erweiterbar
Container-Registries
- beinhalten Images
- Beispiel: Docker hub, private Registries in Azure
Docker
- beliebteste Container Engine
- lädt Images
- erstellt, startet, stoppt Container
- isoliert Container
- Netzwerke
- Bind-Mounts (Ordner)
Docker Compose
- zum Orchestrieren von Container
- Vorstufe zu z.B. Kubernetes
Infrastructure as Code
- Konfiguration und Verwaltung der Infrastruktur via Beschreibungsmodell/Code
- sehr wichtig in DevOps
- Arten: Globales IaC und App-IaC
Frameworks
- Azure Bicep
- Bicep
- nur für Azure Cloud
- Zustandsverwaltung der Infrastruktur in Azure
- Terraform
- multi-Cloud fähig
- Infrastruktur-Zustands-Verwaltung und -Speicherung in Datei (Konfliktpotential)
Serverless
- nur Bezahlung, wenn Code ausgeführt wird
- Clouddienstleister ist für Ressourcen-Bereitstellung und Skalierung verantwortlich
- Kunde bestimmt Code, welcher ausgeführt werden soll
Serverless vs PaaS
- Nachteile PaaS
- mehr Konfiguration
- Skalierung muss konfiguriert werden
- Applikation läuft konstant (mehr Kosten, wenn selten verwendet)
- Gemeinsamkeiten
- Entwickler schreiben nur Code
- Server muss nicht verwaltet werden
Function as a Service FaaS
- einzelne Funktion mit genau einer Aufgabe
- automatische Skalierung bei grosser Auslastung
- ideal für Microservice Architektur
- Beispiele
- Prozessautomatisierung
- IoE - Internet of Everything
- Machine Learning
- Auslöser
- HTTP-Endpoint
- Zeitsteuerung
- Event
Static Web Hosting
- Hosting von statischen Assets einer Webseite
- HTML
- CSS
- JavaScript
- Bereitstellung eines SSL Zertifikates
- nicht für Server-seitigen Code (z. B. PHP, Java)
- Server liefert auf Anfrage nur Dateien