Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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.

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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 

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Distributed Configuration Service A Config Server Service B

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Service A Service A Service Registration and Discovery Service A Service Registry Service B 1. Registers 2. Query for Service A instances 3. Connect

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Failure Mitigation

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

API Gateway Browser API Gateway User Service Mobile App Cart Service

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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)

Slide 26

Slide 26 text

Demo

Slide 27

Slide 27 text

What we did not talk about.

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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