Microservice Projekt verwalten

Schuriko

Bekanntes Mitglied
Ich möchte ein kleines Microservice Projekt realisieren. Mein Testprojekt soll aus den Services

- registrieren
- anmelden
- katalog anfordern
- buchen
- bezahlen

bestehen. Muss ich jetzt für den Service einen eigenes Projekt aufstellen oder kann man es auch in einem Projekt realisieren?
BTW ich arbeite mit der Eclipse IDE
 

LimDul

Top Contributor
Wenn es ein Projekt ist, ist kein Microservice (zumindest nach reiner Leerer)

Ein Microservice ist unabhängig von anderen, daher sollten sie unterschiedliche Projekte sein. Den es soll ohne Probleme möglich sein, dass verschiedene Teams sich um verschiedene Microservices kümmern.
 

kneitzel

Top Contributor
Und Funktionalitäten, die zusammen gehören, sollte man zusammen lassen. Du machst nicht für jeden möglichen Request einen eigenen Microservice.

Also z.B. hört es sich so an, als ob registrieren und anmelden zusammen gehören - als das, was ich User Verwaltung nennen würde.
 

Schuriko

Bekanntes Mitglied
Wenn es ein Projekt ist, ist kein Microservice (zumindest nach reiner Leerer)

Ein Microservice ist unabhängig von anderen, daher sollten sie unterschiedliche Projekte sein. Den es soll ohne Probleme möglich sein, dass verschiedene Teams sich um verschiedene Microservices kümmern.
Ja, genau, deshalb frage ich mich gerad wie man diese ggf. zusammenhalten kann? Deshalb wäre es ja an und für sich nicht schlecht es in einem Projekt zu halten - so zumindest meine Überlegung. Aber ansonsten gebe ich dir voll und ganz recht.
 

Schuriko

Bekanntes Mitglied
Und Funktionalitäten, die zusammen gehören, sollte man zusammen lassen. Du machst nicht für jeden möglichen Request einen eigenen Microservice.

Also z.B. hört es sich so an, als ob registrieren und anmelden zusammen gehören - als das, was ich User Verwaltung nennen würde.
Vom Prinzip ja, aber anmelden wird zig mal durchgeführt wird und registrierung nur einmal. (Immer pro User gesehen)
 

LimDul

Top Contributor
Vom Prinzip ja, aber anmelden wird zig mal durchgeführt wird und registrierung nur einmal. (Immer pro User gesehen)
Darum geht es ja nicht. Es geht darum, dass ein Microservice eine abgeschlossene Funktionalität hat, die für sich alleine Nutzen hat. Die für sich vollständig beschreibbar ist. Die jemand alleine - ohne (größere) Absprache mit Personen, die andere Microservices entwickeln kann.

Sie sollten auch eigene Datenhaltungen haben - sofern sie überhaupt Daten halten.
 

kneitzel

Top Contributor
Sie sollten auch eigene Datenhaltungen haben - sofern sie überhaupt Daten halten.
Das ist der ganz entscheidende Punkt!
- Ein User registriert sich: Wo landen denn die Daten? Doch wohl in dem Datenpool, in dem auch ist:
- Ein User meldet sich an.

Ist ja klar: Der User, der sich registriert hat, will sich danach ja dann auch anmelden.
 

kneitzel

Top Contributor
Und den anderen Punkt Zusammenarbeit:

Die Projekte sollen getrennt sein. Aber natürlich kann es Abhängigkeiten untereinander geben. Da geht es aber um Zugriffe auf die definierte API.

Daher macht es z.B. Sinn, die API als erstes festzulegen. Swagger bietet sich da z.B. an.
 

Schuriko

Bekanntes Mitglied
Darum geht es ja nicht. Es geht darum, dass ein Microservice eine abgeschlossene Funktionalität hat, die für sich alleine Nutzen hat. Die für sich vollständig beschreibbar ist. Die jemand alleine - ohne (größere) Absprache mit Personen, die andere Microservices entwickeln kann.

