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

Meet SnoopEE - the Lean and Simple Discovery Service for Java EE @ jPrime 2016

Meet SnoopEE - the Lean and Simple Discovery Service for Java EE @ jPrime 2016

A common pattern when building systems based on distributed services is Service Discovery. And that is where SnoopEE comes in. It is a 100% Java EE alternative to solutions like Spring Cloud Eureka. Just as simple and at least as powerful. And no need for 3rd party frameworks. The slides for this session will be backed up by a demo to show key concepts and tools for packaging, registering and discovering Java EE based micro services. The demo will use core technologies of the Java EE platform, such as CDI Extensions, WebSockets, JAX-RS and even use MVC 1.0 (JSR 371).

ivargrimstad

May 26, 2016
Tweet

More Decks by ivargrimstad

Other Decks in Programming

Transcript

  1. @ivar_grimstad #SnoopEE - jPrime 2016 Meet SnoopEE Ivar Grimstad Principal

    Consultant, Cybercom Sweden The Lean and Simple Discovery Service for Java EE
  2. @ivar_grimstad #SnoopEE - jPrime 2016 Hardware Operating System JVM Application

    Hardware Operating System JVM Java EE Container Application
  3. @ivar_grimstad #SnoopEE - jPrime 2016 Hardware Operating System JVM Application

    Hardware Operating System JVM Java EE Container Application
  4. @ivar_grimstad #SnoopEE - jPrime 2016 Service A Service B Service

    C Application Discovery Service Register Register Register
  5. @ivar_grimstad #SnoopEE - jPrime 2016 Service A Service B Service

    C Application Discovery Service Register Register Register Lookup A Call A
  6. @ivar_grimstad #SnoopEE - jPrime 2016 Service A Service B Service

    C Application Discovery Service Register Register Register Lookup B Call B
  7. @ivar_grimstad #SnoopEE - jPrime 2016 Service A Service B Service

    C Application Discovery Service Register Register Register Lookup B
  8. @ivar_grimstad #SnoopEE - jPrime 2016 Service B Service A Service

    C Application Eureka Discovery Service Register Register Register @EnableEurekaClient Hardware Operating System JVM Service A Hardware Operating System JVM Service B Hardware Operating System JVM Service C
  9. @ivar_grimstad #SnoopEE - jPrime 2016 @SpringBootApplication @EnableEurekaClient public class Application

    { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }
  10. @ivar_grimstad #SnoopEE - jPrime 2016 Hardware Operating System JVM Service

    C Hardware Operating System JVM Service B Hardware Operating System JVM Service A Application SnoopEE Discovery Service Register Register Register Hardware Operating System JVM Java EE Container Service A Hardware Operating System JVM Java EE Container Service B Hardware Operating System JVM Java EE Container Service C @EnableSnoopClient
  11. @ivar_grimstad #SnoopEE - jPrime 2016 Hardware Operating System JVM Java

    EE Container Service A Hardware Operating System JVM Java EE Container Service C Hardware Operating System JVM Java EE Container Service B Application SnoopEE Discovery Service Register Register Register @EnableSnoopClient Hardware Operating System Service C Hardware Operating System JVM Service B Future<Snoop>
  12. @ivar_grimstad #SnoopEE - jPrime 2016 String helloResponse = helloService.simpleGet("hello") .filter(r

    -> r.getStatus()==200) .map(r -> r.readEntity(String.class)) .orElse("goodbye");
  13. @ivar_grimstad #SnoopEE - jPrime 2016 snoop.yml snoop: host: http://localhost port:

    8080 serviceRoot: snoop-hello-service/api snoopService: 192.168.59.103:8081/snoop-service/
  14. @ivar_grimstad #SnoopEE - jPrime 2016 Service A Service B Service

    C Application SnoopEE Discovery Service Call Call Call Lookup http:// Register ws:// Register ws:// Register ws://
  15. @ivar_grimstad #SnoopEE - jPrime 2016 Hello World Micro Hello World

    SnoopEE Discovery Service Register Register Register Lookup Call Call Call
  16. @ivar_grimstad #SnoopEE - jPrime 2016 Hello World Hello World SnoopEE

    Discovery Service Register Register Lookup Call Call Call Micro
  17. @ivar_grimstad #SnoopEE - jPrime 2016 Hello Swarm Micro Hello World

    SnoopEE Discovery Service Register Register Register Lookup Call Call Call
  18. @ivar_grimstad #SnoopEE - jPrime 2016 1. Add Maven Dependency <dependency>

    <groupId>eu.agilejava</groupId> <artifactId>snoop</artifactId> <version>${snoop.version}</version> </dependency> <dependency> <groupId>eu.agilejava</groupId> <artifactId>snoop</artifactId> <version>1.3.0</version> </dependency>
  19. @ivar_grimstad #SnoopEE - jPrime 2016 3. Configure the Service snoop:

    host: http://localhost port: 8080 serviceRoot: snoop-hello-service/api snoopService: 192.168.99.100:8081/snoop-service/
  20. @ivar_grimstad #SnoopEE - jPrime 2016 4. Configure the Application snoop:

    snoopService: 192.168.99.100:8081/snoop-service/
  21. @ivar_grimstad #SnoopEE - jPrime 2016 Service A1 Service A2 Service

    C Application SnoopEE Discovery Service Register Register Lookup Call Call Load Balancer