APPE

HSLU - Modul

HSLU - Modul


Kartei Details

Karten 141
Sprache Deutsch
Kategorie Informatik
Stufe Universität
Erstellt / Aktualisiert 06.06.2020 / 21.10.2024
Weblink
https://card2brain.ch/box/20200606_appe
Einbinden
<iframe src="https://card2brain.ch/box/20200606_appe/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

1.5.29 Was für Konventionen gibt es für URIs bei REST-Schnittstellen?

  • Bezeichner werden typisch in Mehrzahl geschrieben
  • IDs sind immer Bestandteil des Pfades
  • Für Suchargumente werden Attribute verwendet 

--> Mit einer URI können nun unterschiedliche Aktionen ausgeführt werden

--> Unterscheidung geschieht nur über die verwendeten http-Methoden

1.5.30 Was für Rückgabemöglichkeiten gibt es bei RESTfull-Schnittstellen?

  • Über den Content Body des Request
  • Über http-Status-Code

1.5.31Wie werden REST-Schnittstellen versioniert?

Werden über den URI-Pfadanteil relativ einfach versioniert../v1/orders../v2/orders

1.7.1 Was sind Ziele von guten Tests?

  • Testausführung so weit wie möglich automatisieren
  • Möglichst kurze und einfache Testfälle
  • Use/ Cases und Funktionen möglichst einzeln testen
  • Testen der normalen Abläufe als Basis
  • Ausnahmen und nicht erlaubte Vorgänge testen

1.7.2 Was für Aspekte gibt es beim Testen von Applikationen - Welche generellen Tests gibt es?

  • Funktionale Tests
  • Performance und Stress Tests
  • Sicherheitstests

1.7.3 Was sind Funktionale Applikations-Tests?

Testen der vollständigen Applikation in der Form wie sie vom Endnutzer auch genutzt wird. Kombiniertes Testen von Business und Applikationslogik.
Bsp:

- Prüfen ob ein bestimmtes Objekt gefunden wird und ob dieses auch korrekt angezeigt wird.

- Auslösen einer Verarbeitung und Prüfung ob diese vollständig und korrekt durchgeführt wird.

1.7.4 Was sind Performance und Stress-Tests?

  • Analyse des Memorybedarfs
  • Wie reagiert die Anwendung bei hoher Belastung durch viele parallele Clients
    - Queuing der Anfragen.
    - Zurückweisen von Anfragen.
    - Verlust von Anfragen.
     
  • Wiederanlaufverhalten bei Teilsystemausfall
    - Robustheit und Stabilität.
    - Resilienz.
     

1.7.5 Was sind Sicherheits-Tests?

Systemtechnisches Testen einer Applikation auf verschiedene Sicherheitslücken.
Prüfung und Weiterverwendung von Eingabeparameter.

Bekannte Beispiele:
- SQL-Injection in Formularen.
- Session Hijacking.

1.7.6 Was für negative Auswirkungen können beim Testing entstehen bei stark geschichteten Architekturen?

Das man immer alle unteren Schichten (integrativ) mittestet. Dies hat negative Auswirkungen für die Integrationstests:

  • Ausführungszeit steigt an
  • Selektivität sinkt stetig (redundante Tests)
  • Abhängigkeiten steigen

1.7.7 Was gibt es für Herausforderungen bei DB Testing?

Datenmanipulation durch Testfälle. Reproduzierbarkeit muss gewährleistet sein D.h:
Zustand DB muss vor und nach der Ausführung der Testfälle definiert werden.

1.7.8 Was gibt es für Herausforderungen beim Testen von (Rich-)GUI-Applikationen?

Schnittstelle ist das GUI selber.

  • Interaktivität muss für Automatisierung simuliert werden
  • Verifikation des Resultates muss optisch erfolgen

1.7.9 Was ist der Unterschied zwischen Rich-Gui Applikationen und Web-Applikationen?

Im Unterschied zu Rich-Gui-Anwendungen basieren Web Applikationen und Services auf einem strikten Request Response-Modell. (Request erzeugt Response)

1.7.10 Was ist JWebUnit?

Java Framework, die das automatisierte, funktionale Testen von Web-Applikationen und/oder Services ermöglichen.

1.7.11 Wie werden Micro Services / REST-Schnittstellen getestet?

  • Mittels Testframeworks (JUnit, Springboot)
  • Integrationstests
  • Test Container
  • Manuell mit Postman

1.8.1 Was sind Vorteile einer Monolith-Architektur?

  • Nur eine Code-Basis
  • Einfach zum deployen
  • Einfach zu betreiben
  • Gute Performance

1.8.2 Was sind Nachteile einer Monolith-Architektur?

  • Technologie gebunden
  • kann nur am Stück deployed werden
  • Wartbarkeit
  • Fehler Toleranz
  • Beweglichkeit
  • Skalierbarkeit

1.8.3 Wie wird ein Service in einem serviceorientierten Ansatz aufgerufen?

  • Der Aufruf ist asynchron
  • Anfrage wird in eine (Queue) Warteschlange gestellt
  • Service hört auf eine Queue
  • Wenn der Service eine Antwort benötigt, erstellt es eine Antwortnachricht und stellt es in eine Queue

    void MyAwsomeService(Request request)