Sie sollten auch eigene Datenhaltungen haben - sofern sie überhaupt Daten halten.
Okay. Wie würdest du es denn realisieren, wenn ein Datenbestand von einem anderen Datenbestand abhängig ist. In meinem obigen Beispiel z.B. muss "Buchen" wissen, wer (User) was (Katalog) gebucht hat.
 

LimDul

Top Contributor
Dann greift der über Services darauf zu.

Aber beschreib doch mal deinem Microservice "Buchen". Welche Funktionalität stellt der nach außen bereit?
 

Schuriko

Bekanntes Mitglied
Aber beschreib doch mal deinem Microservice "Buchen". Welche Funktionalität stellt der nach außen bereit?
Kunde (User) sucht aus einem Katalog irgendetwas aus. Meldet sich an, bzw. wenn er nicht regisitriert ist, dann muss er sich vorher registrieren und bucht (kauft) dann aus dem Katalog das gewünschte Produkt.

Dann greift der über Services darauf zu.
Aber bei getreten Datenhaltung. Hier ein Beispiel soweit ich dich verstanden habe. N User sind über einer Tabelle auf N Datenbanken verteilt greifen auf N Produkte aus N Kataltogen auf N Datenbanken zu.
 
Zuletzt bearbeitet:

LimDul

Top Contributor
Kunde (User) sucht aus einem Katalog irgendetwas aus. Meldet sich an, bzw. wenn er nicht regisitriert ist, dann muss er sich vorher registrieren und bucht (kauft) dann aus dem Katalog das gewünschte Produkt.
Das ist keine Service Beschreibung. Sondern eine Operation.

Ein Service bietet Funktionalität und einen Business Case. Es geht um die Beschreibung deines "Buchen" Services. Da dürfen keine Dinge vorkommen, die in der Hoheit anderer Services liegen. Es muss lose gekoppelt sein und seine eigene Identität haben.

Buchen klingt für mich nicht nach einem Service sondern nach einer Operation in einem Service.

Du läufst gefühlt gerade hier rein: http://chrisrichardson.net/post/antipatterns/2019/05/21/antipattern-more-the-merrier.html :)
 

LimDul

Top Contributor
Mal so in den Raum gesponnen, ich würde da maximal drei Services sehen:;

User-Service: Kümmert sich um die gesamte User-Verwaltung, Anmeldung, Registrierung, Dinge wie Passwort vergessen etc.

Zahlungs-Service: Kümmert sich um die Zahlung und die Kommunikation mit einem externen Zahlungsdienstleister (egal ob Paypal, Stripe, Klarna, etc.)

Buchungs-Service: Kümmert sich um das gesamte Buchungszeug

Das heißt z.B. der User-Service braucht definitiv keinerlei Informationen vom Rest.
Der Buchungs-Service braucht auch nicht unbedingt den User-Service, er braucht Informationen wer da buchen will. Ob der User authentifiziert ist oder nicht ist ihm egal. E
Der Zahlungs-Service braucht die Informationen die nötig sind, um eine Zahlung abzuwickeln - er muss nicht zwangsweise wissen was exakt bezahlt wird.
 

Schuriko

Bekanntes Mitglied
Das heißt z.B. der User-Service braucht definitiv keinerlei Informationen vom Rest.
Okay das stimmt
Der Buchungs-Service braucht auch nicht unbedingt den User-Service, er braucht Informationen wer da buchen will. Ob der User authentifiziert ist oder nicht ist ihm egal. E
Dieses Verstehe ich gerade gar nicht, denn der Buchungsservice muss doch wissen von welchem User was gebucht wird, oder verstehe ich da gerad etwas falsch?

Der Zahlungs-Service braucht die Informationen die nötig sind, um eine Zahlung abzuwickeln - er muss nicht zwangsweise wissen was exakt bezahlt wird.
Der Zahlungs-Service muss schon wissen, was gezahlt werden muss und von wem. Oder scherzhaft ausgedrückt. Ich zahle doch nicht deine Rechnung für Sachen, die du gar nicht bestellt hast. :D :D :D
 

LimDul

Top Contributor
Okay das stimmt

