Portal für viele Benutzer

Hallo zusammen,

ich sitze an einem ähnlichen Projekt wie ich es schon mal hatte, damals haben wir es in Java EE geschrieben und wie folgt aufgesetzt:

  • jeder Kunde hat einen eigenen vServer bekommen und sein eigenes deploytes .war File
    Nachteile: übel viel Admin Aufwand, bei Updates, OS Updates etc

Nun will ich das etwas anders aufbauen, sodass es eine Website für alle gibt und jeder Kunde seine eigene Datenbank(?)

Ähnlichkeit hat das Ganze mit einer Online-Buchhaltung wie Sevdesk oder so, da wird vermutlich jeder Mandant seine eigene DB haben, damit sich da nichts vermischt mit anderen Kunde usw.

Welche Varianten gäbe es noch, sowas aufzubauen die leicht wartbar und relativ schnell umsetzbar sind?

Als Framework sollte auf jeden Fall Spring Boot im Einsatz sein, da es schön einfach REST usw anbietet

Glaube der Ansatz mit mehreren Datenbanken und einer Software ist schon für das Szenario ganz gut.

Einfach Spring Data Multitenancy Support mit multiplen Datenbanken.

Vorne ein Reverse Proxy, der über Namend hosts den entsprechenden Tenant setzt.

Mit passender Umsetzung ist das nicht mehr Aufwand, als die „Eine Anwendung, mehrere Datenbanken“-Variante.
Eine Möglichkeit wären Container, zB Docker, pro Mandat wird dann Server+Datenbank in passender Konfiguration gestartet. Alternativ statt Containern VMs, mit passenden Tools ist das auch nicht mehr Aufwand.

Einzelne Kunden sind dann gänzlich unabhängig, das ganze skaliert besser, man hält den Aufwand dafür aus der Anwendung raus.

Danke an Docker dachte ich auch schon, aber möchte das ganze automatisieren, nachbezahlend bekommt man direkt Zugang, wüsste nicht wie man das automatisiert

Man bräuchte einen “Registrierungs-Portal”, das legt dann die entsprechende Config an und startet die Services. Vor den Services sitzt dann ein Reverse-Proxy, der die Anfragen an den passenden Service weiter leitet.

Würde mich wundern, wenn es dafür nicht irgendeine Lib gibt, die entweder das passende bietet oder passende Ansätze liefert.

Diese Docker Geschichte finde ich immer interessanter…ABER das ist doch aufwändiger, wenn die darin laufende Applikation updates bekommt, dann müssen alle (sagen wir 50) Container sich updaten oder wie läuft das ab?

also wir haben allein in der Entwicklung 50 Container laufen.

Also viel ist das nicht.

How ever: Die Lösung mit dem Docker hat ja gerade den Vorteil, dass du hier die Versionen nicht alle gleichzeitig hoch setzen musst.
Also ich gehe davon aus, dass ein Image alles zum Laufen beinhaltet und keine Multi Tenant DB vorliegt.

Wenn der Aufwand mit der Anzahl der Container steigt, hat man irgendwas falsch gemacht :wink:

Ob bei einem Update eine Applikation oder 50 Container neu gebaut und deployed werden, ist kein Unterschied im Aufwand den man jeweils betreiben muss.
Im Idealfall ist das nur ein Commit, nach welchem der CI-Server alles neu baut und Deployed.

Guten Morgen zusammen,

muss das mal mit meinen Servermann Besprechen.

Vor und Nachteile zwischen microservices und docker Variante sind mir noch nicht ganz klar.

Mit der docker Variante bekäme jeder User seine eigene applikation mit eigenem frontend, bei microservices würden alle das selbe nutzen nur jeder hätte seine eigene DB, soweit richtig?

Meine CI Tool würde ein Image bauen, was sich die jeweilige docker Instanz selber ziehen und updaten kann? Was braucht das für Hardware, wenn angenommen 50 Container mit MySQL, mysqldumper laufen sollen?

Docker macht die Sache in der Entwicklung einfacher, man muss immer nur an einen User denken und nicht die tenants bedenken. Wenn jetzt ein User Spezialprogrammierung bekommt, geht mit docker besser oder?

Edit: zu meinem Verständnis:
Es gibt einen Dockerserver welche die 50 Images bereit stellt korrekt?

Hab noch nie mit Docker-Container gearbeitet - aber bei uns in der Firma mal einen “Crashkurs” bekommen. Für sowas kannst du wohl https://kubernetes.io/ einsetzen. Ich glaube dass das was sein könnte, was du suchst.