Meine dritte Praxisphase bei der ORDIX AG: Automatisierter Aufbau der Apache-Kafka-Seminarumgebung

titelbild-apache-kafka

Hallo zusammen, ich bin Simon, ein dualer Student bei der ORDIX AG. Ich studiere im fünften Semester Informatik. Seit Oktober beschäftige ich mich mit der Konzeption und Entwicklung der Apache-Kafka-Seminarumgebung. Die ORDIX AG entwickelt aktuell ein Apache-Kafka-Seminar und benötigt die Seminarumgebung als Infrastruktur für die Seminarteilnehmer.

Arbeitsalltag

Mein Arbeitsalltag hat sich in den letzten Monaten aufgrund der Covid-19-Pandemie verändert. Es werden alle Mitarbeiter der ORDIX AG dazu angehalten, möglichst von zu Hause aus zu arbeiten. Zu Beginn der Praxisphase war die Arbeit aus dem Homeoffice ungewohnt, jedoch habe ich aufgrund der fehlenden Fahrtzeit an Flexibilität gewonnen. Da ich bereits vor der Corona-Pandemie teilweise im Homeoffice arbeitete, habe ich mich schnell an die neue Situation gewöhnt. Bei der ORDIX AG dürfen sowohl Studenten als auch Praktikanten unabhängig von der Covid-19 Pandemie im Homeoffice arbeiten, da sehr viel Wert auf eigenständiges Arbeiten gelegt wird. Ich hatte regelmäßige Online-Meetings für mein Projekt als Teil des Apache-Kafka-Seminar-Projektes und zusätzliche Online-Besprechungen mit meinem Betreuer. Die kontinuierliche Absprache ermöglicht es, über den Fortschritt der Kollegen informiert zu bleiben und seine eigene Arbeit  wenn notwendig  anzupassen. Dies war für mich sehr wichtig, da sich die Umgebung, die ich entwickeln sollte, teilweise mit dem Input bzw. der Arbeit der Kollegen verändert hat.

Tools

Für die Umsetzung meines Projektes habe ich mich mit neuen und bereits bekannten Tools beschäftigt. Hierbei waren Ansible als Infrastrukturautomatisierung und Docker, eine Containertechnologie, am wichtigsten. Zusätzlich habe ich mich mit unixoiden Betriebssystemen wie Ubuntu und CentOS, GitLab CI/CD sowie Vagrant auseinandergesetzt. Während der Konzeption und Entwicklung der Umgebung hatte ich mit meinem angesammelten Wissen aus den vorherigen Praxisphasen wenig Probleme. Eine signifikante Hürde ist der Proxy und die damit verbundene Konfigurationskomplexität. Ein Proxy wird dafür genutzt, bestimmte Netzwerke zu kapseln und über einen Stellvertreter, den Proxy, nach außen zu kommunizieren. Das Projektteam hatte Mehraufwände, weil viele Tools nicht die üblichen Systemvariablen für die Proxy-Konfiguration verwenden.

Ansible ist ein Open-Source-Automatisierungstool für die Orchestrierung, Konfiguration und Administration von Infrastruktur (Hardware, VMs, Netzwerk, etc.). Mit Ansible können Dateien verteilt, Konsolen-Befehle ausgeführt und Computer konfiguriert werden. Ansible Playbooks sind modular aufgebaut, beispielsweise können verschiedene Rollen, wie die Installation von Docker oder die Desktopeinrichtung, wiederverwendet werden. Docker habe ich bereits in meinen letzten Artikeln erklärt. GitLab CI/CD steht für die Continuos Integration/Development Tools von GitLab. Hierbei können beliebige Prozesse basierend auf den sich im GitLab Repository befindenden Dateien automatisch oder manuell gestartet werden. Beispielsweise können bei einem Softwareprojekt abschließende Tests, ein kompletter Aufbau und ein anschließendes Ausrollen eingerichtet werden. Wenn ein Entwickler etwas in einem Projekt anpasst, werden beispielsweise die Tests durchgeführt und im Anschluss kann auf Wunsch der Aufbau und das Ausrollen gestartet werden. Vagrant ist ein Tool zur deklarativen Provisionierung virtueller Maschinen für diverse Virtualisierungstechnologien. Das Tool wurde von mir hauptsächlich in Kombination mit VirtualBox für die Entwicklung einer lokalen Umgebung für Testzwecke genutzt.