Dieses Verstehe ich gerade gar nicht, denn der Buchungsservice muss doch wissen von welchem User was gebucht wird, oder verstehe ich da gerad etwas falsch?
Er muss eine User-Information bekommen. Aber wo diese Information herkommt, ist ihm egal. Das heißt, der bekommt vielleicht eine User-ID oder User-Namen.

Der Zahlungs-Service muss schon wissen, was gezahlt werden muss und von wem. Oder scherzhaft ausgedrückt. Ich zahle doch nicht deine Rechnung für Sachen, die du gar nicht bestellt hast. :D :D :D
Doch, für den Zahlungsservice ist das egal. Der braucht Informationen darüber was er auf der Rechnung anzeigen soll. Ob da gebucht wurde oder wo immer die Information herstammt - ist ihm egal.
 

LimDul

Top Contributor
Das ist meines Erachtens Fluch & Segen von Microservices. Einerseits sind schön gekapselt und in sich konsistent.

Ein Buchunggservice interessiert sich ob und wie ein User authentifiziert wurde - da ist wer anders für zuständig.
Ein Zahlungsservice interessiert sich dafür, ob das wirklich verbindlich gebucht wurde - da ist wer anders für zuständig.

Das macht die Services selber managebar. Aber dafür ist managen "Wer ist eigentlich für was zuständig" und "was ist eigentlich der richtige Schnitt" aufwendiger.
 

LimDul

Top Contributor
Was auch noch nicht wichtig ist - es gibt keine Methode, die dazu führt, dass Komplexität verschwindet. Microservices lassen Komplexität, die es bei einem Monolithen existiert nicht verschwinden. Sie wird nur auf andere Ebenen transformiert, wo sie (hoffentlich) managebarer ist - aber sie ist immer noch da.
 

mrBrown

Super-Moderator
Mitarbeiter
Also z.B. hört es sich so an, als ob registrieren und anmelden zusammen gehören - als das, was ich User Verwaltung nennen würde.
User-Service: Kümmert sich um die gesamte User-Verwaltung, Anmeldung, Registrierung, Dinge wie Passwort vergessen etc.

Das kann man auch anders schneiden, User-Verwaltung und Anmeldung sind relativ gut trennenbar und beides ist (im wesentlichen) getrennt voneinander nutzbar.
Ein Service kümmert sich um Registrieren, Passwort-Vergessen, Nutzer-Profil-Verwaltung etc, das ist in sich geschlossen und allein entwickelbar. Das, was zum Anmelden nötig ist (Nutzername, Passwort, Rollen, etc) veröffentlicht der direkt per Event an andere Services.
Und ein andere Service ist für's reine Anmelden da, der hält selbst Nutzernamen, Passwörter etc, und ist damit nicht von anderen Services abhängig, und kümmert sich nur um Authentifizierung.
 

LimDul

