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

Introduction to Spring Cloud - S1P 2020

Introduction to Spring Cloud - S1P 2020

Spring Cloud provides tools for developers to quickly build and deploy cloud native apps using common patterns in distributed systems, such as distributed configuration, client-side load-balancers, circuit breakers, API gateway, and service discovery. In this session, we’ll showcase the various Spring Cloud projects and how they overcome various distributed systems challenges like network errors, topology changes, API management, and more. We’ll also show how to start your own projects using the different Spring Cloud modules.


Olga Maciaszek-Sharma

September 02, 2020

More Decks by Olga Maciaszek-Sharma

Other Decks in Programming


  1. Introduction to Spring Cloud Slack: #session-introduction-to-spring-cloud Olga Maciaszek-Sharma @olga_maciaszek Spencer

    Gibb @spencerbgibb
  2. Safe Harbor Statement The following is intended to outline the

    general direction of VMware's offerings. It is intended for information purposes only and may not be incorporated into any contract. Any information regarding pre-release of VMware offerings, future updates or other planned modifications is subject to ongoing evaluation by VMware and is subject to change. This information is provided without warranty or any kind, express or implied, and is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions regarding VMware's offerings. These purchasing decisions should only be based on features currently available. The development, release, and timing of any features or functionality described for VMware's offerings in this presentation remain at the sole discretion of VMware. VMware has no obligation to update forward looking information in this presentation.
  3. Agenda • Cloud Native • Sample Architecture • Spring Cloud

    Components • Revisit Sample Architecture • Demo 3 
  4. Cloud Native • Distributed • Scalable • Resilient • Automated

    • Organizational (Conway’s Law) • Replaceable 4 
  5. Fallacies of Distributed Computing • The network is reliable. •

    Latency is zero. • Bandwidth is infinite. • The network is secure. • Topology doesn't change. • There is one administrator. • Transport cost is zero. • The network is homogeneous. https://web.archive.org/web/20071223073932/http://java.sys-con.com/read/38665.htm 5 
  6. 12 Factor Apps https://12factor.net 1.Code in VCS 2.Dependencies 3.Config in

    environment 4.Backing Services 5.Build, release, run 6.Process 6  7.Port binding 8.Concurrency 9.Disposability 10.Dev/prod parity 11.Logs 12.Admin processes See also the 1 Factor App and 15 Factor Apps
  7. User Service Sample Architecture API Gateway Metrics Service Discovery Fraud

    Verifier Configuration Card Application Service
  8. Distributed Configuration Service A Config Server Service B

  9. Spring Cloud Config Server • Pluggable ◦ Git ◦ Vault

    ◦ Credhub ◦ JDBC ◦ IaaS resource (S3, etc…) • Retry • Spring Boot compatible client 9
  10. Spring Cloud Consul Config • Bring your own Consul •

    Uses key-value store • Can be on value per key or a file per key • Can be auto-refreshed • Spring Boot compatible client 1 0
  11. Others • Spring Cloud Vault • Spring Cloud Zookeeper Config

    • Direct to IaaS ◦ Spring Cloud Alibaba ◦ Spring Cloud AWS ◦ Spring Cloud Azure ◦ Spring Cloud GCP • Platform ◦ K8s config maps 1 1
  12. Service A Service A Service Registration and Discovery Service A

    Service Registry Service B 1. Registers 2. Query for Service A instances 3. Connect
  13. Netflix Eureka • Provided by Spring Cloud Netflix • Highly

    Available • Eventually Consistent • Netflix uses Spring Cloud Netflix! http://techblog.netflix.com/2012/09/eureka.html 1 3
  14. Consul by Hashicorp • Integration by Spring Cloud Consul •

    Bring your own Consul Servers • Can be strongly consistent • Uses Services API • Supports consul health checks • Spring Boot compatible client 1 4
  15. Others • Spring Cloud Zookeeper Discovery • Spring Cloud Alibaba

    (Nacos) 1 5
  16. Client Side Load-balancer Service A Service A Service A Service

    Registry Service B 1. Query service A instances 2. Select the service A instance to send the request to Service A Service A Service A
  17. Spring Cloud LoadBalancer • Replaces Netflix Ribbon • Pluggable algorithm

    • Reactive support • Extensible configuration 1 7
  18. Failure Mitigation

  19. Spring Cloud Circuit Breaker • Protects from cascading failures •

    Fallback • Pluggable ◦ Resilience4j ◦ Spring Retry ◦ Spring Cloud Alibaba (Sentinel) • Pluggable algorithm • Reactive support 1 9 Open Closed Half Open Failure threshold exceeded Success Timeout Reset Failure
  20. Retry • Retry failed requests • Spring Retry • Project

    Reactor • Resilience4j 2 0
  21. Distributed Tracing Browser API Gateway User Service Mobile App Cart

    Service Inventory Service Inventory DB User DB
  22. Spring Cloud Sleuth • Trouble-shooting across a distributed system •

    Instruments for tracing ◦ Spring Framework ◦ Spring Boot ◦ Spring Cloud 2 2
  23. API Gateway Browser API Gateway User Service Mobile App Cart

  24. Spring Cloud Gateway • API Gateway • Spring Boot App

    • Focus on developer experience and customization • Supports Spring Cloud ◦ Configuration ◦ Service Discovery ◦ LoadBalancer ◦ Retry/Circuit Breaker ◦ Rate Limiting ◦ Sleuth 2 4
  25. User Service (SC Circuit Breaker) Sample Architecture with Spring Cloud

    Spring Cloud Gateway (SC CircuitBreaker, Retry) Metrics Eureka Service Discovery Fraud Verifier Spring Cloud Config Server Card Application Service (SC LoadBalancer)
  26. Demo

  27. What we did not talk about.

  28. More to Spring Cloud • Spring Cloud Bus • Spring

    Cloud OpenFeign • Spring Cloud Contract • Spring Cloud Function • Spring Cloud Stream • Spring Cloud Task • Spring Cloud Data Flow • ... 2 8
  29. Stay Connected. Slack: #session-introduction-to-spring-cloud https://github.com/spring-cloud-samples/spring-cloud-intro-demo https://github.com/spring-cloud https://spring.io/projects/spring-cloud Olga Maciaszek-Sharma @olga_maciaszek

    Spencer Gibb @spencerbgibb #springone @s1p