microservices mit spring cloud - guild42.ch mit spring cloud alain sahli alain.sahli@ mimacom.com...

43
ALAIN SAHLI MICROSERVICES MIT SPRING CLOUD

Upload: nguyendang

Post on 20-May-2018

223 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

ALAIN SAHLIMICROSERVICES MIT SPRING CLOUD

Page 3: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

DISTRIBUTED SYSTEM DEPLOYMENTS@GITHUB

175 DEPLOYMENTS / DAY

Page 4: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

NETFLIXSERVICE ORIENTED ARCHITECTURE

Page 5: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

CLOUD

SERVICE REGISTRY,CIRCUIT BREAKER, METRICS

CORE

FRAMEWORK SECURITY GROOVY REACTOR

IO E

XECU

TION

IO F

OUND

ATIO

NGRAILS

FULL STACK, WEB

XD

STREAMS, TAPS, JOBS

BOOT

BOOTABLE, MINIMAL, OPS-READY

BATCH

JOBS, STEPS,READERS, WRITERS

DATA

RELATIONAL DATA NON-RELATIONAL DATA

BIG DATA

INGESTION, EXPORT,ORCHESTRATION, HADOOP

WEB

CONTROLLERS, REST, WEBSOCKET

INTEGRATION

CHANNELS, FILTERS,ADAPTERS, TRANSFORMERS

IO C

OORD

INAT

ION

Page 6: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

TOOLBOXFOR DISTRIBUTED SYSTEMS

Page 7: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

SPRING CLOUDINTRODUCTION

Spring Cloud

BusConfig Netflix

AWS

Cloud FoundryCLIConnectors

Starters

Page 8: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

Application

CONFIGURATION MANAGEMENTMONOLITHIC VS. DISTRIBUTED

Application

JNDI

Service

ServiceService

Service

Service

Page 9: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

Spring Cloud Config

Spring Cloud Config Server

GIT

SVN

File

Page 10: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

Config Server

@Configuration@EnableAutoConfiguration@EnableConfigServerpublic class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }

Page 11: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

Spring Cloud Config Server

Application

Spring Cloud Config Client

Application

Spring Cloud Config Client

Application

Spring Cloud Config Client

Page 12: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

Application

Spring Cloud Config Client

@SpringBootApplicationpublic class CustomerApp { public static void main(String[] args) { SpringApplication.run(CustomerApp.class, args); } }

Bootstrap

Page 13: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

Spring Cloud Bus

Spring Cloud Config Server

Application

Application

/bus/refresh

AMQP

Page 14: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED
Page 15: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED
Page 16: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED
Page 17: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED
Page 18: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

PATTERNSSTABILITY CAPACITYTRANSPARENCY

Page 19: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

SPRING CLOUDNETFLIX

Hystrix

Feign

Zuul

Eureka

Turbine

Ribbon

Service Registry

Circuit Breaker

Stream Aggregator

Load Balancer

Edge Service

HTTP Communication

Page 20: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

HYSTRIXCIRCUIT BREAKER

Execute Command Queue Pool available

Run

Fallback

Page 21: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

HYSTRIXBULKHEADS

Tomcat Thread Pool

Thre

ad -

1

Service

Service

Service Service

Thre

ad -

2

Thre

ad -

3

XTh

read

- 4

Thre

ad -

5

Thre

ad -

6

Thre

ad -

7

Thre

ad -

8

Page 22: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

HYSTRIXBULKHEADS

Execute Command Queue Pool available

Execute Command Queue Pool available

Execute Command Queue Pool available

Page 23: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

HYSTRIX EXAMPLESERVICE CONSUMER

public class SearchGateway { @HystrixCommand(fallbackMethod = "fallback") public List<SearchHit> search(String query) { return …; } public List<SearchHit> fallback() { return Collections.emptyList(); } }

Page 24: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

HYSTRIXTRANSPARENCY

Page 25: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