Top Contributor
Das kann man auch anders schneiden, User-Verwaltung und Anmeldung sind relativ gut trennenbar und beides ist (im wesentlichen) getrennt voneinander nutzbar.
Ein Service kümmert sich um Registrieren, Passwort-Vergessen, Nutzer-Profil-Verwaltung etc, das ist in sich geschlossen und allein entwickelbar. Das, was zum Anmelden nötig ist (Nutzername, Passwort, Rollen, etc) veröffentlicht der direkt per Event an andere Services.
Und ein andere Service ist für's reine Anmelden da, der hält selbst Nutzernamen, Passwörter etc, und ist damit nicht von anderen Services abhängig, und kümmert sich nur um Authentifizierung.
ich zitiere mich selber
und "was ist eigentlich der richtige Schnitt" aufwendiger.
:D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
alinakeineAhnungv Hilfe bei einem Straßenbahn-Projekt von mir Allgemeine Java-Themen 18
O community projekt Allgemeine Java-Themen 9
T Projekt baut nicht mehr/lässt sich nicht mehr ausführen Allgemeine Java-Themen 6
pkm Warnungen in einem Drools-Projekt unterdrücken? Allgemeine Java-Themen 1
platofan23 Wie .txtDatei im Java Eclipse-Projekt bzw. in der Jar speichern? Allgemeine Java-Themen 7
O Suche Unterstützung für ein OpenSource-Projekt (grafischer Editor) Allgemeine Java-Themen 13
DonMalte Ambitioniertes Projekt für Einsteiger & Motivierte Allgemeine Java-Themen 0
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
B Problem zu einem Java Projekt Allgemeine Java-Themen 6
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
M Brainstorming für mein Projekt Allgemeine Java-Themen 30
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
J Alle Unit Tests in Maven Modul Projekt ausführen Allgemeine Java-Themen 7
xYurisha Eclipse, Projekt beschädigt! Allgemeine Java-Themen 6
P BlueJ BlueJ Gloop City Projekt Allgemeine Java-Themen 0
R Praktikums Projekt Java vs MySQL Allgemeine Java-Themen 91
H Projekt Quadraturverfahren Rechner Allgemeine Java-Themen 2
S WebApplikation Projekt in Firma Allgemeine Java-Themen 2
S Eclipse Github Projekt in eigenes Projekt einbinden und nutzen Allgemeine Java-Themen 13
T iText mit eclipse richtig in Java-Projekt einbinden Allgemeine Java-Themen 2
J Java Projekt, Online-Datenabfrage, Visualisierung Allgemeine Java-Themen 3
markuskat Erste Schritte JavaEE WebApplication - Erstes Projekt Allgemeine Java-Themen 16
O Compiler-Fehler Wie kompiliere ich dieses Alt-Projekt ? Allgemeine Java-Themen 9
P Eclipse Projekt anlegen macht Problem Allgemeine Java-Themen 1
N Eclipse Projekt von GitHub in bestehendes Projekt einbinden Allgemeine Java-Themen 13
G Mein PDF Projekt mit iText Allgemeine Java-Themen 2
S Kleines Projekt Allgemeine Java-Themen 2
S Best Practice Brauche eine Idee für eine Java Projekt! Allgemeine Java-Themen 11
M Maven Dependency aus Projekt nicht aus Repo Allgemeine Java-Themen 3
S Erstes größeres Java Projekt: Etiketten Allgemeine Java-Themen 3
M Eclipse libgcrypt für window in java Projekt einbinden Allgemeine Java-Themen 1
N Kleines GUI/Sortier Projekt für die Uni Allgemeine Java-Themen 11
M Eclipse Eine xhtml aus einem JSF Projekt starten Allgemeine Java-Themen 2
A Android App Projekt Allgemeine Java-Themen 0
I Zu zweit an einem Projekt? Allgemeine Java-Themen 1
M SQL Datenbank in JAVA Projekt Allgemeine Java-Themen 3
U BlueJ NXT Projekt programmieren Allgemeine Java-Themen 0
C Projekt Realisierung Allgemeine Java-Themen 7
J C++ Projekt (QT) in Java mit Klassen (nicht imperativ) nutzen (BridJ? JavaCPP? SWIG? JNA? JNI?) Allgemeine Java-Themen 2
A Ausführbare Java-Datei aus Projekt und Datenbank Allgemeine Java-Themen 3
K Code zu einem Projekt entschluesseln Allgemeine Java-Themen 15
A mini Projekt Allgemeine Java-Themen 4
U Eclipse Java Projekt - Webservice einbinden Allgemeine Java-Themen 7
I Projekt wird nicht erstellt Allgemeine Java-Themen 2
R Aus Eclipse Projekt ein UML erzeugen Allgemeine Java-Themen 3
V System.out.println an jeder Stelle im Projekt löschen Allgemeine Java-Themen 4
M JSF-Projekt, Datasourceproblem Allgemeine Java-Themen 7
B Großes Projekt "gut" schreiben Allgemeine Java-Themen 22
maestr0 Programmatische Java Projekt Erstellung Allgemeine Java-Themen 2
J Projekt mit mehreren Einzelprogrammen Allgemeine Java-Themen 2
P Ant oder Dynamic Web Projekt Allgemeine Java-Themen 3
Kenan89 Riesen Java Projekt Allgemeine Java-Themen 10
127.0.0.1 Subversion neues SVN Projekt, keine Main gefunden ?! Allgemeine Java-Themen 7
S Compiler-Fehler Providing JavaCompiler within Projekt Allgemeine Java-Themen 10
P Eclipse Gemeinsam mit NetBeans an einem Projekt arbeiten? Allgemeine Java-Themen 3
T HTTP HttpWebRequest in Swing-Projekt nutzen Allgemeine Java-Themen 4
S .Classpath Datei im Eclipse Projekt Allgemeine Java-Themen 7
Ollek MVC - Anwendung auf mein Projekt Allgemeine Java-Themen 18
J Herangehensweise an ein Projekt? Allgemeine Java-Themen 11
N Hilfe bei Projekt Allgemeine Java-Themen 5
M Suche Java-Projekt zum Thema Elektrotechnik Allgemeine Java-Themen 6
A Java Projekt (Daten Eingeben, Speichern und in Listen Ausgeben) Allgemeine Java-Themen 6
M Erstes eigenes Projekt Allgemeine Java-Themen 5
C Architekturvorschläge für kleines Projekt Allgemeine Java-Themen 2
Y Notenbuch - Projekt Allgemeine Java-Themen 56
N php projekt in java importieren Allgemeine Java-Themen 4
E Neues Projekt - Welche GUI / IDE /Techniken / etc. Allgemeine Java-Themen 14
J Open Source Projekt anbieten - Leitfaden gesucht Allgemeine Java-Themen 3
N Idee für Java Projekt Allgemeine Java-Themen 30
M GoogleMaps mit Projekt verknüpfen Allgemeine Java-Themen 7
Y Auszuführendem Projekt mehr Speicherplatz zuweisen Allgemeine Java-Themen 3
S Umstellen Java-Projekt zum Web-Projekt Allgemeine Java-Themen 3
B Komplettes Projekt als UML Diagramm mit eUML...geht das? Allgemeine Java-Themen 10
P Projekt-Export Allgemeine Java-Themen 10
D eclipse projekt ohne eclipse ausführen? Allgemeine Java-Themen 14
P Jar-export funktioniert nur bei einem projekt nicht Allgemeine Java-Themen 5
S brauche dringend help bei einem projekt (Römisch-dezimal) Allgemeine Java-Themen 3
S Projekt in Jbuilder 05 Allgemeine Java-Themen 3
M Import findet das Projekt nicht. Allgemeine Java-Themen 5
G Projekt aus Firma zuhause importieren? Allgemeine Java-Themen 7
T Projekt zur Abschlussprüfung genug? Allgemeine Java-Themen 6
N Beteiligung an Projekt Allgemeine Java-Themen 6
F "source not found" in eigenem Projekt mit eigenen Allgemeine Java-Themen 2
S Swing-Projekt zum Üben Allgemeine Java-Themen 5
G ||| Textdateien aus dem eigenen Projekt lesen. Allgemeine Java-Themen 16
S Listener-Problematik in komplexem Projekt Allgemeine Java-Themen 2
I "Einstiegs Projekt" Allgemeine Java-Themen 20
S Projekt als Jar abspeichern! wie? Allgemeine Java-Themen 6
A Eigenes jar file in projekt einbinden Allgemeine Java-Themen 4
T Java-Projekt bei sourceforge.net Allgemeine Java-Themen 3
G Projekt Planung - Teamwork Allgemeine Java-Themen 3
L Open Source Projekt Allgemeine Java-Themen 7
V Lösungsansätze für Projekt gesucht Allgemeine Java-Themen 2
W ClassCastExpception in Projekt Allgemeine Java-Themen 3
P Projekt Allgemeine Java-Themen 14
A JAVA-Projekt - suche dringend partner/members Allgemeine Java-Themen 9
JavaNewbie2.0 Benutzer/Passwörter verwalten Allgemeine Java-Themen 11
C -Verschiedene Versionen eines Programms verwalten Allgemeine Java-Themen 7
T Spielkarten Enumeration in KartenDeck verwalten Allgemeine Java-Themen 7
H BlueJ Zustände verwalten Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben