Quarkus & MicroProfile

Cloud-native Java, schnelle Starts, Standards, Fault Tolerance, Config, Health und OpenAPI.

Enterprise JavaBeispieleArchitekturOffline HTML

Quarkus richtig verstehen

Quarkus optimiert Java für Container- und Cloud-Native-Szenarien. Es arbeitet stark zur Build-Zeit, unterstützt viele Standards aus Jakarta EE und MicroProfile und ist besonders interessant, wenn Startzeit, Speicherverbrauch, Developer Loop und native Images wichtig sind. Trotzdem bleiben Architekturprinzipien gleich: Fachlogik entkoppeln, Adapter schneiden, Fehlerverträge definieren.

Quarkus REST Resource
@Path("/orders")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class OrderResource {
    @Inject PlaceOrderUseCase placeOrder;

    @POST
    @Transactional
    public Response create(@Valid PlaceOrderRequest request) {
        OrderId id = placeOrder.handle(request.toCommand());
        return Response.created(URI.create("/orders/" + id.value())).build();
    }
}

MicroProfile als Microservice-Standardset

MicroProfile ergänzt Jakarta EE-orientierte APIs um typische Microservice-Themen: Config, REST Client, Fault Tolerance, Health, Metrics/Telemetry, OpenAPI und JWT. Das Ziel ist nicht, jedes Problem mit Annotationen zu lösen, sondern Standardverhalten für wiederkehrende Betriebssituationen bereitzustellen.

MicroProfile Fault Tolerance
@ApplicationScoped
public class PartnerRatingClient {
    @Inject
    @RestClient PartnerApi partnerApi;

    @Retry(maxRetries = 3, delay = 250)
    @Timeout(1000)
    @Fallback(fallbackMethod = "fallbackRating")
    public PartnerRating loadRating(String partnerId) {
        return partnerApi.rating(partnerId);
    }

    PartnerRating fallbackRating(String partnerId) {
        return PartnerRating.unknown(partnerId);
    }
}
AnnotationWirkungWorauf achten
@RetryWiederholt einen fehlgeschlagenen AufrufNur bei idempotenten oder sicheren Operationen
@TimeoutBegrenzt WartezeitTimeouts pro Partner und Use Case bewusst setzen
@FallbackDefiniert ErsatzverhaltenFallback darf keine falsche Fachlichkeit vortäuschen
@CircuitBreakerSchützt vor dauerhaften PartnerfehlernMonitoring und Recovery-Verhalten planen

Native Image einordnen

Native Images können Startzeit und Speicherverbrauch verbessern, bringen aber Build-Komplexität, Reflection-Konfiguration und Debugging-Besonderheiten mit. Sie sind wertvoll für Serverless, elastische Workloads oder sehr dichte Container-Landschaften, aber nicht automatisch die beste Wahl für jedes Enterprise-System.

⌂ Cockpit