In welche Bereiche gliedert das NIST Cloud Computing ein?
- Characteristics
- Service Models
- Deployment Models
Cloud Computing
Was sind typische Characteristics?
- On-demand Self-Service lässt Kunden sich selbst Ressourcen zuteilen und freigeben
- Broad Network Access: Zur Ressourcenverwaltung wird eine hochverfügbare und schnelle Internetverbindung benötigt
- Measured Service: Messung der Nutzung einzelner Services. Bezahlt wird nach Nutzung –> Transparenz
- Rapid Elasticity: benötigte Ressourcen lassen sich jederzeit vergrößern oder verkleinern
- Resource Pooling: physikalische Einheiten werden zu virtuellen Teilen untergliedert. Ungenutze Teile werden für andere Kunden angeboten
Cloud Computing
Was sind typische Service Models?
- SaaS: Konzept für On-demand Software-Nutzung, bei dem ein Benutzer nur noch eine Konfiguration innerhalb der Software vornehmen muss.
- PaaS: Ausführungsumgebung, in derm an seine eigenen Anwendungen betreiben kann. Die Verantwortung für die Verwaltung von den angebotenen Services wie z. B. Datenbanken, Web-Server oder Laufzeitumgebungen liegt beim PaaS-Anbieter.
- IaaS: IT-Infrastruktur in Form einer virtuellen Abstraktion. Ein Server wird als eine Instanz bezeichnet.
Cloud Computing
Was sind typische Deployment Models?
- Public Cloud: öffentlich verfügbare Cloudumgebung
- Community Cloud: nur eine gewisse Gruppe kann Ressourcen nutzen
- Private Cloud: Ressourcen kann nur von einer Organisation genutzt werden
- Hybrid Cloud: Mischform aus zwei oder mehreren Deployment Models
Was ist das IDEAL Cloud Application Design?
Und für was steht das IDEAL?
IDEAL ist dafür ausgelegt, die Architektur einer Web-Anwendung für die Skalierung in der Cloud vorzubereiten
- Ideal State
- Distribution
- Elasticity
- Automated Management
- Loose Coupling
IDEAL Cloud Application Design
Was ist Isolated State?
- Web-Anwendung hält keinen Status bzgl. Verbindung oder Session, der nicht in einer Datenbank persistent ist
- sonst kann der Anwender nur einen Web-Server für die Anfragen verwenden
- eine Lastverteilung mittels Load Balancer wäre nicht möglich
IDEAL Cloud Application Design
Was ist Distribution?
- Verteilung von Anfragen auf verschiedene Systeme –> mehr Ressourcen für eine Web-Anwendung
- Erhöhung der Ausfallsicherheit
- keine Bottlenecks
- verringerter Administrationsaufwand durch Verteilung der Services
IDEAL Cloud Application Design
Was ist Elasticity?
- Web-Anwendung muss darauf ausgelegt sein, unterschiedliche Volumen an Ressourcen zu haben
- dadurch sind keine Anpassungen im Source Code notwendig, wenn Ressourcen erweitert werden
IDEAL Cloud Application Design
Was ist Automated Management?
- Web-Anwendungen sollten Möglichkeit besitzen, sich selbst zu verwalten
- Reduzierung von Administrationsaufwand und Fehleranfälligkeit
- Starten von weiteren benötigten Nodes
IDEAL Cloud Application Design
Was ist Loose Coupling?
- einzelne Module innerhalb der Web-Anwendung sind ersetz- und erweiterbar
- je mehr Loose Coupling, desto größeres Potential für Veränderungen
- Vorbereitung für zukünftige Verbesserungen
Welche weiteren Anmerkungen (zu IDEAL) gibt AWS zu Cloud Architecture?
- Design for failure and nothing fails
- Build Security in every layer
- Don´t fear constraints
- Leverage different storage options
Was ist Load Balancing?
- Load Balancer ist ein Server, der Anfragen auf verschiedene Server-Nodes verteilt
- Verteilung kann mittels Last-Analyse, Verteilungsalgorithmen oder beidem geschehen
Welche bekannten Verteilungsalgorithmen gibt es und wie funktioniert deren Prinzip?
- Round Robin
- nachgeschaltene Node erhalten Anfragen immer in der selben Reihenfolge abwechselnd
- Hot Potato
- Anfrage an zufälligen Note
- dieser entscheidet, ob die Anfrage beantwortet werden kann
- wenn nicht, weiterleiten an nächsten Node und von vorne
Was ist Geo Location und Latency Based Routing?
- Anfragen werden anhand der Source IP dem nähesten Cluster weitergeleitet
- geographisch getrennte Cluster möglich
- Vorauswahl für Lokalisierungen möglich
- Messung der Latenz und verweis an den am schnellsten erreichbaren Cluster
Nennen Sie einige Best Practise Regeln für Infrastructure as a Code.
- Reproduzierbarkeit
- Konsistenz
- Wiederholbarkeit
- Verfügbarkeit
- Kontinuität
- selbst testende Systeme
- selbst dokumentierende Systeme
- kleine Änderungen
- alles Versionieren
Skalierungsmöglichkeiten
Wie kann ein bestehender Server entlastet werden?
- Cloud Services für Web Server Aufgaben nutzen
- Bspw. Email-Versand durch dedizierten Email-Service
- oder, Ausliefern von statischen Assets auf Cloud-Storage mit CDN (Content Delivery Network)
Skalierungsmöglichkeiten
Was ist Scale Up?
- Vergrößerung der Ressourcen
- z. B. mehr vCPU, RAM, HDD, GPU
- evtl. teurer als Scale Out
- Scale Up erforder eine Downtime
Skalierungsmöglichkeiten
Was ist Scale Out 1?
- Last auf mehr als einen Server verteilen
- Ist kein Load Balancer vorhanden, muss dieser hinzugefügt werden
- weitere Notes können hinter den Loadbalancer hängen
- nur so lange möglich, wie keine nachfolgenden Dienste skaliert werden müssen
Skalierungsmöglichkeiten
Was ist Scale Out 2?
- bei Überlastung des Load Balancers ist eine Skalierung der Load Balancers notwendig
- Erstellung eines weiteren Clusters mit Load Balancer
- mit Latency Based Routing wird auf die verschiedenen Cluster geschwenkt
Skalierungsmöglichkeiten
Welche Möglichkeiten bestehen beim Skalieren einer Datenbank?
- Optimierung der bestehenden Datenbank genügt meistens
- Log Files auf Hinweise überprüfen
- evtl. neue Indexes erstellen
- Vergrößern der Ressourcen
- Scale Out: Hinzufügen von Reas Replicas
- Einführung von In-Memory Key-Value Stores
- Decoupling durch Message Queues
- Transformation von SQL zu NoSQL
- Sharding
Cloud Design Patterns
Was ist das Stamp Pattern?
- Abbild eines Servers –> Server Image
- wird für neue Server verwendet
- somit ist sichergestellt, dass alle Server Instanzen identisch sind
Cloud Design Patterns
Was ist Deep Healthcheck Pattern?
- kommt aus dem Hochverfügbarkeitsbereich
- testet nicht nur die Instanz/UI eines Web Servers, sondern auch die zugrundeliegende DB
- z. B. Return Wert aus DB
Cloud Design Patterns
Was ist Floating IP Pattern?
- IP Adresse wird an virtuelle NIC gebunden
- virtuelle NIC kann dynamischen Servern zugeordnet werden
- Deploy auf “frischen” Server und dann Zuordnung der virtuellen NIC
Cloud Design Patterns
Was ist Deployment Scale Out - Scale In?
- neue SW Version wird auf Cloud-Speicher abgelegt
- Benachtichtigung der Auto Scale Group über neue Version
- Anzahl der Instanzen wird verdoppelt und mit neuer Version gestartet
- bei erfolgreichem Healthcheck werden Instanzen mit alter Version abgeschalten
- neues Deployment ohne Downtime möglich
Cloud Design Patterns
Was ist State Sharing?
- Web Anwendung stateless gestalten
- Session Informationen in DB speichern
- User Anfragen so auf unterschiedlichen Nodes problemlos möglich
Was sind Microservices?
- keine offizielle Definition vorhanden
- nur Set an Beschreibungen
- Microservices sollen sich auf eine Funktionalität beschränken
Was sind Vorteile von Microservices?
- Einfache Skalierbarkeit
- Verbesserte Test- und Wartbarkeit
- Unabhängigkeit bei verwendeter Technologie
- Unterstützung bei Software Qualitäts Verbesserungen
Was sind Nachteile bei Microservices?
- Erhöhter Aufwand bei Betrieb, Monitoring und Deployment
- Erhöhte Latenz bei Kommunikation einzelner Module bzw. Microservices
Was versteht man unter FaaS (Function as a Service)?
- Entwickler nur für Business Logik zuständig
- Ausführung von Modulen, Monitoring und Skalierung beim Anbieter
- Anwendung im Prinzip von Microservices
- Starke Bindung/Abhänigkeit an/von Anbieter
- Anbieter: AWS Lambda, Azure Functions, Google Cloud Functions
Was macht AWS Lambda?
- Cloud Service, der unabhänige Funktionen/Methoden ausführt
- Methoden können RDS (rel. DBs), S3 (Storage) oder SES (Email-Versand) nutzen
- Funktionen können in Python oder JavaScript entwickelt werden
- Möglichkeit einer Skalierung auf Funktions-Ebene
- Abrechnung erfolgt aufgrund angenommene Anfragen
Was ist Claudia.js?
- Claudia.js ist ein Node.js Paket
- erleichtert die Verwaltung von AWS Lambda Funktionen
- bietet ein Framework um Business Logik in Funktionen zu integrieren
- starre Verknüpfung mit AWS
Was ist das Serverless Framework?
- Toolset für Erstellung und Verwaltung von FaaS Funktionen
- höherer Konfigurationsaufwand (im Vergleich zu Claudia.js) zu Beginn
- FaaS-Anbieter unabhängig
- Anbieter Wechsel ohne Anpassung der Business Logik möglich