Az/Place

In den letzten 14 Tagen habe Ich mit ein paar anderen Azubis an einem Projekt gearbeitet, bei dem es sich um einen r/place Klon handelt. Wir haben schon einige Male Projekte durchgef├╝hrt, allerdings sind wir dieses Mal deutlich vorbereiteter an das Projekt rangegangen. Au├čerdem ist dies auch unser erstes Projekt gewesen, bei welchem wir Skalierung mittels Kubernetes einsetzen.

Das Projekt ist in drei Services aufgeteilt, von denen zwei das Backend darstellen und einer das Frontend. Zus├Ątzlich zu den eigenen Services wir au├čerdem ein MariaDB, Redis und ElasticSearch verwendet, um z.B. Pixeldaten und Logs zu persistieren.

Nat├╝rlich w├╝rde ich hier auch gerne ein paar Screenshots einbauen, da wir gerade noch in einer Testphase sind und dementsprechend auch noch nicht alles funktionst├╝chtig ist, werde ich diese bei Zeiten nachreichen.

Backend-Aufbau

Das Backend von Az/Place ist wie bereits erw├Ąhnt auf zwei Services verteilt, ein REST-Service und ein WebSocket-Server. Der WebSocket-Server hat alleine die Aufgabe die Nutzer ├╝ber neu platzierte Pixel zu informieren, wohingegen der REST-Service noch einige andere T├Ątigkeiten ├╝bernimmt.

Zu den Hauptt├Ątigkeiten des REST-Services z├Ąhlen selbstverst├Ąndlich das Platzieren von Pixeln und das Abfragen des gesamten Boards. Der Service allerdings auch die Nutzervalidierung (die Authentifizierung wird ├╝ber ein CAS durchgef├╝hrt) und bietet unter Anderem auch die M├Âglichkeit Nutzer bei Bedarf tempor├Ąr zu sperren, die Farbpaletten anzupassen oder Statistiken ├╝ber das Board zu erhalten.

Frontend

Das Frontend stellt einerseits das Board da und bietet die M├Âglichkeit sich anzumelden, andererseits werden hier auch die vom WebSocket-Server gesendeten Daten verarbeitet und live dargestellt.

Server-Architektur

Wie bereits erw├Ąhnt kam in diesem Projekt Kubernetes zum Einsatz, weshalb alle Services auch als Docker-Image verf├╝gbar sind. Das Kubernetes-Cluster verf├╝gt derzeit unter Anderem ├╝ber ein Fluentd, einen Vault, ein Traefik sowie einen CertManager.

Der Traefik ist f├╝r s├Ąmtlich Services als IngressController eingerichtet und ├╝bernimmt auch die Verteilung der Zertifikate. Da wir die meisten Teile im Internen Netzwerk verwenden, kommen dort eigene Zertifikate zum Einsatz. F├╝r die externen Services wiederum werden Mittels CertManager Lets-Encrypt Zertifikate generiert und automatisch aktualisiert.

F├╝r unsere Services haben wir zus├Ątzlich zu den Docker-Images auch noch Helm-Charts ├╝ber eine GitHub Action automatisch deployed und ├╝ber den Vault mit Secrets versorgt werden. Auch viele der anderen Services sind mit Hilfe eines Helm-Charts deployed worden.

Feature-Set

In der derzeitigen Version (1.0.0) kann man Pixel Platzieren, sehen wer den Pixel zuletzt ├╝bermalt hat und bekommt den Cooldown im Frontend angezeigt. ├ťber das Backend haben wir unter Anderem auch die M├Âglichkeit bei Bedarf die Gr├Â├če des Boards anzupassen, sowie den Cooldown zu verl├Ąngern oder zu verk├╝rzen.

Fazit

Auf Grund der vielen Dependencies ist es leider etwas schwerer az/place einzurichten, in der Theorie kann das Projekt aber von jedem eingerichtet und verwendet werden. Die derzeitige Version ist allerdings noch etwas instabil, aber wird vermutlich in den n├Ąchsten Wochen noch etwas verbessert. In zuk├╝nftigen Versionen wird hoffentlich auch die Einrichtung einfacher und einige Dependencies optional.

Repositories

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht ver├Âffentlicht. Erforderliche Felder sind mit * markiert.

Meinen Namen, meine E-Mail-Adresse und meine Website in diesem Browser speichern, bis ich wieder kommentiere.