Zum Hauptinhalt springen

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

Cloud Service Model Responsibility

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

DevOps und Containerisierung

Software Development Cycle

Problematiken

  • viele verschiedene Stellen
  • jeder Computer ist anders
  • Wiederverwendbarkeit
  • Skalierbarkeit

Lösungsvarianten

  1. VMs
    • jeder Entwickler entwickelt in VM, welche auf Environments läuft
    • Nachteile
      • sehr langsam
      • ressourcenintensiv
  2. 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