1.8.4 Wieso soll man asynchrone Kommunikation bevorzugen vor einer synchronen?

Verfügbarkeit
Wenn der Service nicht vorhanden ist hat der Aufruf ein Fehler und der Aufrufer muss den Fehler handeln.
Fehler Toleranz
Wenn der Service gecrashed ist, hat der Aufrufer ein Timeout und er muss mit dem Fehler umgehen können.
Erweiterbarkeit
Point-to-Point Verbindung hat eine höhere Kopplung - Daher entstehen höher Kosten bei einer Anpassung
Skalierbarkeit
Wie kann man skalieren bei höherer Belastung?

1.8.5 Wie können Service-orientierte Architekturen skalieren?

Bild

1.8.6 Aus welchen Bestandteilen besteht Messaging?

Bild

1.8.7 Was sind Vorteile vom Messaging

Belastbarkeit:
Nachrichten gehen nicht verloren, wenn das Netzwerk ausgefallen ist. Sie werden gepuffert und geliefert, wenn das Netzwerk wieder verfügbar ist.


Fehlertoleranz:
Wenn ein Dienst abgestürzt ist oder eine Anforderung nicht verarbeiten kann, kann eine Nachricht erneut zugestellt werden.


Asynchronität:
Dienste können die weitere Verarbeitung fortsetzen, auch wenn noch keine Antwort empfangen wurde oder das Netzwerk ausgelastet ist.


Entkopplung:
Kommunikationsdienste kennen sich nicht und sind entkoppelt.


Effizienz und Skalierbarkeit:
Die vollständig asynchrone Kommunikation ist ein Schlüsselaspekt für die Reaktionsfähigkeit und die Skalierbarkeit. Die Nachrichtenwarteschlangen entkoppeln Produzent und Konsument und ermöglichen das Verteilen von Nachrichten, wenn ein Konsument überlastet wird.

1.8.8 Was ist Thinking message-centric?

Es hilft das System zu designen -> Message First Ansatz

  • Mittels Geschäftsanforderungen die Aktivitäten ermitteln vom System
  • Aufschlüsselung der Anforderung schlägt die Nachrichten vor im System
  • Bietet konzeptionelle Ebene zwischen GS-Anforderungen und technischen SySpec.

1.8.9 Was ist der Unterschied zwischen synchroner und asynchroner Kommunikation?

Synchron
Wird benötigt, wenn der Caller eine Bestätigung benötigt, dass eine gewisse Aktion gemacht wurde.

Asynchron
Asynchrone Systeme sind eher ereignisgesteuert.

1.8.10 Was ist Pattern-Matching und welche beiden Möglichkeiten gibt es?

Um ein dynamisches Routing von Nachrichten zu ermöglichen, können wir einen Namespace für diese Nachrichten einführen. Es gibt mehrere Möglichkeiten, dies zu tun. Betrachten wir die folgenden zwei:

Beschriftungen im Nachrichtenkopf (Pattern Matching with Labels)
Der Nachrichtenkopf kann beliebige benutzerdefinierte Schlüssel-Wert-Paare enthalten. Durch das Einfügen eines Label-Schlüssels in den Header kann das Nachrichten-Routing basierend auf diesen Labels durchgeführt werden.

Hierarchische Benennung von Nachrichten (Hierarchical Naming)
Die Benennung der Nachrichten kann hierarchisch erfolgen, so dass die Nachrichten mit Musterabgleich weitergeleitet werden können.

1.8.11Was ist der Message Broker?

Software, welche Messages verteilt (Messageing Service)

1.8.12 Wie kann bei Pattern-Matching eine Antwort gesendet werden?

Dem antwortenden Service mitteilen wohin er die Nachricht senden soll.
Mit einem ReplyTo property im Message header.

1.8.13 Wie kann sichergestellt werden, dass Nachrichten immer zugestellt werden?

Der empfangende Teil kann eine Bestätigung (ACK) senden, um zu bestätigen, dass eine Nachricht erfolgreich zugestellt oder verarbeitet wurde.
Acknowledgments können in beide Richtungen verwendet werden beim Messageingsystem:

  • Das Nachrichtensystem teilt einem Produzenten mit, dass seine Nachricht empfangen wurde.
  • Ein Verbraucher teilt dem System mit, dass er eine Nachricht empfangen oder verarbeitet hat.

1.8.14 Was für Message Pattern gibt es?

  • Fire and Forget
  • Winner-take-all
  • Request/Response
  • Synchronous-Observed
  • Dead Letter Queue

1.8.15 Wie funktioniert Fire and Forget?

Die Kommunikation ist asynchron und die Messages werden nicht konsumiert. Jeder Service wo interessiert ist kann Nachrichten erhalten. Der Sender erwartet keine Antwort.

1.8.16 Wie funktioniert Winner take all?

Die Kommunikation ist asynchron, die Nachrichten werden jedoch konsumiert. Mehrere Services können danach horchen, jedoch nur einer wird die Nachricht erhalten. Dies wird normalerweise in einem Szenario verwendet, in dem mehrere Mitarbeiter bestimmte Vorgänge parallel ausführen.

