WJAX 2017: Web-APIs, einfach oder?

Datum: 20. November 2017
Autor*in: Regina Staller


Wie im letzten Blog von mir erwähnt wurde, habe ich auf der diesjährigen WJAX einen Vortrag über den effektiven sowie effizienten client- und serverseitigen Umgang mit Web-APIs besucht. Gehalten wurde dieser Vortrag von Thilo Frotscher. Die wesentlichen Themen aus dieser Session möchte ich hier gerne noch einmal vorstellen. Besonders im Bereich IBE/Metasuche bin ich schon einmal auf die ein oder andere Problematik gestoßen und habe aus diesem Vortrag viele Ideen und Konzepte mitgenommen, welche ich im Arbeitsalltag anwenden kann.

Der Vortrag behandelte die Herausforderungen und Fallstricke bei der Implementierung und Wartung von Web APIs. Dabei wies Thilo Frotscher zu Beginn der Session auf die „Seven Fallacies of Distributed Computing“ (Deutsch, 1994) hin:

  1. The network is reliable.
  2. Latency is zero.
  3. Bandwidth is infinite.
  4. The network is secure.
  5. Topology doesn’t change.
  6. There is one administrator.
  7. Transport cost is zero.

James Gosling hat diese Fallstricke um einen weiteren Punkt erweitert:

  1. The network is homogeneous.

Diese Irrtümer müssen von jedem API Entwickler bedacht werden. Um diese Fallstricke zu umgehen, darf eine Web-API nicht nur für den Normalzustand entwickelt werden, sondern explizit für den Fehlerfall: Das sogenannte Prinzip des ‚Design for failure‘. Ausfälle, Fehler und Verbindungsprobleme stellen nicht die Ausnahme, sondern die Regel dar. Im Zuge dessen muss jeder API Entwickler eine Strategie für den Fehlerfall definieren, um das System von Beginn an widerstandsfähig zu entwickeln.

Auf der clientseitigen Entwicklung muss deshalb damit gerechnet werden, dass eine Server-Response entweder gar nicht verfügbar sein kann oder man auf die Server-Response sehr lange warten muss. Falls der Client naiv implementiert wurde, wartet man dann schlimmstenfalls für immer auf die Response und die Anwendung wäre komplett blockiert. Der default Connection Timeout des http Protokolls ist standardmäßig unendlich. Dies ist nur wenigen Entwicklern bekannt, wie in der Session aufgekommen ist.

Um diese clientseitige Blockade im Fehlerfall zu umgehen, muss man sich unbedingt Gedanken über Connection- sowie Read-Timeouts, Retry-Konzepte sowie über ein Default-Verhalten der Anwendung im Fehlerfall machen. Bei der Wiederholbarkeit von Requests ist dabei zu bestimmen wann welche Requests wie häufig noch einmal abgefeuert werden können.

Auch hat Thilo Frotscher in diesem Zusammenhang den ‚Circuit Breaker‘ (Sicherungskasten) angesprochen. Um eine Anwendung im Fehlerfall vor einem kompletten Absturz zu bewahren, wird eine Sicherung eingebaut, welche die ‚Überhitzung‘, also die komplette Überlastung des Systems verhindert.

Auch die ‚Bulkheads‘ (Schotten) sind ein wichtiges Konzept für das Prinzip ‚Design for failure‘. Dabei wird die Anwendung im Problemfall „über Wasser gehalten“, d.h. eine Teilfunktionalität bleibt erhalten. Die Systembestandteile werden sozusagen voneinander möglichst weitgehend isoliert. Dies kann man durch den redundanten Einsatz von Hardware, der Bindung bestimmter Prozesse an bestimmte CPUs, der Trennung von Business-Funktionalität auf diverse Server-Cluster sowie durch die Verteilung von Funktionalität auf mehrere Thread-Pools erreichen.

Zudem erwähnte der Speaker den Einsatz von Sicherheitsmaßnahmen in der Web-API Entwicklung. Bei der Authentifizierung sprach er sich für JSON Web Tokens sowie OAuth aus. Des Weiteren hat sich neben der Verschlüsselung über SSL/TLS folgende Sicherheitsmaßnahme bewährt: Kein Einsatz von API Keys in der URL.

Die hier genannten Punkte stellen nur einen Bruchteil der zu bedenkenden Maßnahmen in der ‚Design for failure‘ API Entwicklung dar. Es gibt natürlich noch weitere Konzepte, welche hierbei berücksichtigt werden müssen bzw. können. Alles in allem ein sehr interessanter Vortrag, der wichtige Ansätze für die Web-API Entwicklung lieferte.


Dieser Artikel wurde verschlagwortet unter:


Kommentare

Selber kommentieren:






Weitere Beiträge zum Thema Technologie


Besuch der c’t WebDev 2020

Autor*in: Florian Sauer


Technologie


Logo c't WebDev 2020

Vom 4.-6. Februar 2020 haben Matthias und ich in Köln die zweite c’t WebDev, eine Frontend Konferenz, besucht. Diese war in zwei Teile aufgegliedert. Am ersten Tag wurden optionale Workshops angeboten. Die folgenden zwei Tage über fand die eigentliche Konferenz mit den Vorträgen statt.


Beitrag lesen
13
FEB
20

Kleiner Postfix- Guide

Autor*in: Sascha Nützel


Technologie // Über den Tellerrand


Nachdem die letzten Tage „kleinere“ Postfix Probleme aufgetreten sind, hier mal ein kleiner Guide wie man sich den Mail- Queue anschauen und bereinigen kann. Mail- Queue anschauen mailq | less Um die Anzahl der Mail’s in der Queue anzuzeigen, je nach Menge kann dies ein paar Minuten dauern: mailq | egrep ‚^–‚ Um den Queue von …


Beitrag lesen
14
FEB
17

Netbeans 7.1patch1 released

Autor*in: Bastian Schwarz


Technologie


Gestern wurde Netbeans 7.4patch1 released in dem auch einige PHP Fixes mit drin sind. Näheres gibt es hier: https://netbeans.org/community/news/show/1602.html Das Auto-Namespacing geht leider immer noch nicht … Gruß Bastian


Beitrag lesen
26
NOV
13

Einrichten des GoogleTagManagers

Autor*in:


Technologie


Zum Hintergrund: seit kurzem verwenden wir den GoogleTagManager(GTM) bei den Hörnerdörfern. Ziel ist es die diversen Analytics Accounts die hier verwendet werden (Bolsterlang, Fischen etc.) unter einen Hut zu bringen. Hierzu kann man im Tagmanager Profil Regeln und Tags erstellen, anhand derer das Tracking dann ausgeführt wird (dazu später mehr). Ermöglicht  wird das Ganze über …


Beitrag lesen
26
AUG
14