Am 12.5. war Agim Emruli (mimacom) zu Gast bei der JUG-Darmstadt und hat einen Vortrag mit dem Titel „Anti-Fragile Cloud Architectures“ gehalten.
Zu Beginn hat er erklärt welche Konsequenzen sich aus verteilten Systemen ergeben und welche Möglichkeiten es gibt, um sie robust und Antifragil zu gestalten. Dabei wurden Konzepte, wie Modularisierung, Vervielfältigung (Duplication) und Partionierung besprochen. Bei der Modularisierung hat Agim Microservices kurz erwähnt, wobei er gleich gesagt hat, dass er im Folgenden nur noch von Services spricht, weil es in dem Kontext keinen großen Unterschied macht, ob man von Service oder Mikroservice spricht. Viel wichtiger ist, dass die Services richtig geschnitten sind und dass ein Pattern, wie der Bounded Context (Stichwort: DDD) angewendet wird.
Anschliessend ist er auf die Fallacies of distributed computing eingegangen. D.h. er hat darauf hingewiesen, dass diese immer im Auge behalten werden müssen, wenn man robuste Cloud Architekturen entwerfen will.
Während des gesamten Vortrags gab es immer mal wieder praktische Hinweise. Beispielsweise, wie man Fehler in verteilten Systemen mit dem Linux-Tool tc qdisc simulieren kann (Latenz, Fehlerhafte Pakete, verlorene Pakete, defekte Namensauflösung), um ein System robuster zu gestalten.
Ein häufiges Problem bei verteilten Anwendungen sind Timeouts, die Agim an ein paar Codeschnipseln vorgestellt hat, um sie anschließend live in der IDE und mit einem Profiler vorzuführen. Die Requests gegen den Service wurden mit Apache Bench (ab) abgesetzt. Wenn die API keine Möglichkeit bietet, ein Timeout zu setzen, können Hysterix-Commands mit einem Fallback verwendet werden. In diesem Kontext wurden auch Circuit Breaker erklärt und das Hysterix-Dashboard vorgestellt. Weiter ging es dann mit Thread-Pools in Verbindung mit the Hysterix-Commands und Bulkheads zur Absicherung.
Anschließend ist er auf Eureka, Zookeeper und Consul eingegangen. Alles im Zusammenhang von Verfügbarkeit (availability), Konsistenz (consistence) und Partitionierung (CAP-Theorem) . Als nächstes hat er die Service Registry und die Service Discovery und das Load-Balancing (Round Robin, Availability filtering, response time) erklärt. Dann wurden der Zweck und die Vorteile von API-Gateways beschrieben.
Außerdem hat Agim anhand der Black Swan Theory erklärt, dass man auch auf Fehler/Ereignisse vorbereitet sein muss, die sehr unwahrscheinlich sind und hat den Tipp gegeben, dass man solche Ereignisse in verteilten Anwendungen beispielsweise mit der Simian Army von Netflix simulieren sollte, um auf der sicheren Seite zu sein. Zum Abschluss wurde der Bogen von Robust zu Anti-Fragil gespannt und damit klar gemacht, was eine Anwendung robust macht und wie daraus Anti-Fragil wird.
Vielen Dank an Agim für den sehr interessanten Vortrag und die vielen Informationen und Anregungen!
Nach dem Vortrag hat Agim noch ein paar Fragen beantwortet, wobei die meisten bei der anschliessenden Diskussion bei Getränken und Snacks geklärt wurden.
Auch vielen Dank an die IHK und IT for work für das zur Verfügungsstellen der Räumlichkeiten und der Verpflegung.
Die Folien zu dem Vortrag findet man hier. Und wer nicht kommen konnte oder sich den Vortrag nochmal ansehen möchte, kann sich die Aufzeichnung von den Voxxed Days in Zürich ansehen.
Einen interessanten Artikel, der viele der genanten Technologien und Pattern auch erklärt, findet man auf der InnoQ-Seite: Hystrix – damit Ihnen rechtzeitig die Sicherung durchbrennt