$30 off During Our Annual Pro Sale. View Details »

Dropwizard - REST-Services ruck-zuck fertig

Dropwizard - REST-Services ruck-zuck fertig

Das Dropwizard-Projekt hat den JavaEE Stack ausgemistet und stellt eine Plattform für leichtgewichtige REST-Services auf Basis von JAX-RS bereit. Auf diese Weise lassen sich Services im Handumdrehen schreiben, dokumentieren, testen und betreiben.

Entwickler mit Java-EE-Hintergrund finden sich sehr schnell zurecht. Automatische Tests fallen viel leichter. Die aufwändige Konfiguration eines Application-Servers entfällt. Deployment und Monitoring sind deutlich vereinfacht.

Während des Vortrags wird ein Ende-zu-Ende Beispiel erstellt inklusive Dokumentation und Test der REST-API.

Alexander Schwartz

September 17, 2015
Tweet

More Decks by Alexander Schwartz

Other Decks in Programming

Transcript

  1. .consulting .solutions .partnership
    REST-Services mit Dropwizard ruck-zuck
    erstellt, dokumentiert und getestet
    Alexander Schwartz, Principal IT Consultant
    Berlin Expert Days 2015

    View Slide

  2. REST-Services ruck-zuck fertig mit Dropwizard
    2
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015
    Application Server Evolution
    1 5
    Dropwizard
    2 10
    Beispielanwendung
    3 14
    Vorteile Drowizard
    4 19

    View Slide

  3. REST-Services ruck-zuck fertig mit Dropwizard
    5
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015
    Application Server Evolution
    1 5
    Dropwizard
    2 10
    Beispielanwendung
    3 14
    Vorteile Drowizard
    4 19

    View Slide

  4. Application Server Evolution
    Traditionelle JEE Anwendungen brauchen einen Container
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 6
    Container
    WAR/EAR
    Database
    Browser

    View Slide

  5. Application Server Evolution
    Best Practices für Application Server
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 7
    #1: Eine Anwendung pro Container
    Vorteile:
    • Anwendungsspezifische Konfiguration für Datenbank, Treiber, SSL, Thread Pools, …
    • Neustart des Containers betrifft nur eine Anwendung
    • Redeployment der Anwendung mit Neustart möglich
    #2: Ein Container pro Anwendung
    Vorteile:
    • Konfiguration kann beim Deployment der Anwendung angepasst werden
    • Anwendung läuft genau auf der getesteten Container-Version
    • Anwendung bekommt genau die gewünschte Container-Version und JEE-Version

    View Slide

  6. Application Server Evolution
    Wechselseitige Abhängigkeit zwischen Anwendung und Container
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 8
    Folgen:
    • Nicht genutzt Features in traditionellen Containern
    • Unnötig komplizierte Prozesse für Continuous Integration / Continuous Delivery
    „Is JEE Dead?“ (Brian O‘Neill 03/2008)
    „JEE is dead“ (Brian O‘Neill 10/2012)
    „Applikationsserver sind tod“ (Eberhardt Wolff 05/2014)

    View Slide

  7. Application Server Evolution
    Application Server
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 9
    Lösung: Kombiniere Anwendung mit Container
    Effekt:
    • Alles in einem JAR: einfache Installation und Staging
    • Schneller Start: angenehme Entwicklung
    # migrate database
    java -jar application.jar db migrate config.yml
    # start application
    java -jar application.jar server config.yml
    Dropwizard Spring Boot
    Vert.x

    View Slide

  8. REST-Services ruck-zuck fertig mit Dropwizard
    10
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015
    Application Server Evolution
    1 5
    Dropwizard
    2 10
    Beispielanwendung
    3 14
    Vorteile Drowizard
    4 19

    View Slide

  9. Dropwizard
    Entstehung von Dropwizard
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 11
    Yammer migrierte von einer monolithischen Rails-Anwendung zu modularen Dropwizard-
    Microservices.
    Version Datum Ereignis
    0.1 12/2011 Initiales Release
    06/2012 Microsoft kauft Yammer
    0.7 04/2014 Forms, Java 7, Jetty 9
    0.8 03/2015 JAX RS 2.0, Jersey 2.x

    View Slide

  10. Dropwizard
    Dropwizard Komponenten
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 12
    • Jetty für HTTP
    • Jersey für REST
    • Jackson für JSON
    • Metrics für Monitoring
    „Freunde“: Hibernate Validator, JDBI, Hibernate, Liquibase, Freemarker, …

    View Slide

  11. Dropwizard
    Dropwizard Komponenten
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 13
    Dropwizard
    + Anwendung
    Datenbank
    Browser
    YAML Konfigurationsdatei

    View Slide

  12. REST-Services ruck-zuck fertig mit Dropwizard
    14
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015
    Application Server Evolution
    1 5
    Dropwizard
    2 10
    Beispielanwendung
    3 14
    Vorteile Drowizard
    4 19

    View Slide

  13. Beispielanwendung
    (Ausgewählte) Ideen des Domain Driven Designs
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 15
    • Fachliche Domäne (Daten und Funktionalität) wird als Aggregates, Entities und Value Objects
    implementiert
    • Funktionalität wird ggf. zusätzlich Services implementiert
    • Fachlicher Code ist nicht von technischem Framework-Code abhängig
    • Daten werden in Repositories abgelegt
    • Interfaces des Repositories ist Teil der fachlichen Domäne,
    Implementierung des Repositories ist Teil der außenliegenden Schichten
    • Umliegende Systeme werden über Adapter angebunden
    und können einen Anticorruption Layer beinhalten
    Literatur:
    Eric Evans: “Domain-Driven Design: Tackling Complexity in Software”, 2004
    Vaughn Vernon: “Implementing Domain-Driven Design”, 2013

    View Slide

  14. Beispielanwendung
    Dropwizard Komponenten
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 16
    Database
    Browser
    Application
    Domain
    Core
    Framework Dropwiz.
    http://fideloper.com/hexagonal-architecture
    Legende:
    Aufruf
    IoC / DI
    Repository
    Adapter

    View Slide

  15. Beispielanwendung
    Demo
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 17
    Zeit für Programmcode!

    View Slide

  16. Beispielanwendung
    Dropwizard Komponenten
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 18
    Bereich Core Add-On Extra
    Jersey / JAX-RS 2.0 REST X
    JDBI, Hibernate, Liquibase Datenbank X
    Freemarker, Mustache View X
    Metrics Monitoring X
    AssertJ, Basisklassen Test Test X
    Google Guice Dependency
    Injection
    X
    Swagger Dokumentation X
    Lombok Entwicklung X
    JBoss Keycloak Sicherheit X
    Arquillian Graphene GUI Test X
    Shazam Gwen BDD Test X

    View Slide

  17. REST-Services ruck-zuck fertig mit Dropwizard
    19
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015
    Application Server Evolution
    1 5
    Dropwizard
    2 10
    Beispielanwendung
    3 14
    Vorteile Drowizard
    4 19

    View Slide

  18. Vorteile Dropwizard
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 20
    • Dropwizard bringt viele Standardkomponenten mit
    • Chance auf gleichartige, kleine Anwendungen
    • Viele Wahlmöglichkeiten – junges, aktives Ökosystem
    • Gute Dokumentation für die ersten Schritte
    • Erprobte Komponenten
    • Metriken integriert
    • Wiederverwendung von JEE Knowhow
    • Einfaches Deployment als JAR Datei
    • Gute Vorbereitung für Tests
    @ahus1de

    View Slide

  19. Links
    Alexander Schwartz / Microservices mit Dropwizard / Berlin Expert Days 2015 / © msg systems 17.09.2015 21
    Dropwizard Homepage
    http://dropwizard.io/
    Eric Evans: Domain Driven Design Quickly
    http://www.infoq.com/minibooks/domain-driven-design-quickly
    Vaughn Vernon: Implementing Domain-Driven Design
    https://vaughnvernon.co/?page_id=168
    Guice für Dropwizard
    https://github.com/HubSpot/dropwizard-guice
    Swagger für Dropwizard
    https://github.com/federecio/dropwizard-swagger
    Lombok
    http://projectlombok.org/
    JBoss Keycloak
    http://keycloak.jboss.org/
    Keycloak Dropwizard Integration
    https://github.com/ahus1/keycloak-dropwizard-integration
    @ahus1de
    Arquillian Graphene
    http://arquillian.org/modules/graphene-extension/
    Shazam Gwen
    https://github.com/shazam/gwen
    Gwen: BDD-Framework für lesbare und refaktorisierbare Tests
    in Java
    http://heise.de/-2520872
    https://github.com/ahus1/bdd-examples/
    JGiven: Behavior-Driven Development in Plain Java
    http://jgiven.org/

    View Slide

  20. .consulting .solutions .partnership
    Alexander Schwartz
    Principal IT Consultant
    +49 171 5625767
    [email protected]
    @ahus1de
    msg systems ag (Headquarters)
    Robert-Buerkle-Str. 1, 85737 Ismaning
    Germany
    www.msg-systems.com

    View Slide