Puzzle Skills

Es ist Montagmorgen und ich kämpfe mit einem MySQL-Problem. Ich habe schon alle StackOverflow-Threads gelesen und jede noch so unklare Dokumentation durchforstet. Nun frage ich mich: “Wer kann mir denn hier überhaupt noch helfen?”

Bei inzwischen 144 Members ist es schwierig einfach so herauszufinden, wer im Bereich MySQL richtig gut Bescheid weiss. Klar, ich könnte durch die Gänge unserer Büros laufen und die Members höchstpersönlich fragen. Zurzeit ist dies wegen der COVID-Lage und der remote-Arbeit jedoch ziemlich schwierig und die Zeit sowie der Aufwand sind dabei auch nicht zu vernachlässigen.

Hier kommt unsere PuzzleSkills-Applikation ins Spiel.

Wir benutzen PuzzleSkills einerseits als CV-Tool für Members, die in Mandaten arbeiten und andererseits um den Überblick über die Skills unserer Member zu verwalten (und behalten).

PuzzleSkills löst mein Montagmorgen-Problem perfekt. Ich kann in der Skill-Suche „MySQL“ auswählen und kriege auf einen Blick alle Members aufgelistet, die diese Skills besitzen. Zudem sieht man auch, wie sie sich im ausgewählten Skill selber bewertet haben. In der Version 4.3.0 kann ich sogar eine Mindestbewertung festlegen, so dass mir nur die Top-MySQL-Profis angezeigt werden.

Open Source

Seit Oktober 2016 ist PuzzleSkills Open Source. Als ich von der Universität Bern ein Praktikum bei Puzzle machen durfte, war das “opensourcen” von PuzzleSkills unsere erste Aufgabe.

Seit jeher ist das Projekt auf Github für alle unter der Lizenz APGL 3.0. verfügbar.

Bei einem Open Source Projekt steht nicht nur die einfache Zusammenarbeit im Vordergrund. Will jemand etwas zum Projekt beitragen, kann er die dokumentierten Regeln durchlesen und sich direkt an einen Pull-Request setzen.

Auch dieses Jahr konnten wir wieder ein motiviertes Team der Universität Bern am Projekt PuzzleSkills arbeiten lassen. Es konnten einige sehr coole Features umgesetzt werden.

Insgesamt haben in den letzten Jahren schon 19 interne und externe EntwicklerInnen zum Fortschritt von PuzzleSkills beigetragen.

Seit neustem gibt es ein PuzzleSkills-Image auf Dockerhub.

Übrigens: Dank OpenSource und Github’s letztem Projekt ist unser PuzzleSkills nun auch im ewigen Eis gesichert, cool 😉

Quelle:  https://github.blog/2020-07-16-github-archive-program-the-journey-of-the-worlds-open-source-code-to-the-arctic/

Moderner Ruby on Rails Stack

Mit einem Ruby on Rails Backend und einem EmberJS Frontend sind wir mit sehr modernen Technologien am Start. Um sicherzustellen, dass wir nicht zurückfallen oder hängen bleiben, prüfen wir regelmässig der Stand unserer Tools.

Zur Zeitpunkt der Veröffentlichung dieses Blogposts läuft PuzzleSkills auf Ruby on Rails 6.0.1 und Ember-Cli 3.15.2 mit den neusten Octane Features. Rails dient in unserem Fall als REST API und liefert die Daten an unser Ember Frontend.

Zudem kümmern wir uns um die Sicherheit der Applikation, in dem wir die automatischen Security-Patches von Dependabot über GitHub regelmässig reviewen und anwenden.

Des Weiteren lässt Travis alle unsere Frontend- sowie Backend-Tests und auch den Rubocop durchlaufen und gibt uns das entsprechende „Go“ für Pull-Requests. Weiter läuft Brakeman über Travis. Dieser prüft unsere Applikation auf Sicherheitslücken.

Keycloak

Keycloak ist ein weiterer Baustein, welcher zur Sicherheit unseres Tools beiträgt. Keycloak ist ein SSO-Service, also Single-Sign-On. Bevor irgendetwas auf PuzzleSkills geschieht, müssen sich die Nutzer per Keycloak identifizieren und authorisieren.

Das Tolle daran ist, dass bereits mehrere unserer Applikationen über Keycloak laufen und sich die Nutzer am Morgen in nur einer Applikation einloggen müssen. Daher stammt auch der Begriff Single-Sign-On :smile:.

In PuzzleSkills läuft Keycloak im Frontend sowie auch im Backend. Wenn das Frontend einen API-Call zum Backend macht, schickt es jeweils immer einen JWT (JSON Web Token) mit, welchen das Backend mittels Public-Key des Puzzle-Keycloak Servers überprüft. Somit ist die Authentifizierung in Frontend und Backend sichergestellt.

2 Kommentare

  • Peter, 16. September 2020

    So ein Tool macht doch Sinn, in einem Intranet abzubilden. Also als Modul, das man in ein Ruby CMS oder Website-Framework einbinden kann.

    Ein Screencast (Video) als Demo im README wäre noch cool. Damit man den Featureumfang besser erahnen kann. Looking forward to it!

    Wirklich eine sinnvolle Idee, dieses Tool. Kompliment!

  • mm
    Jenny Hashim, 16. September 2020

    Hallo Peter

    Coole Idee! Vielen Dank für den Input, nehmen wir gleich als Feature Request auf. Sunnigi Grüess