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


Mass Apache .htaccess redirect generator

Autor*in: Benjamin Hofmann


Technologie


Vielleicht für den einen ganz nützlich wenn in einem Projekt mal wieder gefühlt hunderttausende Redirects notwendig sind: http://redirectgenerator.netmagnet.cz/. Hiermit ist es sehr einfach statische Redirects zu generieren, also ohne reguläre Ausdrücke in den URLs, die dann an Variablen übergeben werden. Das Tool habe ich schon ein paar mal kurz genutzt und fand es durchaus hilfreich …


Beitrag lesen
18
JAN
17

OOP 2014 – Martin Fowler: „Not just code monkeys“

Autor*in: Marc Kurzmann


Technologie // Über den Tellerrand


Ein Thema, welches mir persönlich sehr am Herzen liegt: jeder sollte sich seiner sozialen/ethischen Verantwortung bewusst sein. Dazu passt der Vortrag von Martin Fowler auf der OOP 2014. „Einer der Keynote-Speaker war Martin Fowler. Er hielt einen eindrucksvollen Vortrag, in dem er auch auf die soziale Verantwortung von Software-Entwicklern einging. Seine Botschaft „Not just code …


Beitrag lesen
10
FEB
14

Templating with good ol‘ Javascript

Autor*in: Benjamin Hofmann


Technologie


Die letzten Tage bin ich auf eine interessante Technik gestoßen, mit der man ein sehr simples Templating in Vanilla JS umsetzen kann. Das Ganze orintiert sich an den Techniken, die z.B. Handlebars.js oder die originale Micro-Templating-Technik von John Resig nutzen, ist jedoch deutlich kleiner. Der Code Der komplette Code basiert auf RequireJS, kann aber natürlich …


Beitrag lesen
29
SEP
16

Neues vom IE, Spartan Browser und Facebook Video

Autor*in: Benjamin Hofmann


Technologie


Der Spartan-Browser kommt ja so langsam ins Rollen, also gibt’s Neuigkeiten, was das für den IE bedeuten wird: „Gerüchte über das Ende des Internet Explorer sind stark übertrieben“, hält Microsoft zwar dagegen. Tatsächlich erneuerte dieser Post aber nur das Bekenntnis, den Internet Explorer für Firmenkunden am Leben zu erhalten“ Microsoft arbeitet seit einiger Zeit mit …


Beitrag lesen
26
MRZ
15