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

Awesome Tools to Level Up Your Spring Cloud Architecture - Spring I/O 2017

Awesome Tools to Level Up Your Spring Cloud Architecture - Spring I/O 2017

Getting up and running with Spring Cloud is a breeze. But once the initial setup is done, it needs to be complemented with an ecosystem that can cope with the extra operational complexity and quality concerns. While running Spring Cloud in production for years, we have integrated some interesting tools for documentation, operations and testing.

During this talk you will see a demo of an integrated platform based on Spring Cloud, including tools like Spring Cloud Contract, wiremock, saboteur, ELK, Spinnaker, Spring Boot Admin and more. One of these tools is a dashboard for visualising Spring Cloud microservice architecture, which has recently been open sourced.

Documenting, testing, troubleshooting, and monitoring highly distributed systems in microservice architectures is hard. Finding quality, complementary tools in the wilds of open source can be even harder. Join this talk for a pragmatic look at taming some of the challenges of running microservices in production.

Fbcb461e8c19ccc6727f13dbfcd58362?s=128

Andreas Evers

May 18, 2017
Tweet

More Decks by Andreas Evers

Other Decks in Technology

Transcript

  1. Awesome Tools to Level Up Your Spring Cloud Architecture Andreas

    Evers @andreasevers
  2. None
  3. None
  4. ZUUL EUREKA CONFIG SERVER SPRING BOOT µS HYSTRIX DASHBOARD TURBINE

    CONFIG BUS DATA FLOW ZIPKIN (SLEUTH) ATLAS TASK STREAM
  5. ZUUL EUREKA CONFIG SERVER SPRING BOOT µS HYSTRIX DASHBOARD TURBINE

    SPRING BOOT ADMIN MICROSERVICES DASHBOARD SPINNAKER CONFIG BUS DATA FLOW ZIPKIN (SLEUTH) ATLAS TASK PROMETHEUS CONTRACT REST DOCS SONAR / OWASP / … WIREMOCK TROUBLEMAKER ELK STREAM SABOTEUR
  6. None
  7. None
  8. None
  9. None
  10. None
  11. None
  12. None
  13. None
  14. None
  15. None
  16. None
  17. None
  18. None
  19. None
  20. None
  21. None
  22. None
  23. https://ordina-jworks.github.io/monitoring/2016/09/23/Monitoring-with-Prometheus.html

  24. None
  25. Graphite InfluxDB OpenTSDB NewRelic AppDynamics Dynatrace https://prometheus.io/docs/introduction/comparison/

  26. None
  27. None
  28. None
  29. None
  30. Modelling Microservices at Spotify by Petter Måhlén https://www.youtube.com/watch?v=7XDA044tl8k

  31. What’s the compliancy & maturity of the services? How can

    I accommodate recruitment & knowledge sharing? What is the technical debt of the services? Which teams do I need to chase? Are budget & priorities in line with the architectural goals? How do I manage change in a DevOps organisation? “
  32. What functionality can I reuse? Which resources are exposed by

    what services? Which events & messages are sent back and forth? Which services are impacted by a change? How does a functional flow travel through the layers of the architecture? What is coming up, & can I define the future state of the ecosystem? “
  33. Which versions are deployed where? Are my deployments successful? Which

    versions do my dependencies have? Where can I find everything related to my services? “
  34. None
  35. None
  36. None
  37. None
  38. None
  39. None
  40. None
  41. SABOTEUR WIREMOCK

  42. HTTP 500 Random Data Malformed Data Empty Response Total Network

    Partition Remote Service Not Listening to Port Packet Loss TCP Connection Timeout (~ firewall)
  43. Six principles for building fault tolerant microservices on the JVM

    by Christopher Batey https://www.youtube.com/watch?v=dKWNZnuZhd0
  44. None
  45. None
  46. None
  47. Returns 10 properties Uses property 1-2

  48. Uses property 1-2 Uses property 3-4 Uses property 3-5 Uses

    property 4-5 Returns 10 properties
  49. Returns 10 properties Uses property 1-2 Consumer 1 uses property

    1-2 PR
  50. Returns 10 properties Uses property 1-2

  51. Sonarqube / OWASP / FindSecBugs / …

  52. None
  53. None
  54. generated snippets manually written template generated HTML integration tests

  55. interface CompactView{}; class Car { @JsonView(CompactView.class) private String brand; private

    int doors; ... } @RestController class CarController { @JsonView(CompactView.class) @GetMapping("/car") public String getCar() { return new Car("BMW", 5); } }
  56. interface V1{}; interface V2{}; class Car { @JsonView(V1.class) private String

    brand; @JsonView(V2.class) private int doors; ... }
  57. @RestController class CarController { @GetMapping(path = "/car", produces = "application/vnd.pvt.car.v1+json")

    @JsonView(V1.class) public String getCarV1() { return new Car("BMW", 5); } @GetMapping(path = "/car", produces = "application/vnd.pvt.car.v2+json") @JsonView(V2.class) public String getCarV2() { return new Car("BMW", 5); } }
  58. None
  59. None
  60. None
  61. None
  62. AWS re:Invent 2016: Multi-Region Delivery Netflix Style (DEV311) by Andy

    Glover https://www.youtube.com/watch?v=1HiilTXQo4w
  63. ZUUL EUREKA CONFIG SERVER SPRING BOOT µS HYSTRIX DASHBOARD TURBINE

    SPRING BOOT ADMIN MICROSERVICES DASHBOARD SPINNAKER CONFIG BUS DATA FLOW ZIPKIN (SLEUTH) ATLAS TASK PROMETHEUS CONTRACT REST DOCS SONAR / OWASP / … WIREMOCK TROUBLEMAKER ELK STREAM SABOTEUR
  64. ZUUL SPRING CLOUD SERVICES SPRING CLOUD SERVICES SPRING BOOT µS

    SPRING CLOUD SERVICES SPRING CLOUD SERVICES PCF APPS MANAGER MICROSERVICES DASHBOARD CONCOURSE, SPINNAKER CONFIG BUS DATA FLOW ZIPKIN (SLEUTH) ATLAS TASK PCF METRICS* CONTRACT REST DOCS SONAR / OWASP / … WIREMOCK TROUBLEMAKER PCF LOG SEARCH PCF METRICS* STREAM SABOTEUR
  65. None
  66. 66 @spring_io #springio17 TWITTER: twitter.com/andreasevers TECH BLOG: ordina-jworks.github.io DEMO ENVIRONMENT:

    TVH: www.tvh.com