HYSTRIX DASHBOARDEXAMPLE

@EnableCircuitBreaker@EnableHystrixDashboardpublic class HystrixApp { public static void main(String[] args) { SpringApplication.run(HystrixApp.class, args); }}

Page 26: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

TURBINEAGGREGATOR

Dashboard

Service

Service

Dashboard

Turbine

Service Service

Page 27: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

EUREKASERVICE DISCOVERY

Service

Service

Service

Service

XService

Service

Service

Service

Eure

ka

Page 28: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

EUREKA REGISTRATIONEXAMPLE

@SpringBootApplication@EnableDiscoveryClientpublic class CustomerApp { public static void main(String[] args) { SpringApplication.run(CustomerApp.class, args); } }

spring.application.name=customers

Page 29: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

EUREKA REGISTRATIONEXAMPLE

DiscoveryClientApplication

HostPortURI

Page 30: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

RIBBONLOAD-BALANCER

Service

Service

Eure

ka

Service

Service

Eure

ka

ServiceService

Load Balancer

Page 31: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

RIBBONRESTTEMPLATE INTEGRATION

@Servicepublic class Service { @Autowired @LoadBalanced RestTemplate restTemplate; public String callService() { return restTemplate.getForObject("http://CUSTOMERS/{id}", String.class,"23"); }}

Page 32: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

ZUULEDGE-SERVICE

Service

Eure

ka

Edge Proxy

Service

Eure

ka

ServiceService

Load Balancer

Web Browser

Web Browser

Page 33: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

ZUULREVERSE PROXY SETUP

@EnableAutoConfiguration@EnableZuulProxypublic class SimpleZuulServerApplication { public static void main(String[] args) { SpringApplication.run(SampleZuulProxyApplication.class, args); } }

http://localhost:9090/customershttp://localhost:9090/stores

Page 34: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

CLOUD FOUNDRYDEPLOYMENT

Stage App

Run n App Instances(and keep them running)

Push App> cf

Route to Apphttp://…

Page 35: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

CLOUD FOUNDRYAPI

DEA Pool (Droplet Execution Agent)

CloudController

(API)

Push App> cf

Router

http://…

Page 36: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

CLOUD FOUNDRYDROPLET EXECUTION AGENT

DEA Pool (Droplet Execution Agent)

CloudController

(API)

Push App> cf

Router

http://…

Page 37: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

CLOUD FOUNDRYDROPLET EXECUTION AGENT

CloudController

DEA Pool (Droplet Execution Agent)

DEA

Staging Apps

Running Apps(API)

Router

Push App> cf

http://…

Page 38: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

CLOUD FOUNDRYCONTAINERIZATION

CloudController

DEA Pool (Droplet Execution Agent)

DEA

Staging Apps

Running Apps

Warden

Containerization

(API)

Router

Push App> cf

http://…

Page 39: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

CLOUD FOUNDRYHEALTH MANAGER

CloudController

DEA Pool (Droplet Execution Agent)

DEA

Staging Apps

Running Apps

Warden

ContainerizationHealth Manager

(API)

Router

Push App> cf

http://…

Page 40: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

CLOUD FOUNDRYNATS

CloudController

Router

DEA Pool (Droplet Execution Agent)

DEA

Staging Apps

Running Apps

Warden

ContainerizationHealth Manager

NATS(message bus)

(API)

Push App> cf

http://…

Page 41: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

Fortune UI

Service Discovery

EurekaFortune Service

Config Server

Circuit Breaker Dashboard

Browser

Page 42: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED
Page 43: MICROSERVICES MIT SPRING CLOUD - Guild42.ch MIT SPRING CLOUD ALAIN SAHLI ALAIN.SAHLI@ MIMACOM.COM DISTRIBUTED SYSTEM DEPLOYMENTS @GITHUB 175 DEPLOYMENTS / DAY NETFLIX SERVICE ORIENTED

FRAGEN?