Kafka gehört zu den Technologien, die als Queuing-, Messaging- oder Streaming-Engines bekannt sind. Beispiele hierfür sind traditionelle Technologien wie RabbitMQ, IBM MQ oder Microsoft Message Queue. Zu nennen sind auch proprietäre Lösungen, die von Cloud-Providern angeboten werden wie Amazon Kinesis, Google Cloud Dataflow oder Azure Stream Analytics.
Instaclustr zeigt, welche Argumente für die Nutzung von Apache Kafka sprechen.
Die Fülle der Technologieangebote ist ein klarer Beleg für einen weit verbreiteten Bedarf. Es ist jedoch nicht immer sofort ersichtlich, welche Rolle diese Technologien in einer Architektur spielen. Warum sollte ein Unternehmen noch eine Technologie zwischen die Quelle der Events und die Nutzer dieser Events einschieben? Dafür gibt es zwei Gründe.
Der erste Grund betrifft die Erhöhung der Zuverlässigkeit bei Spitzen im Workload. Wenn vorübergehend mehr Nachrichten eingehen, als die Anwendung verarbeiten kann, ermöglicht Apache Kafka eine schnelle und sichere Speicherung der Nachrichten. Auch wenn Applikationen ausfallen oder gewartet werden, ist diese Zwischenspeicherung von Vorteil.
Als zweiter Grund spricht für die Kafka-Nutzung die Erhöhung der Flexibilität von Anwendungsarchitekturen durch die vollständige Entkopplung von Anwendungen, die Ereignisse erzeugen, von den Anwendungen, die sie konsumieren. Dies ist besonders wichtig für die erfolgreiche Implementierung einer Microservices-Architektur.
Die Argumente für die Kafka-Nutzung
Warum aber sollte ein Unternehmen nun gerade Kafka einsetzen, schließlich gibt es auch andere Technologien? Für Apache Kafka spricht folgendes:
- die hohe Skalierbarkeit
- die hohe Zuverlässigkeit durch die integrierte Replikation, die einen echten „Always-on“-Betrieb unterstützt
- der Open-Source-Ansatz der Apache Foundation mit einer starken Community
- die integrierten Optimierungen wie Kompression und Message Batching
- der Einsatz bei innovativen Unternehmen wie Airbnb, Datadog, LinkedIn, Netflix, Rabobank oder Twitter
- das umfassende Ökosystem mit vielen Konnektoren
Best Practices für die Kafka-Nutzung
Ein Kafka-Cluster ist prinzipiell ein komplexes verteiltes System mit vielen Konfigurationsparametern und möglichen Interaktionen zwischen den einzelnen Komponenten. Es gibt aber einige Best Practices, die den erfolgreichen Betrieb von Apache Kafka gewährleisten. Dazu zählen:
- die Nutzung eines Monitoring-Systems, das mittels zentraler Metriken den Zustand des Systems anzeigt und gegebenenfalls Alarme auslöst
- die Verwendung dokumentierter und getesteter Verfahren – idealerweise automatisierter Prozesse – für die Fehlerbehandlung
- die regelmäßige Überprüfung der Sicherheit der Konfiguration
„Apache Kafka zählt zu den führenden Technologien für die effiziente Verarbeitung von Datenströmen. Wie bei jeder Datenbanktechnologie ist die Nutzung aber mit einer gewissen Komplexität verbunden“, erklärt Ralph Völter, Manager District Sales EMEA bei Instaclustr.
„Ein Unternehmen sollte sich deshalb immer die Frage stellen, in welcher Umgebung Apache Kafka zum Einsatz kommt, also on-premises oder in einem Cloud-Betriebsmodell. Vor allem Managed Platforms gewinnen dabei zunehmend an Bedeutung. Sie unterstützen unterschiedliche Betriebsmodelle und bieten eine hohe Skalierbarkeit, Flexibilität und Sicherheit – ganz abgesehen von der schnellen Bereitstellung und dem umfassenden Provider-Support.“