JCroft

- the new AGDSN user management system -

Java Lizenzen

- eine kurze Aufklärung in der Welt der Mythen -

Java Lizenzen?

  • Humbug!

  • Oracle bietet lediglich für OracleJDK Lizenzen an
    • diese sind allerdings nicht für Updates, sondern für Enterprise Support
    • ABER: Diese Lizenzen gibt es schon seit eh und je
    • wer Enterprise Support haben will, musste schon immer zahlen, ansonsten gibt es eben nur Community Support
  • OpenJDK bleibt für immer komplett kostenlos

Warum?

  • Die Oracle Devs arbeiten im OpenJDK Repository

  • --> das OracleJDK ist mittlerweile fast nur noch ein Klon des OpenJDK
  • --> für Oracle macht es keinen Sinn mehr 2 JDK's anzubieten, nur unnötige Kosten
  • außerdem: OpenJDK steht unter GPL 2 Lizenz

 

Und:

Bei Python erhält man auch nur Community Support und keinen Enterprise Support

--> brauchen wir nicht

Java 10, Java 11, ...

  • hat sich auf neues Release-Modell geeinigt

  • Mark Reinhold (Chef Architekt der Java Platform) will Java schneller releasen um schneller die Anforderungen der Wirtschaft erfüllen zu können

  • Grund war vorallem die vom Java EC lange blockierte Einführung von Jigsaw (dem Java 9 Modulsystem) --> hat Java 9 Release weit hinausgezögert

  • Oracle will jetzt halbjährlich eine neue Java Version releasen

Das Problem

  • Wenn man halbjährlich eine neue Version released, "kostet" Long-Term-Support wesentlich mehr (in 3 Jahren müsste man alleine 6 neue Versionen supporten)

    • --> deutlich hoher Aufwand

  • Folglich wird nicht mehr jede Java Version einen LTS Release haben, sondern nur etwa jede 3. - 4. Version
  • Damit ändert sich aber auch nur relativ wenig zu jetzt

 

"Oracle will provide Java builds based on OpenJDK for free which can be use in production"

Fazit

  • Wir nehmen wie bisher einfach das OpenJDK und haben keinerlei Probleme

  • desweiteren ist es in unserem eigenen Interesse JCroft regelmäßig auf die neueste Java Version zu updaten

    • dies sollte auch kein Problem sein, da abgesehen von Java 9 alle Versionen immer abwärtskompatibel sind

Berechtigungssystem

Berechtigungssystem

  • Power Berechtigungssystem
  • an phpBB3 & Teamspeak angelehnt (Pycroft ist ebenfalls an phpBB3 angelehnt)
  • kann nicht nur abbilden, ob jemand das Recht hat, sondern führt zuätzlich eine sog. "Power" ein.
  • z.B. gibt es die Berechtigung "kann Nutzer ändern" bei Pycroft
    • Problem: Aktive Nutzer könnten auch Roots editieren, Passwort ändern, einloggen und sich selbst zum Root machen
    • Lösung: verschiedene Powers, der Nutzer 1 mit Power 100 kann keine Nutzer mit Power 400 (Roots) ändern

DSGVO
- privacy by design -

 

Privacy by design

  • DSGVO fordert "privacy by design"
  • d.h. bereits auf technischer Ebene muss der Datenschutz Anwendung finden
    • z.B. durch saubere Trennung der Daten
  • bei uns gibt es eine komplette Daten-Trennung, so muss z.B. ein Mitglied keine Adresse mehr angeben, jemand der Internet will, aber schon
    • --> Auftrennung zwischen Mitgliedschaft und deren Services
  • Nutzerverwalter sollten nur mit den Daten zu tun haben, die sie auch wirklich brauchen

Event-based Updates

Finanzdaten

Skalierbarkeit

- High Availability -

Skalierbarkeit

  • da sowohl Pycroft als auch JCroft im Mittelpunkt unserer Systemlandschaft stehen würden, ist eine hohe Ausfallsicherheit von absoluter Bedeutung
  • Worst Case ohne Skalierbarkeit:
    Nichts geht mehr, kein Switch könnte mehr einen Nutzer authentifizieren usw. --> das ganze Internet ist down

Die Lösung

  • unser System ist horizontal skalierbar (dank Hazelcast)
  • es kann mehrere Instanzen von JCroft geben, die ausfallen können
    (genau genommen könnten alle ausfallen bis auf eine)
  • Transactions & Synchronität wird von Spring Hibernate & Hazelcast garantiert
  • Hazelcast soll laut einigen amerikanischen, universitäten Studien die derzeit schnellste NoSQL Datenbank auf dem Markt sein

Ausfall PostGreSQL Cluster

  • erst in diesem Jahr kam es vor, dass das ganze PostGreSQL Cluster ausgefallen ist (Worst Case)
  • unsere Software könnte dank denen im Cache gehaltenen Daten erst einmal weiterarbeiten und Daten ausliefern
  • --> kein Komplettausfall der gesamten Infrastruktur, da häufig nachgefragte Daten noch im Second Level Cache
  • --> System ist gegen viele Ausfälle gehärtet

Kurze Entwicklungszeit

Kurze Entwicklungszeit

  • der Grund für "never ending Storys" ist meist eine Softwarearchitektur, die nicht mehr gut "wartbar" ist
  • als "wartbar" wird eine Software bezeichnet, wenn es innerhalb geringer Zeit gut möglich ist neue Erweiterungen zu implementieren
  • dem gegenüber stehen sog. "technische Schulden":
    Je mehr technische Schulden ein System hat, umso weniger wartbar ist es

Kurze Entwicklungszeit

  • technischen Schulden nehmen über die Jahre immer mehr zu --> Entwicklungsgeschwindigkeit sinkt immer mehr ab
  • --> eine Neuentwicklung hat meist nicht so viele technische Schulden und kommt daher einfach wesentlich schneller voran

Dokumentation

Dokumentation

  • JCroft hatte schon vom ersten Tag an im Wiki mehr Dokumentation wie Pycroft
  • ohne gute Dokumentation ist der Einstieg für neue extrem schwer
  • Komplette Build-Anleitung
  • Informatik Studenten müssen bereits im SWT 2 Praktikum zu 98% mit Java & Spring arbeiten --> fast jeder der Informatik Studenten sollten das System einfach verstehen und erweitern können

JCroft - der Traum eines jeden Nutzerverwalters

JCroft

By Justin Künzel