Übungen Flashcards
1
Q
JavaScript Object Notation
A
- Format zum Austausch strukturierter Daten
- Abgeleitet von JavaScript-Objekten
- Browser-Support
- Von Menschen lesbar
- Media-Type für JSON: application/json
- Relativ kompaktes Format
- Schema muss vor dem Parsen nicht bekannt sein
Datentypen:
- Strings: “Example String”
- Zahlen: 42, 3.14159, 2.998e+8
- Wahrheitswerte: true, false
- Explizit leere Werte: null
- Arrays/Listen: [“dies”, “ist”, “eine”, “liste”]
- Objekte bestehen aus Schlüssel-Wert-Paaren innerhalb von { }:
2
Q
Consul
A
- Tool zur Service Discovery
- wo ist welcher Service wie erreichbar?
- Infos und Schnittstellen per DNS oder REST API abrufbar
- weitere Dienste
- registrierte Dienste auf Erreichbarkeit überprüfen (Health Check)
- Key/Value Store
- verteilter Koordinierungsdienst
- Cluster-basierter Dienst
- Mehrere Server um Ausfallsicherheit zu gewährleisten
- Der Client läuft auf jeder Maschine im Cluster
- Anwendungen kommunizieren nur mit dem lokalen Client
- → Verteilung und Hochverfügbarkeit
3
Q
Spring Framework
A
- Application Framework
- Vereinfacht die Entwicklung durch die Bereitstellung sinnvoller und häufig genutzter Funktionalitäten und Konzepte
- Entkoppelung von Programmkomponenten
- Vielzahl an Schnittstellen
- Datenbanken (JPA, SQL, NoSQL, …)
- Web-Services (REST, SOAP, gRPC, Template Engines, …)
- Security (Authentifizierung)
- Cloud-Anbindung (AWS, Azure, …)
- Utilities (Service Discovery via Consul, Devtools, …)
4
Q
Spring Boot
A
- Automatische Konfiguration von Spring: Convention over Configuration
- Kommt von Haus aus vorkonfiguriert
- Boot-Komponenten austauschbar mit expliziten Spring-Komponenten
- Konfiguration bleibt anpassbar
- Komponentenpakete: Abhängigkeiten und Versionen aufeinander abgestimmt
- Z. B. bringt spring-boot-starter-web alle notwendigen Abhängigkeiten mit, um ohne Umwege eine selbstständig lauffähige REST-Applikation zu erstellen
Beispielapplication:
- @SpringBootApplication
- @RestController
5
Q
Inversion of Control/ Dependency Injection
A
- Entkoppelung einzelner Komponenten
- Komponenten werden zur Laufzeit injiziert
- Möglich über Konstruktor, setter-Methoden, Annotation @Autowired
- Hierfür muss eine Klasse als Spring Bean gekennzeichnet werden:
- @Component und deren Unterarten zur Annotation auf Klassenebene, oder
- @Bean zur Annotation von Methoden
- – Methode muss bereits innerhalb einer “‘Spring managed Bean”’ sein
- – Rückgabe muss ein instanziiertes Objekt sein: @Bean MyBean myBean() {return new MyBean(…)}
- Management von Beans findet durch IoC Container von Spring statt
- DI orientiert sich an Datentyp und Variablenbezeichner
- DI wird mithilfe der Annotation @Autowired angewiesen
- Constructor injection (Injektion der Parameter): @Autowired public MyClass(Example example){…}
- Empfohlene Art der Dependency Injection
- Hat eine als Komponent gekennzeichnete Klasse nur einen Constructor, ist diese implizit @Autowired
- Field injection: @Autowired private Example example;
- Setter injection
- Ist mehr Logik notwendig wie die Validierung der Injection, kann setter injection genutzt werden:
- @Autowired void setExample(Example example) {…}
- @Qualifier(“”) muss bei abweichenden Variablenname und Datentypen genutzt werden, z. B. aufgrund von Abstraktion oder multiplen Beans der gleichen Klasse
6
Q
YAML
A
- Akronym für YAML Ain’t Markup Language
- Meist für Konfigurationen genutzte Sprache
- Key-Value-basiert
- Einrückung ist Teil der Sprache
7
Q
Amazon Web Services (AWS)
A
- Dienste zum Aufbau komplexer Systeme in einer Cloud-Infrastruktur
- Elastic Compute Cloud (EC2) – Betrieb virtueller Maschinen
- Simple Storage Service (S3) – Netzwerk-basierter Speicher-Dienst
- Elastic Load Balancing – Lastverteilung für EC2
- DynamoDB – Key-Value-Store basierend auf Dynamo
- insgesamt werden über 120 Dienste angeboten
- Abrechnung nach tatsächlichem Verbrauch und Standort
- Betriebsstunden, Speicherbedarf, Transfervolumen, Anzahl an Anfragen
- Standorte quasi überall
- AWS Management Console
- Umfangreiches Webinterface für Zugriff auf AWS Dienste
- Region “N. Virginia (us-east-1)” verwenden
- Region wichtig für Zugriff auf Images
- Oder CLI-Tools: aws
- AWS Identity and Access Management (IAM)
- Access Credentials werden automatisch erstellt
- aws configure zum Setzen der Credentials und Region
8
Q
Was ist Orchestration, Wofür braucht man Orchestration
A
Was ist Orchestration?
- Automatische Konfiguration von…
- Software
- Hardware
- IaaS/PaaS/SaaS
- Koordinierung der konfigurierten Systeme
- Automatisierung von all diesen Prozessen
Wofür braucht man Orchestration?
- Automatische Erstellung von VMs
- Installieren von Updates auf allen VMs/PCs
- Änderung von Konfigurationen
- Alle Hosts sehen einheitlich aus
- Sicherstellung, dass z. B. jede Installation best practices bzgl. Sicherheit befolgt
9
Q
Anisble
A
- Ansible ist ein Open Source Orchestrations-Tool geschrieben in Python
- Ähnlich zu Puppet, Chef oder Salt
- Abläufe werden in YAML definiert
- Nutzt SSH als Übertragungsebene
Vorsteile von Ansible
- Auf den Hosts wird lediglich Python benötigt
- Idempotent
- Egal ob eine Operation 1 oder 10 mal ausgeführt wird, nach dem ersten Mal verändert sich nichts mehr
- Teilweise deklarativ
- Anstatt zu sagen, wie man zu einem Zustand kommt, beschreibt man diesen und Ansible findet es selbst heraus
- Leichte Erweiterbarkeit durch eigene Python Module oder Scripts mit vorgegebenen Ein- und Ausgaben
10
Q
Load Balancing mit Fabio
A
Wofür brauchen wir Load Balancing?
- Eine einzelne Instanz von unserem Service kann nicht mehr alle Anfragen bewältigen
- Woher weiß ein Client, zu welcher Instanz er sich verbinden soll?
- Clients sollen nicht selbst entscheiden.
- Alle Clients verbinden sich zum Load Balancer
- Der Load Balancer verteilt die Anfragen transparent an alle Instanzen unseres Services
Fabio
- Fabio ist ein Load Balancer
- Integriert mit Consul um Services zu finden
- Zero-Conf: holt sich alle benötigen Infos von Consul
- Downloads: https://github.com/fabiolb/fabio/releases
- Dokumentation: https://fabiolb.net/quickstart/
11
Q
Terraform
A
- Beschreibung von Cloud-Infrastrukturen
- Planung und Ausführung
- Versionierung von Infrastruktur, VCS nutzbar
- Continuous Integration →Deployment
- Vielzahl unterstützter Cloud- und Infrastrukturanbieter
- OpenStack, AWS, Microsoft Azure, Docker, Alicloud, Heroku, …
- Interoperable Nutzung verschiedener Anbieter und Ressourcen
- Ressourcen müssen nicht mehr in einer UI zusammengeklickt/gescriptet werden
- Zustandsmanagement
Providers:
- Terraform braucht einen Provider bei dem die Infrastruktur erstellt werden soll.
- Ein Provider ist eine Abstraktion der Cloud Ressourcen des Anbieters
Ressources and Data
- Terraform unterscheidet zwischen
- Ressource: Objekte, die von Terraform kontrolliert, erstellen und gelöscht werden.
- VM Instanzen, Netzwerke, Security Groups, IP Adressen, Schlüsselpaare
- Data: Objekte, die bereits existieren und nur von Terraform gelesen werden.
12
Q
Monitoring
A
Monitoring
- Gathering of Metrics, such as:
- Hard-drive usage, CPU-Workload, Network throughput, etc …
- Possibly also pre-filtered, aggregated or transformed
- Software: collectd, node_exporter, Telegraf
- Metrics are usually bound to a specific time→Time-Series databases
- Own query-language for queries/requests
- Software: RRDTool, Prometheus, InfluxDB, Graphite
There are two approaches for gathering metrics, namely: Push & Pull
- Push
- The monitored instances push the data in the database
- Telegraf + InfluxDB
- The database does not need to know its instances
- Many instances →more incoming queries
- Pull
- Database pulls the data from the instances
- node_exporter + Prometheus
- Instance does not need to know its database
- Many instances →more outgoing requests
- In both cases, the two sides have to be configured