
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
JCroft
- 127