JUG Syxony Logo
29. September 2017
Christian Mennerich,  Joachim Arrasz
Dresden

Ihr redet über Resilience und wisst nicht was CAP & Co ist?

Resilience ist momentan in aller Munde, und gerade im Zuge der wachsenden Verbreitung von Microservices allgegenwärtig im Architekturdesign. Im Kern fordert die Resilenz den toleranten Umgang mit Fehlern in Hard- und Software. Gerade in verteilten Systemlandschaften sind Ausfälle und Fehler unvermeidbar, und dem System soll möglichst automatisiert die Möglichkeit gegeben werden, sich zu erholen.

Noch immer aber werden an ein verteiltes System Annahmen getroffen, die es nicht erfüllen kann. Hier gelten insbesondere die Implikationen aus dem CAP-Theorem und der Priorisierung von Konsistenz, Verfügbarkeit und Partitionstoleranz im Rahmen der eigenen Systemarchitektur. Resilenz ist hier nicht gleichzusetzen mit der Hochverfügbarkeit eines Systems, und die Toleranz von Ausfällen von Teilsystemen ist im Vorfeld mitzudenken: Die Konsequenzen aus der temporären Nichtverfügbarkeit von Shards ist grundsätzlich verschieden von der Nichtverfügbarkeit replizierter Daten, und es ist wichtig zu wissen welche Anforderung an das System bestehen. SLAs und Uptime beispielsweise sind anders zu gewährleisten als immer vollständige Informationen.

Dieser Vortrag will das Zusammenspiel aufzeigen zwischen CAP und Resilenz in verteilten Softwaresystemen, und diskutieren wie wichtig es ist die Anforderungen und SLAs der Teilsysteme korrekt benennen zu können, um die vorhandenen Techniken gewinnbringend zu kombinieren.