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
Tweet

More Decks by Olga Maciaszek-Sharma

Other Decks in Programming

Transcript

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

    View Slide

  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.

    View Slide

  3. Agenda
    • Cloud Native
    • Sample Architecture
    • Spring Cloud Components
    • Revisit Sample Architecture
    • Demo
    3

    View Slide

  4. Cloud Native
    • Distributed
    • Scalable
    • Resilient
    • Automated
    • Organizational (Conway’s Law)
    • Replaceable
    4

    View Slide

  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

    View Slide

  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

    View Slide

  7. User Service
    Sample Architecture
    API Gateway Metrics
    Service
    Discovery
    Fraud
    Verifier
    Configuration
    Card Application
    Service

    View Slide

  8. Distributed Configuration
    Service
    A
    Config Server
    Service
    B

    View Slide

  9. Spring Cloud Config Server
    ● Pluggable
    ○ Git
    ○ Vault
    ○ Credhub
    ○ JDBC
    ○ IaaS resource (S3, etc…)
    ● Retry
    ● Spring Boot compatible client
    9

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  15. Others
    ● Spring Cloud Zookeeper Discovery
    ● Spring Cloud Alibaba (Nacos)
    1
    5

    View Slide

  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

    View Slide

  17. Spring Cloud LoadBalancer
    ● Replaces Netflix Ribbon
    ● Pluggable algorithm
    ● Reactive support
    ● Extensible configuration
    1
    7

    View Slide

  18. Failure Mitigation

    View Slide

  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

    View Slide

  20. Retry
    ● Retry failed requests
    ● Spring Retry
    ● Project Reactor
    ● Resilience4j
    2
    0

    View Slide

  21. Distributed Tracing
    Browser
    API Gateway
    User
    Service
    Mobile
    App
    Cart
    Service
    Inventory
    Service
    Inventory
    DB
    User
    DB

    View Slide

  22. Spring Cloud Sleuth
    ● Trouble-shooting across a distributed system
    ● Instruments for tracing
    ○ Spring Framework
    ○ Spring Boot
    ○ Spring Cloud
    2
    2

    View Slide

  23. API Gateway
    Browser
    API Gateway
    User
    Service
    Mobile
    App
    Cart
    Service

    View Slide

  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

    View Slide

  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)

    View Slide

  26. Demo

    View Slide

  27. What we did not talk about.

    View Slide

  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

    View Slide

  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

    View Slide