Web Development

Vertiefungsmodul im Medieninformatik Bachelor

Workshop 1

Dauer
240 min
Typ
Frameworks, Dienste und Daten im Web
Maximale Teilnehmerzahl
40 Teilnehmer
Verantwortlich
Kristian Fischer

Termine:

  • 02. April 2020, 13:00 Uhr, Raum

Die Veranstaltung findet in diesem virtuellen Raum statt.

Worum geht es?

Das Ziel des Tages ist es

  • einen Überblick über die Inhalte, Anforderungen und Erfolgskriterien des Kurses erlangt zu haben,
  • die Motivation und das Grundverständnis asynchroner Systemarchitekturen aus dem Modul “Grundlagen des Web” aufgefrischt zu haben,
  • Individuelle auf die Workshopaufgabe ausgerichtete Kompetenzziele identifiziert haben und einen Plan zur Erreichung mit den Mentoren abgestimmt haben und im Git dokumentiert haben.
  • Die Aufgabe der Erstellung eines technischen PoC verstanden haben und erste Schritte zur Realisierung unternommen haben.

Ablauf

13:00 - 14:15 Intro und Inputvorlesung /Grundlagen

14:30 - 15:00 Vorstellung Workshopaufgabe und Organisation

15:00 - 17:00 Arbeit am Projekt, individuelle Abstimmung mit Mentoren

Aufgabe für die kommende Veranstaltung

  • Erarbeiten Sie die im Grundlagenteil vorgestellten Konzepten und und die Inhalte den Kapiteln 1 (Why reactive) und 2 (A walk-through of the Reactive Manifesto) der Monographie von Kuhn die wesentlichen Begriffe und Zusammenhänge! Nutzen Sie dazu die in der Folge angegebenen Leitfragen!
  • Arbeiten Sie individuell an den den mit Ihren Mentoren identifizierten Kompetenzzielen und dokumentieren Sie den Fortschritt im Wiki des Repositories.
  • Arbeiten Sie an des abgesprochenen Zielen des technischen PoC!

Leitfragen für den Grundlagenteil

Auf dieser Seite sind einige Fragen formuliert die zum Erarbeiten eines Verständnisses der Kapitel 1 und 2 der Monographie von Kuhn genutzt werden können. Die Fragen können auchals Grundlage der Fachdiskussion in den Workshop Terminen genutzt werden.  

  1. Beschreiben Sie den den Einsatz von sharding anhand des von Kuhn dargestellten fiktiven E-Mail Dienstes! 
  2. Aus welchen Gründen kann in einem verteilten System die Replikation von Daten sinnvoll sein?
  3. Beschreiben Sie die von Kuhn genannten Replikationsansätze Active-passive, Consensus-based multiple-master und Optimistic replication with conflict detection!
  4. Erklären Sie de Grundsätze (tenets) des Reactive Manifesto!
  5. Was wird unter dem Ziel responsiveness verstanden und inwiefern steht dieses Ziel mit der Notwendigkeit der Verteilung von Systemkomponenten in einem Spannungsverhältnis?
  6. In welcher Weise werden Pattern benutzt, um die responsiveness angesichts von Überlast- und Ausfallsituationen zu gewährleisten?
  7. Wie können Non-Reactive (synchrone) Dienste in eine  Reactive Architectur integriert werden? 
  8. Erklären Sie das Beispiel des Bildabrufs im Non-Reactive Fall anhand der Abbildungen 2.1 und 2.2!
  9. Erklären Sie Amdahl’s Law und Litttle’s Law!
  10. Wie kann die maximale Latenzzeit mit Hilfe von queues begrenzt werden?
  11. Erklären Sie wie durch Verwendung von programmiersprachlichen Mitteln wie (composable) Futures bzw. Promises Parallelität bei der Verarbeitung von Anfragen ausgenutzt werden kann?
  12. Durch welche Faktoren wird die Beschleunigung der Verarbeitung durch Parallelisierung begrenzt?
  13. Erklären Sie den Begriff resilience und grenzen Sie ihn zu den Begriffen reliability und fault tolerance ab!
  14. Zu welchem Zweck werden circuit-breaker eingesetzt und wie funktionieren sie?
  15. Was ist die Rolle eines Supervisors in einer verteilten Service Architektur? Erklären Sie das CAP Theorem!
  16. Aus welchem Grund verzichtet man bei reactive systems soweit möglich auf die Forderung der strong consistency?
  17. Erklären Sie die Probleme die aus network partitions entstehen anhand des hypothetischen Gmail Service!

Technisches Proof of Concept

Im Rahmen des technischen PoC soll sowohl eine sinnvolle Nutzung von externe Datenquellen als auch eine nicht-triviale Kommunikation zwischen Anwendungskomponenten getestet werden. Dazu mag auch ein Szenario als Anregung dienen:

Es solle eine Anwendung entwickelt werden, die für einige mögliche Ausflugsziele eines Nutzers sowohl die Wetterbedingungungen als auch die Verkehrsverhältnisse für die Anreise überwacht und den Nutzer über signifikante Änderungen (Ereignisse) informiert. Für den Technischen PoC kommt es dabei nicht auf ausgefeilte Anwendungslogik an sondern im Wesentlichen auf den Informationsfluss zwischen den Softwarekomponenten. 

Ein mögliches Architekturdiagramm für das technische PoC

Material

Literatur

  • Edward Steel et al.: Hootsuite: In Pursuit of Reactive Systems (Link in die ACM DL)
  • J. Bonér et al.: Reactive Microsystems: The Evolution of Microservices at Scale, O’Reilly (siehe auch Seite des Unternehmens Lightbend), Webinar
  • Roland Kuhn: Reactive Design Patterns, Manning 2017, Da die Bibliothek geschlossen, hier ein Auszug für Ihren persönlichen Gebrauch
  • Engineer Bainomugisha, Andoni Lombide Carreton, Tom van Cutsem, Stijn Mostinckx, and Wolfgang de Meuter. 2013. A survey on reactive programming. ACM Comput. Surv. 45, 4, Article 52 (August 2013), 34 pages
  • Jack Moffitt: Professional XMPP Programming with JavaScript and JQuery, John Wiley 2010
  • Saint-André et al.: XMPP - The Definitive Guide, O’Reilly 2009
  • Dean Allemang, Jim Hendler: Semantic Web for the Working Ontologist, Morgan Kaufman 2014
  • R.V. Guha et al.: Schema.org: Evolution of Structured Data on the Web, ACM QUEUE Vol. 13 Issue 9 2015
  • Tim Berners-Lee: Linked Data, W3c 2006 Web SEite