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

Discovering Java EE Microservices @ CybercomDEV 2016

Discovering Java EE Microservices @ CybercomDEV 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. Using SnoopEE let you benefit from the full power of the JavaEE platform without the need of more 3rd party frameworks.
SnoopEE was released last year and presented at JavaOne it has developed even further to provide a lean, non-intrusive ecosystem for Java EE based microservices. In this session, these new features will be presented.
The slides for this session will be backed up by a demo to show key concepts and tools.
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).
Information, documentation and source for SnoopEE can be found here: http://snoopee.agilejava.eu

ivargrimstad

May 21, 2016
Tweet

More Decks by ivargrimstad

Other Decks in Programming

Transcript

  1. @ivar_grimstad #SnoopEE - CybercomDEV 2016 Discovering Java EE Microservices Ivar

    Grimstad Principal Consultant, Cybercom Sweden with SnoopEE
  2. @ivar_grimstad #SnoopEE - CybercomDEV 2016 Java EE Container Java EE

    Container Java EE Application (WAR) bean bean bean
  3. @ivar_grimstad #SnoopEE - CybercomDEV 2016 Embedded Container Spring Boot Application

    (JAR) Spring 4 Context bean bean bean Servlet Container
  4. @ivar_grimstad #SnoopEE - CybercomDEV 2016 Hardware Operating System JVM Application

    Hardware Operating System JVM Java EE Container Application
  5. @ivar_grimstad #SnoopEE - CybercomDEV 2016 Hardware Operating System JVM Application

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

    C Application Discovery Service Register Register Register
  7. @ivar_grimstad #SnoopEE - CybercomDEV 2016 Service A Service B Service

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

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

    C Application Discovery Service Register Register Register Lookup B
  10. @ivar_grimstad #SnoopEE - CybercomDEV 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
  11. @ivar_grimstad #SnoopEE - CybercomDEV 2016 @SpringBootApplication @EnableEurekaClient public class Application

    { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }
  12. @ivar_grimstad #SnoopEE - CybercomDEV 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
  13. @ivar_grimstad #SnoopEE - CybercomDEV 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>
  14. @ivar_grimstad #SnoopEE - CybercomDEV 2016 String helloResponse = helloService.simpleGet("hello") .filter(r

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

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

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

    SnoopEE Discovery Service Register Register Register Lookup Call Call Call
  18. @ivar_grimstad #SnoopEE - CybercomDEV 2016 Hello World Hello World SnoopEE

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

    SnoopEE Discovery Service Register Register Register Lookup Call Call Call
  20. @ivar_grimstad #SnoopEE - CybercomDEV 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>
  21. @ivar_grimstad #SnoopEE - CybercomDEV 2016 3. Configure the Service snoop:

    host: http://localhost port: 8080 serviceRoot: snoop-hello-service/api snoopService: 192.168.59.103:8081/snoop-service/
  22. @ivar_grimstad #SnoopEE - CybercomDEV 2016 Service A1 Service A2 Service

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