Mikroservices in Java: Keine Angst, es ist einfacher als es scheint
\n\nHaben Sie jemals auf eine monolithische Anwendung geschaut und gedacht: "Ich wünschte, ich könnte das in Teile aufteilen, damit ich keine Angst habe, dass eine Änderung alles kaputt macht"? Herzlichen Glückwunsch – Sie sind bereit für Mikroservices. In der Java-Welt ist dieses Thema von Mythen über unglaubliche Komplexität und eine Menge Technologien umgeben. In Wirklichkeit kann man mit zwei Klassen und einer Datei application.yml starten.
In diesem Artikel werden wir kein Raumschiff bauen. Wir schreiben zwei einfache Mikroservices, die über HTTP miteinander sprechen, und verstehen, wo man wirklich anfängt. Keine Magie – nur Java, Spring Boot und gesunder Menschenverstand.
\n\nWas ist ein Mikroservice (einfach erklärt)
\n\nStellen Sie sich ein Restaurant vor. Ein Monolith ist, wenn ein Koch alles macht: Suppe kochen, Steak braten, Geschirr spülen. Mikroservices sind ein Team: Ein Koch ist nur für Suppen zuständig, der zweite für Fleisch, der dritte für Desserts. Jeder arbeitet unabhängig, aber zusammen erstellen sie eine gemeinsame Speisekarte.
\n\nIn Java ist ein Mikroservice eine eigenständige Anwendung, die für eine Geschäftsfunktion verantwortlich ist (z. B. "Benutzerverwaltung" oder "Auftragsabwicklung"). Sie hat ihre eigene Datenbank, ihren eigenen Code und kommuniziert mit anderen Diensten über das Netzwerk (normalerweise über HTTP/REST oder über Message Broker).
\n\nWo anfangen: Die Werkzeuge eines Gentlemans
\n\nFür Ihr erstes Projekt benötigen Sie nur drei Dinge:
\n\n- \n
- Java 17+ – die moderne Version mit nützlichen Funktionen (records, sealed classes). \n
- Spring Boot 3.x – das beliebteste Framework für Mikroservices in Java. Es übernimmt 80% der Routinearbeit. \n
- Maven oder Gradle – für den Build. Maven ist einfacher für den Einstieg, Gradle ist schneller. \n
Zusätzlich, wenn Sie es komplexer möchten:
\n- \n
- Docker – um den Dienst in einen Container zu packen. \n
- Spring Cloud – für Service Discovery und Lastverteilung. \n
- PostgreSQL/H2 – Datenbank nach Wahl. \n
Tipp: Versuchen Sie nicht, sofort Kubernetes und Kafka zu lernen. Beginnen Sie mit einfacher REST-Kommunikation.
\n\nDen ersten Mikroservice schreiben: Benutzerservice
\n\nErstellen wir einen einfachen Mikroservice, der Informationen über Benutzer bereitstellen kann. Verwenden Sie Spring Initializr (start.spring.io) oder erstellen Sie das Projekt manuell.
\n\nFügen Sie die Abhängigkeiten in pom.xml hinzu:
<dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-web</artifactId>\n</dependency>\n\n<dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-data-jpa</artifactId>\n</dependency>\n\n<dependency>\n <groupId>com.h2database</groupId>\n <artifactId>h2</artifactId>\n <scope>runtime</scope>\n</dependency>\n\nJetzt schreiben wir das Benutzermodell:
\n\nimport jakarta.persistence.*;\n\n@Entity\n@Table(name = "users")\npublic class User {\n @Id\n @GeneratedValue(strategy = GenerationType.IDENTITY)\n private Long id;\n private String name;\n private String email;\n\n // Konstruktoren, Getter, Setter (Lombok kann verwendet werden)\n public User() {}\n\n public User(String name, String email) {\n this.name = name;\n this.email = email;\n }\n\n // Getter und Setter\n}\n\nRepository (vereinfachter Datenzugriff):
\n\nimport org.springframework.data.jpa.repository.JpaRepository;\n\npublic interface UserRepository extends JpaRepository<User, Long> {\n}\n\nUnd den Controller – REST-Endpunkt:
\n\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\n\n@RestController\n@RequestMapping("/api/users")\npublic class UserController {\n\n private