/HSR_distributedsystems_24

HSR_distributedsystems_24

Primary LanguageJavaMIT LicenseMIT

Intro: Verteilte Systeme und Cloud Computing - 11.03.24

Was sind verteilte Systeme?

image

  • Anwendung läuft "verteilt" auf verschiedenen Systemen
  • Uniformer Zugriff

image

  • Vorteil: Last verteilt sich auf allen Replicas

Problem bei "traditionellen" Verteilten System im eigenen Datacenter

  • Aufstocken der Resourcen bei steigender Last kostspielig
  • Resourcen müssen dauerhaft gewartet werden, auch bei fallender Last
  • Resourcen werden nicht optimal utilisiert.

image

Review Questions:

  • Was ist eine der großen Herausforderung für polyglote verteilte Systeme und welche Technologie macht dies erst sehr simpel umsetzbar?
    • Wie realisiert man Kommunikation zwischen Services und welche HErausforderungen gibt es? Welche Konzepte gibt es um diese Herausforderungen anzugehen?
    • Weitere Probleme? welche konzepte und technologien gibt es hierfür?
  • Sind distributed Systems und cloud computing das gleiche?
  • Iaas; Paas; Saas? Erklären und beispiele geben.
  • Typische Probleme in der traditionellen IT? Motivation für verteilte Systeme?

Introduction to Springboot - 18.03.24

Aufgabe 1

  • Einen Fork des Repositories erstellen
  • Codespace öffnen
  • Mittels sdk install java 17.0.0-tem Java 17 installieren
  • Mit java -version validieren, dass Java 17 installiert ist
  • Projekt über VS Code ausführen
  • @RestController implementieren mit @GetMapping("hello") der "Hello World"! zurück gibt

Review Questions:

  • Warum nutzen wir Frameworks wie Springboot?
    • Welche Vorteile bieten Frameworks?
  • Microservices verstehen und erklären? Warum von Monolithischen Anwendungen hin zu Microservices?
  • Welche Herausforderungen gibt es für Microservices?
  • Welche anderen Frameworks kennt ihr? Rein als Vergleich der Funktionsweise

Containers and Dockers

Problem bei (polygloten) verteilten Systemen:

  • Jede Umgebung muss aufwendig konfiguriert werden. Sowohl Server als auch Lokale Dev Environments
  • Konfiguration muss identisch repliziert werden um Fehlerquellen durch unterschiedliche Umgebungen zu vermeiden
  • Macht polyglote Systeme sehr aufwendig da für jede Sprache die eigene Entwicklungsumgebung geschaffen werden muss.
  • Wechseln der versionen in der Entwicklung auch lästig

image

Probleme werden durch Containerisierung vermieden.

  • Zielumgebung braucht lediglich die Container Engine.
  • Container bringen mit was sie benötigen

image

Images vs Container

  • Aus dem Sourcerepo wird mittels Dockerfile ein Image (blaupause) erstellt.
  • Aus diesem Image lassen sich beliebig viele Instanzen generieren => Container
  • Images lassen sich auf Docker Hub, einem öffentlichen Image Repository ablegen.
  • Images lassen sich so von überall beziehen

image

Review Questions:

  • Welche Probleme sind die wesentliche Motivation für Container und wie werden diese gelöst?
  • DevOps Problem?
  • Was ist die grundlegende Funktionsweise eines Containers?
  • Wie containirisiere ich eine Applikation?
  • Was ist ein Image und was ein Container?
  • Was ist DockerHub?
  • Muss für jeden einzelnen container die umgebung einzeln installiert werden ?
  • Läuft der container mit rechenpower des Lokalen pc oder auf einem server?
  • Images vs VMs? Was sind wesentliche unterschiede?

Docker Advanced

Volumes

Mechanismus um Persistenz bei (generell eher kurzlebigen) Containern zu realisieren.

Networks

Mechanismus um Kommunikation über die Isolierung der Container hinaus zu realisieren image

Docker Compose

Definition und einfache Erstellung einer Container "Landschaft"

Review Questions

  • Wie funktioniert persistenz bei Docker per default (ohne volumes)?

  • Was sind Volumes und bei welchen Problem helfen Sie?

  • Was passiert wenn ein Container mit einem Volume abstürzt und neu gestartet wird? was muss man beachten?

  • Wofür dienen Networks?

  • Was sind Nachteile der Docker Networks?

  • Was ist Docker Compose und wofür dient es?

  • Anhand eines Beispiel-Docker-Compose-files:

    • Erkläre was entsteht wenn das docker compose ausgeführt wird.
    • Wie sähe im Vergleich der "klassische" Weg ohne Docker Compose aus
  • Was ist wichtig zu beachten bei der Image Referenz? Welceh Alternative gäbe es?


Rest

Schnittstellendefinition um die Kommunikation mit Services übers Netzwerk zu "vereinheitlichen".

  • Was ist eine REST schnittstelle?
  • Was sind die Vorteile?
  • Was ist das Richardson Maturity Model?

Resilience

Patterns um ein verteiltes system abzuhärten.

  • Patterns benennen.
  • Szenario skizzieren um typische Probleme in einer cloud native application landscape aufzuzeigen.
  • Resilience Patterns um Szenario zu lösen

Kubernetes

Kubernetes Topics:

  • Kubernetes Cluster
  • The Contol Plane
  • Worker Nodes
  • Pods
  • Deployments
  • Services
  • Desired State Management

Ein zusammengehöriges System über mehrere Docker Hosts zu umspannen ist nicht so elegant wie wir es uns vorstellen image

Kubernets maskiert die zugrunde liegende hardware und fungiert als ein zusammengehöriges System: image

image

Übungen

Übungen zu Kubernetes befinden sich auf der Novatec Lecture Website Um die Übungen auszuführen lässt sich der Codespace nutzen. Hier ist bereits eine Minikube Installation vorhanden. Diese einfach über

minikube start

starten und anschließen lassen sich kubectl befehle ausführen.

Review Questions

  • Was sind die grundlegenden Prinzipen und Charakteristika von Kubernetes?
  • Was ist der Kubernetes Cluster? was sind dessen Komponenten?
  • Wo wäre ein Multi-Cluster setup sinnvoll?
  • Wie stellt Kubernetes sicher dass meine Applikationen so laufen wie sie sollen?
  • Wie definiere ich meine Applikationen damit sie in Kubernetes laufen? wie sieht der gesamte Prozess vom fertigstellen der Entwicklung bis zur lauffähigen Anwendung auf K8s aus?
  • Was sind die unterschiedlichen K8s objekte?
  • Weshalb nutzen wir in k8s pods statt direkt mit containern zu arbeiten?
  • Wehalb bevorzugen wir das arbeiten mit Deployments statt direkt mit pods?
  • Was passiert wenn ein Knoten ausfällt; wie sieht der recovery Prozess aus?

12 Factor Apps

Zusammenfassung der grundlegenden Design Prinzipien bei der Entwicklung von Cloud nativen Anwendungen.

Was sind Staging Konzepte?

image

Review Questions

  • Was sind 12 Faktor Apps
  • Einzelne Faktoren und deren Vorteile erklären ( nicht notwendigerweise Wort für Wort sondern eher die Grundidee dahinter )