Middleware - Cloud Computing - Cheatsheet
Definition und Eigenschaften von Middleware
Definition:
Middleware ist Software, die als Vermittler zwischen Anwendungsprogrammen und Betriebssystemen oder Datenbanken dient, um Kommunikation und Datenmanagement zu erleichtern.
Details:
- Ermöglicht Interoperabilität zwischen verschiedenen Systemen und Anwendungen
- Bietet Dienste wie Transaktions-Management, Messaging und Authentifizierung
- Wird oft in verteilten Systemen und Cloud-Computing-Umgebungen genutzt
- Kann in verschiedene Typen unterteilt werden: Daten-Middleware, Message-Oriented Middleware (MOM), Remote Procedure Call (RPC) Middleware, etc.
- Beispielsysteme: Apache Kafka, RabbitMQ, IBM WebSphere
Servicemodelle: IaaS, PaaS, SaaS
Definition:
Servicemodelle beschreiben unterschiedliche Bereitstellungsarten von Cloud-Diensten: IaaS (Infrastructure as a Service), PaaS (Platform as a Service), SaaS (Software as a Service).
Details:
- IaaS: Bereitstellung von grundlegenden IT-Ressourcen wie virtuelle Maschinen, Speicher und Netzwerke.
- PaaS: Bereitstellung von Hardware und Software-Tools über das Internet, um Anwendungen zu entwickeln und bereitzustellen.
- SaaS: Bereitstellung von Softwareanwendungen über das Internet, Nutzer greifen über den Browser zu.
- Beispiele: IaaS - AWS EC2, PaaS - Google App Engine, SaaS - Gmail
- Vor- und Nachteile je Modell: Skalierbarkeit, Kosten, Flexibilität etc.
Sicherheitsmechanismen und -protokolle
Definition:
Sicherheitsmechanismen und -protokolle sind Verfahren und Techniken, die die Integrität, Vertraulichkeit und Verfügbarkeit in Cloud-Computing-Umgebungen gewährleisten.
Details:
- Authentifizierung: Überprüfung der Identität von Benutzern oder Systemen mittels Techniken wie Passwort, Biometrie, oder Zwei-Faktor-Authentifizierung.
- Autorisierung: Bestimmung, welche Ressourcen und Aktionen einem authentifizierten Benutzer erlaubt sind.
- Verschlüsselung: Schutz von Daten durch Codierung, um unbefugten Zugriff zu verhindern, z.B. Nutzung von AES und RSA.
- Netzwerksicherheit: Einsatz von Firewalls, Intrusion Detection Systems (IDS) und Virtual Private Networks (VPNs) zur Absicherung der Kommunikationskanäle.
- Sicherheitsprotokolle: Standards wie TLS/SSL zur sicheren Übertragung von Daten über Netzwerke.
- Anomaly Detection: Erkennung ungewöhnlicher Aktivitäten, oft durch maschinelles Lernen unterstützt.
- Auditing: Überwachung und Protokollierung von Systemaktivitäten zur Nachverfolgung und Analyse sicherheitsrelevanter Ereignisse.
- Cloud-spezifische Mechanismen: z.B. Multi-Tenancy Isolation und Identitäts- und Zugriffsmanagement (IAM).
Enterprise Service Bus (ESB): Architektur und Komponenten
Definition:
Middleware, die die Kommunikation zwischen verschiedenen Services in einer verteilten Anwendungsarchitektur erleichtert.
Details:
- Architekturprinzipien: lose Kopplung, Skalierbarkeit, Interoperabilität.
- Zentrale Komponenten:
- Bus: Vermittlungsschicht für Nachrichten.
- Adapter: Verbindet unterschiedliche Systeme mit dem ESB.
- Service Container: Hostet und verwaltet Services.
- Orchestrierung: Koordiniert komplexe Service-Interaktionen.
- Sicherheit: Authentifizierung und Autorisierung.
- Monitoring: Überwachung und Management.
- Implementierungen: Apache Camel, MuleSoft, WSO2.
Hypervisoren und ihre Funktionsweisen
Definition:
Hypervisoren: Softwareschicht, um virtuelle Maschinen (VMs) zu erstellen und zu verwalten.
Details:
- Zwei Typen: Typ 1 (Bare-Metal) und Typ 2 (Hosted).
- Typ 1 läuft direkt auf der Hardware, Typ 2 auf einem Host-Betriebssystem.
- Ressourcenverwaltung: CPU, Speicher, I/O.
- Virtuelle Netzwerke und Speicherbereiche bereitstellen und isolieren.
- VMs unabhängig und sicher betreiben.
- Performanz und Sicherheit als Hauptkriterien.
- \textbf{Hauptaufgabe:} Effiziente und sichere Ressourcenverteilung \textit{zwischen virtuellen Maschinen}.
Container-Orchestrierung mit Kubernetes
Definition:
Verwaltung und Koordination von Containern auf mehreren Hosts zur Optimierung von Bereitstellung, Skalierung und Betrieb.
Details:
- Kubernetes, oft als K8s abgekürzt, ist ein Open-Source-System zur Automatisierung der Container-Orchestrierung.
- Komponenten:
- Master-Node: Koordination des Clusters
- Worker-Nodes: Ausführung der Container
- Wichtige Konzepte:
- Pods: Kleinste deploybare Einheit
- Services: Netzwerkzugriff für Pods
- Deployments: Verwaltung von Pod-Replikas
- Container Scheduling: Entscheidungsfindung, auf welchen Nodes Container laufen sollen.
- Self-healing: Automatische Neustrukturierung von Pods bei Ausfällen.
- Load Balancing: Verteilung der Netzwerklast auf mehrere Pods.
Erweiterte Dienste in Cloud-Umgebungen: AI/ML, Big Data, IoT
Definition:
Erweiterte Dienste in Cloud-Umgebungen bieten spezialisierte Funktionen zur Verarbeitung, Analyse und Steuerung großer Datenmengen sowie zur Implementierung intelligenter und vernetzter Systeme.
Details:
- AI/ML: Bereitstellung von Algorithmen und Rechenleistung zur Entwicklung und Ausführung von maschinellen Lernmodellen. Nutzt skalierbare Rechenressourcen der Cloud.
- Big Data: Verarbeitung und Analyse großer Datenmengen mittels verteilter Datenspeicher und -verarbeitungssysteme (z.B. Hadoop, Spark)
- IoT: Verwaltung von Geräten und Sensoren, die Daten erzeugen und/oder Aktionen in der physischen Welt ausführen. Cloud-Dienste bieten Infrastruktur für Datensammlung und -analyse, sowie Gerätemanagement.
- Integration und Skalierbarkeit oft über REST APIs und Microservices realisiert
Continuous Integration/Continuous Deployment (CI/CD) in Microservices-Architekturen
Definition:
Automatisierungsprozesse zur Integration und Bereitstellung von Software in kleinen, unabhängig deploybaren Services
Details:
- Continuous Integration (CI): Regelmäßiges Zusammenführen und Testen des Codes
- Continuous Deployment (CD): Automatisches Verteilen der getesteten Software in die Produktionsumgebung
- CI/CD-Pipelines: Abfolge von Schritten zur Automatisierung von Build, Test und Deployment
- Microservices-Architekturen: Kleine, unabhängig voneinander deploybare Services
- Versionierung und Repositories: Verwaltung von Quellcode und Abhängigkeiten
- Automatisierte Tests: Erhöhung der Codequalität und Vermeidung von Regressionen