Kafka-SeminarUmgebung

Apache Kafka ist ein verteiltes und hochverfügbares Nachrichtensystem. In vielen Anwendungsfällen im Zusammenhang mit großen Datenmengen ist Apache Kafka sehr interessant. Wie eingangs erwähnt, plant die ORDIX AG ein Seminar für Apache Kafka anzubieten. Meine Aufgabe ist es, die Umgebung für die Seminarteilnehmer zu konzipieren und zu entwickeln. Die Umgebung baut auf Ubuntu 20.04 auf, wobei hier auch einfach Änderungen möglich sind. Mit Hilfe von Docker wird ressourcensparend ein Kafka-Cluster mit Containern aufgebaut. Auf diesem Cluster können sich die Seminarteilnehmer mit Apache Kafka im Betrieb vertraut machen. Zusätzlich können die Seminarteilnehmer Apache Kafka selbst aufsetzen, um ein besseres Grundverständnis für die Konfiguration von Apache Kafka zu erlangen. Des Weiteren beinhaltet das Endprodukt eine Monitoring-Umgebung, um bestimmte relevante Werte von Apache Kafka aufzuzeigen und eine gute visuelle Übersicht zu bieten. Die Umgebung liegt in der Cloud und kann von den Teilnehmern während des Seminars über Apache Guacamole, einem Browser-Remote-Desktop-Tool, genutzt werden.

Zu Beginn habe ich mich in die Ansible-Dokumentation eingelesen und schrittweise Tests gemacht. Zusätzlich habe ich mir einige Ansible-Einführungen angeschaut. Relativ schnell habe ich eine simple Möglichkeit gefunden, auf Windows mit Vagrant virtuelle Maschinen aufzusetzen und von Ansible einrichten zu lassen. Im weiteren Verlauf des Projektes habe ich alle Ansible Playbooks lokal mit der Vagrant VM getestet und verfeinert.

Zuerst habe ich den Aufbau des Apache-Kafka-Container-Clusters automatisiert und stetig verbessert. Inzwischen ist die Apache-Kafka-Version frei wählbar und die Node-Anzahl des Clusters kann frei bestimmt werden. Im Anschluss habe ich mich auf die Apache-Kafka-Installation für die Seminarteilnehmer konzentriert. Hierbei musste ich mir eine passende Ordnerstruktur für die Umgebung überlegen. Zusätzlich hatte ich eine Offline-Installation konzipiert, um die Umgebung auch extern bei Kunden nutzbar zu machen. Bis dahin hatte ich in einem eigenen Projekt entwickelt, es war jedoch sinnvoller, dieses in unser bestehendes Ansible-Projekt zu integrieren. Nach ein bis zwei Wochen mit kleinen Problemen und Änderungen, war die Apache-Kafka-Umgebung in ein größeres Ansible-Infrastruktur-Projekt integriert. Nach der erfolgreichen Integration und einem voll funktionstüchtigen Erstellungsprozess startete ich mit den Tests in der Cloud. Hier stolperte ich direkt über bereits erwähnte Proxy-Probleme mit Docker. Nach einer längeren Fehleranalyse mit Trial-and-Error hatte ich endlich alle Proxy Probleme beseitigt. Inzwischen läuft die Umgebung sehr stabil und wird von mir noch immer erweitert. Das kommt daher, dass das Apache-Kafka-Seminar noch in der Entwicklung ist und es immer neue Ideen gibt für beispielsweise zusätzliches Monitoring, weitere Shortcuts oder Aliase.

Abschließend kann ich sagen, dass ich mich fachlich erneut verbessert habe und weitere praktische Erfahrung sammeln konnte - während dieser Praxisphase sehr viel mit der Arbeit und Kommunikation im Team.

By accepting you will be accessing a service provided by a third-party external to https://blog.ordix.de/