1.8.17 Wie funktioniert Request/ Response?

Die Kommunikation ist synchron und die Nachrichten werden konsumiert. Der sendende Service erwartet eine Nachricht auf seine Anfrage. Der horchende Service konsumiert die Nachricht und kein weiterer Service wird die Nachricht erhalten.

1.8.18 Wie funktioniert Synchronous-Observed?

Die Kommunikation ist synchron, jedoch werden die Nachrichten nicht konsumiert. Der sendende Service erwartet eine Antwort auf seine Anfrage. Andere Abhördienste können die Nachrichten beobachten, aber der Absender ist nur an der Antwort eines bestimmten Teilnehmers interessiert.

Bsp:
Ein Warenkorb-Service sendet die Checkout-Nachricht, die von einem Lieferservice beantwortet wird. Der Empfehlungsservice hört auf die Checkout-Nachricht und berechnet ihre Empfehlungsdaten neu.

1.8.19 Warum können Nachrichten nicht zugestellt werden und wie funktioniert die Dead Letter Queue?

 

Es gibt eine Reihe von Gründen, warum eine Nachricht nicht zugestellt werden kann:

  • Ein Empfänger kann die Nachricht nicht verarbeiten
  • Ein Empfänger hat die Nachricht abgelehnt
  • Eine Queue war voll
  • Eine Queue ist nicht mehr verfügbar
  • Die Nachricht ist abgelaufen

Ein üblicher Ansatz besteht darin, eine Queue für nicht zustellbare Nachrichten einzurichten, an die alle nicht zustellbaren Nachrichten gesendet werden. Die Queue für nicht zustellbare Nachrichten kann verwendet werden, um potenzielle Probleme im System zu finden.

1.8.20 Wie funktioniert Scaling and Back Pressure?

Während ein asynchrones System viele Vorteile bietet, sind einige Herausforderungen zu bewältigen, wenn das System stark ausgelastet ist.
Bsp:
Angenommen wir haben 5 Produzenten, die 2 Nachrichten pro Sekunde senden, und einen Konsumenten, der 5 Nachrichten pro Sekunde verarbeiten kann: Wenn diese Situation andauert, wächst die Warteschlange auf unbestimmte Zeit.

Eine Lösung besteht darin, mehrere Instanzen des Consumers zu skalieren und hinzuzufügen. Bei diesem Ansatz beschleunigen wir den Verbrauch.

Eine andere Lösung besteht darin, die produzierende Partei zu verlangsamen, indem Gegendruckstrategien angewendet werden:

  • Synchroner Gegendruck
  • Lastabwurf
  • Ablaufsteuerung

1.8.21 Was ist RabbitMQ und welche Grundkonzepte gibt es - Wie ist ein Brocker aufgebaut?

Messaging System
In RabbitMQ gibt es drei Grundkonzepte:

  • Exchange: Ein Exchange nimmt Nachrichten entgegen und verteilt sie auf der Grundlage von Weiterleitungsregeln an Queues.
  • Queue: Nachrichten werden in die Queues gestellt, die später von Verbrauchern abgerufen werden.
  • Bindings: Eine Konfiguration, die einen Exchange einer Queue zuordnet und das Routing definiert.

1.8.22Was ist AMQP?

Advanced Message Queuing Protocoll

1.8.23 Welche Arten von Exchanges gibt es?

Direct: Verwendet den Queue-namen als Bindungsmuster.

Fanout: Der Fanout-Exchange verteilt Nachrichten an alle gebundenen Queues (ohne Routing).

Topic: Verwendet den Weiterleitungsschlüssel (Routing-Key) der Queues und das Pattern-Matching, um Nachrichten an die entsprechenden Queues zu verteilen.

1.8.24 Welche zwei Komponenten benötigt man um die Services mit RabbittMQ zu verbinden?

Connection: Die Verbindung ist eine TCP-Verbindung zu RabbitMQ. Verwenden Sie eine Verbindung pro Prozess und lassen Sie sie offen. (Nicht zu viele Connection = brauchen viel Ressourcen)

Channel: Der Kanal ist eine virtuelle Verbindung innerhalb einer Verbindung. Kanäle sind leichter. Es wird jedoch empfohlen, die Kanäle offen zu halten. Verwenden Sie unterschiedliche Kanäle für unterschiedliche Threads. (pro Thread, einen Channel -> da nicht Threadsicher)

1.9.1Was ist ein Stakeholder

Als Steakholder werden Personen oder Personengruppen bezeichnet, die ein berechtigtes Interesse am Verlauf oder Ergebnis eines Prozesses oder Projektes hat.

1.9.2 Was gibt's für Stakeholder-Anforderungen?

Nutzungsanforderungen: Effiziente Erbringung eines Ergebnisses

Gesetzliche Anforderungen: Gesetzgeber & Behörden

Fachliche Anforderungen: Vollständigkeit & Korrektheit

Organisatorische Anforderungen: Verhalten von Personen und Organisationseinheiten

Marktanforderungen: Für Kaufentscheidung relevant