Developing, managing and opening the hood of JVM REST services - L Pfannenschmidt
Upcoming SlideShare
Loading in...5
×
 

Developing, managing and opening the hood of JVM REST services - L Pfannenschmidt

on

  • 205 views

Most modern applications targeting web or mobile use cases rely heavily on REST API backends. Being able to document, develop, deploy and scale such APIs has therefore become an essential capability ...

Most modern applications targeting web or mobile use cases rely heavily on REST API backends. Being able to document, develop, deploy and scale such APIs has therefore become an essential capability in software development. In particular for agile teams aiming for continuous deployment and continuous monitoring such a setup is crucial.

Swookiee (derived from “shaved wookiee” - http://swookiee.com is a shining new open source runtime environment that was built with the main intention to reduce the architectural burden of developers and therefore enabling them to focus [even more] on the implementation of features, be they implemented in Java, Groovy or Scala.

This presentation introduces swookiee and shows how it provides JVM-based REST services powered by JAX-RS 2 with Jersey, Jetty and Jackson on top of the Equinox OSGi runtime. How clients and colleagues can understand and consume these services using swagger documentation. How a lightweight implementation of the OSGi RFC-182 enables remote management of swookiee instances through REST. How to increase introspection by feeding log output into logstash and kibana. And how to achieve total introspection into every aspect of your application using metrics from the number of calls by HTTP status code to measurements deep in the application like queue sizes or execution times.

It even sports a basic OAuth2 provider, which enables you to provide customers out of the box with a modern authentication mechanism that isn't a pain.

Bio:
Lars is interested in Mobile Applications, Smart Home, Domain Specific Languages, Machine Learning, Big Data and agile development methodologies such as Scrum and Kanban.

Lars is currently a Senior Software Engineer at Intuit (through Level Up Analytics acquisition) and is Founder of mobile.cologne.

Statistics

Views

Total Views
205
Views on SlideShare
193
Embed Views
12

Actions

Likes
0
Downloads
8
Comments
0

1 Embed 12

http://www.slideee.com 12

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Developing, managing and opening the hood of JVM REST services - L Pfannenschmidt Developing, managing and opening the hood of JVM REST services - L Pfannenschmidt Presentation Transcript

  • OSGi DevCon / QCon New York 2014 Developing, managing and opening the hood of JVM REST services/Lars Pfannenschmidt @leastangle
  • What is swookiee?/Lars Pfannenschmidt @leastangle
  • Pfannen-what? Fun-an-schmidt Data Products @ Intuit Data Engineering & Analytics Founder of User Group ★ ★ ★ @mobilecgn ★@leastangle
  • What is swookiee? OSGi Runtime for REST Services JAX-RS 2 Jersey, Jetty, Jackson Services in Java, Groovy, Scala Swagger integration Metrics / Graphite Support JSON Logging Support Remote Controllable (RFC-182) EPL ★ ★ ★ ★ ★ ★ ★ ★ ★
  • 10 (-6+1)  - Services
  • Agenda Building REST Services Swagger documentation Metrics JSON Logging Remote Control ★ ★ ★ ★ ★
  • Fizz Buzzhttps://flic.kr/p/6ae8KK by Luis Linero - Some rights reserved CC BY 2.0
  • Any number divisible by three is replaced by the word fizz and any divisible by five by the word buzz. Numbers divisible by three and five become fizz buzz.
  • FizzBuzz v1
  • FizzBuzz v2
  • Documentationhttps://flic.kr/p/dELbZF Books HD by Abhi Sharma - Some rights reserved CC BY 2.0
  • FizzBuzz v3
  • Alternatives Good old WADL? [ ] Apiary (http://apiary.io/) RAML (http://raml.org/) ... ★ here ★ ★ ★
  • Metrics Opening the hood https://flic.kr/p/byHbPG Broken down by orangebrompton - Some rights reserved CC BY-NC-SA 2.0
  • FizzBuzz v4
  • Logginghttps://flic.kr/p/fE5Wgb Pitt River Logs by James Wheeler - Some rights reserved CC BY-NC-SA 2.0
  • Enabling JSON Logging productionLogging = true loggingDirectory = logs Generated logs can be found in logs/osgi- log.json
  • Sample Log Entry { "timestamp":"1402051840211", "level":"INFO", "thread":"ComponentResolveThread(Bundle48)", "logger":"com.swookiee.runtime.metrics.MetricsToGraphiteReporter", "message":"GraphiteReporterstartedusingconfiguration:GraphiteReporterConfiguration[graph "context":"default" }
  • Messages in JSON? Map<String,Object>map=newHashMap<>(); map.put("limit",limit); map.put("result",result); logger.info("{}",map); { "timestamp":"1401544478570", "level":"INFO", "thread":"qtp1201555453-33", "logger":"com.swookiee.demo.logging.impl.FizzBuzzService", "message":{ "result":[ "1", "2", "Fizz", "4", "Buzz" ], "limit":5 }, "context":"default" }
  • Remotehttps://flic.kr/p/hm8mFS Chernobyl NPP - Control Room No. 2 by Michael Kötter - Some rights reserved CC BY-NC-SA 2.0
  • Some REST calls
  • Deploy privateSwookieeClientgetSwookieeClient()throwsSwookieeClientException{ SwookieClientBuilderswookieClientBuilder=SwookieClientBuilder .newTarget("localhost") .withPort(8080) .withUsernamePassword("admin","admin123"); returnswookieClientBuilder.create(); } try(SwookieeClientswookieeClient=getSwookieeClient()){ StringinstalledBundle=swookieeClient.installBundle(file,true); swookieeClient.startBundle(installedBundle); }catch(SwookieeClientExceptionex){ logger.error("Couldnotinstall/startbundle:'{}'",ex.getMessage(),ex); }
  • Future Release version JVM languages? OAuth2 provider Integration testing ★ ★ ★ ★
  • Thank You! swookiee.com /Lars Pfannenschmidt @leastangle