Spring Boot / Spring Cloud
Moderne Enterprise-Lösungen bis hin zu Microservices
Das Spring-Framework ist ursprünglich gesehen für den Einsatz in klassischen Java-Enterprise-Szenarien entworfen worden. Inzwischen hat sich jedoch ein ganzes Ökosystem rund um Spring herum gebildet, das ebenfalls Beachtung verdient. Mit Spring Boot / Cloud ist z. B. eine Microservice-Architektur recht einfach möglich: Microservices sind dadurch gekennzeichnet, dass jeder Service im Detail betrachtet einen mehr oder weniger isolierten Bereich einer Anwendung abbildet.
Mittels Domain Driven Design richtig konzipiert, ist die umzusetzende Fachlichkeit regelmäßig leicht verständlich und beherrschbar. Das Wesen von Microservices besteht darin, dass einzelne Services einfacher handhabbarer sind als monolithische Software. Im Idealfall können Microservices unabhängig voneinander erweitert, ausgetauscht und skaliert werden. Anwendungen funktionieren auch dann noch, wenn einzelne Services nicht verfügbar sind. Sie bilden die fachlichen Blöcke einer Anwendung, statt alles aus „einem (schwer veränderlichen) Guss“ zu erstellen.
Was und wofür Spring ist
- Kurzer Abriss über das Spring-Framework
- Model-View-Controller-Pattern (MVC)
- Dependency-Injection / Inversion of Control
Klassische Webanwendungen mit dem Spring Framework vs. Spring Boot
- Servlet-Container und WAR-Dateien („die alte Welt“)
- JAR-Dateien mit self-contained Servlet-Containern („die neue Welt“)
Installation und Vorbereitung
- Spring Boot CLI
- Nützliche IDEs für die Entwicklung mit Spring Boot
- Dependency-Management (Gradle bzw. Maven)
- Quick-Start mit start.spring.io
- Kleinstmögliche Beispielanwendung mit einem Controller-Endpunkt
- Erläuterung der Annotations
AutoConfiguration
Controller
RequestMapping
Spring Boot Starters
- Wichtige Dependency-Sammlungen, die Funktionen out-of-the-box bereitstellen
- Auto-Configuration
- Logging
- Datenbankanbindung und ORM
- JSON-Unterstützung
- Sicherheit
- Test
- REST und MVC
- Monitoring
- Hypermedia-driven REST
Konfigurationsmöglichkeiten
- Externalized configuration
- Type-safe configuration
- Environment / Application property files
- Profilbasierte Properties
- Simple Log-Konfiguration
Testen
- Einführung in das Unit Testing und Integration in Spring Boot
- Erstellen von Unit- und Integration-Tests mit folgenden Bibliotheken
- JUnit
- Hamcrest
- Mockito
Datenbanken mit Spring Data
- Datenbankanbindungen
- Implementierung im Code
- Testing
Sicherheit mit Spring Security
- Konfiguration
- Absicherung von Endpunkten
Model-View-Controller Architekturen und REST
- Integration Spring MVC
- Auto Configuration
- Message Converters
- Statischer Inhalt
- Error Configuration
- „Making it RESTful“
- Automatisierte Erzeugung von REST-Endpunkten anhand von Datenbank-Entities
- Besonderheiten bei REST bei Spring und Java
Microservices mit Spring Boot und Spring Cloud
In diesem Abschnitt wird beleuchtet wie man Spring Boot-Anwendungen als Microservices in Produktionsumgebungen integriert. Der Fokus liegt darauf die Implementierung so zu gestalten, dass Services zuverlässig miteinander kommunizieren und Service-übergreifende Use Cases realisiert werden können. Der „Netflix-Stack“ bietet fast alle Features, die für eine erfolgreiche Integration von Microservices notwendig sind.
- Spring Cloud Netflix
- Service Discovery
- Circuit Breaker-Pattern
- Deklarative REST-Clients
- Router und Filter
- Weitere Leistungsmerkmale
- Verteilte Konfiguration
- Verteiltes Messaging
- Diskussion
- Dekomposition: Wie richtig geschnitten wird
- API-Gateway als „Backend for frontend“
- Probleme von Microservices und deren Lösungsmöglichkeiten
- Verteiltes Datenmanagement
- Performanceprobleme durch kaskadierende Service Calls
- Deployment
- Deployment in AWS
- Deployment in Docker Container
Weitere Themen
- Dokumentation
- Monitoring