Ü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 { }:
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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, …)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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/
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly