RestfulSnake
Vor wenigen Monaten hatte ich eine handvoll Bewerbungsgespräche. Von „Programmieraufgaben“, die durch das Erkennen der Fibonacci-Sequenz gelöst wurden bis zu „Wie viele Grashalme gibt es in deiner Heimatstadt?“ war alles dabei. Unter anderem auch „Wir glauben, dass du noch nie Java angefasst hast, deshalb sollst du ein Programm in Java schreiben, über das wir nächste Woche reden können!“
Also bin ich jetzt Java-Experte. Und das bedeutet, dass es Zeit ist für eine weitere Snake-Version [1, 2, 3, 4, 5].
Um besonders professionell zu wirken, habe ich mich für eine Client-Server-Architektur
entschieden. Steuerkommandos werden per http
post
zum Server geschickt und in der Antwort
steht die neue Position der Schlange.
Das Backend nutzt Spring Boot und läuft auf einem Tomcat Server. Das
Frontend besteht hauptsächlich aus dem Visualisierungs-Code von jsnake,
aber echte Nerds werden es natürlich bevorzugen per curl zu spielen.
Normalerweise würde man es natürlich mittels Kubernetes und Docker auf AWS laufen lassen, aber stattdessen habe ich mich dafür entschieden Heroku zu nutzen, um ein kleines Unternehmen zu unterstützen. Auf multijsnake.herokuapp.com kann man also eine Partie spielen. Und die Quellen liegen wie immer auf GitHub
Überraschenderweise funktioniert das tatsächlich erstaunlich gut — solange die Latenz unter ~150 ms bleibt. Und dieses Design schreit geradezu nach einen Multiplayer-Modus…