Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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
  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
  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
  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
  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
  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)
  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
  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
  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
  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, …
  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
  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
  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
  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
  15. Beispielanwendung Demo Alexander Schwartz / Microservices mit Dropwizard / Berlin

    Expert Days 2015 / © msg systems 17.09.2015 17 Zeit für Programmcode!
  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
  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
  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
  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/
  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