netflix oss

Post on 22-Jan-2018

384 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

About.me

Desenvolvedor de software 10 anos

Java (JavaEE e Spring), Magic, JS, C, Delphi… (sim, Delphi…)

Diferentes tipos de projetos e empresas

Sites

B2C

B2B

Atualmente arquiteto de software na Ilegra

https://www.linkedin.com/in/crisaltmann/

this.presentation

RuntimeServices open netflix

Discovery: Eureka

Gateway: Zuul

Service communication: Ribbon

Service client: Feign

Service reliability: Hystrix

98,7 milhões assinantes

(02/17)

1T2017: +5 M

42,5 bilhões horas em

streaming (2016)

Percentual de market share

nos EUA: 75%

Netflix

Valor estimado empresa: $ 60 bi

Receita 1T2017 $ 2.5 B

Incluindo DVD: $ 2.63 B

Netflix

Uso internet EUA:

Netflix: 37.5%

Youtube: 17%

Média de 45 Gb / mês por usuário

Subiram 329.400.000.000 Gb (2015)

Netflix

Referência em cloud, microserviços

Contribuição importante comunidade open source.

Referência em serviços resilientes

Em 02/2017, um datacenter da amazon caiu: ~150 k sites afetados

Site da amazon - OFF

Netflix - ON

https://netflix.github.io/

Netflix

Archaius

Atlas (Billion metrics per minute)

Governator

Prana

Spinnaker

etc.

Netflix open source stack

Spring Cloud Netflix (https://cloud.spring.io/spring-cloud-netflix/)

Totalmente integrado com a plataforma spring

Maioria do código envolve algumas poucas anotações.

Você ganha:

Spring (boot ou não)

Componentes que rodam e suportam todos aqueles números citados

A tua demanda supera isso?

Netflix open source stack

Netflix open source stack

Eureka

APP-2

APP-1

APP-2

zuulribbon

feign

hystrix

Netflix open source stack

Eureka

APP-2

APP-1

APP-2

zuulribbon

feign

hystrix

Interjeição atribuída a Arquimedes: Encontrei, Descobri.

Serviço de discoverability

Componente central da plataforma

Baseado em REST

Eureka

Tradicionalmente

Weblogic10.1.12.254:4566

DNSmeusservico.com.be/service

Microserviços + cloud native

Serviço10.1.12.254:4566

Serviço10.1.12.1:1000

Serviço OUT10.1.12.254:4566

client

E agora?

Microserviços + cloud native

Serviço10.1.12.254:4566

client EurekaSolicita endpoint

Netflix - EurekaE

Eureka lifecycle - register

client Eureka

Register

Application nameHostPortDS-Zone

Dados serviços registrados

Eureka lifecycle - heartbeating

client Eureka

Ping

Application nameHostPortDS-Zone

Dados

Eureka lifecycle - heartbeating fail

client Eureka

Eureka lifecycle - rises heartbeating

client Eureka

Ping

Dados

Eureka lifecycle - shutdown gracefully

client EurekaCancel

Netflix - Eureka Server

Netflix - Eureka Server

Netflix - Eureka Client

Netflix - Eureka Client

Netflix - Eureka Client

Netflix - Eureka Server

Configuração server peer exige o conhecimento dos outros servers.

Tempo default de heartbeating elevado para dev.

Pooling

Fetch todos serviços

Server peers replicam todo os dados para TODOS os peers.

Netflix - Eureka limitações v1

Client se registra informando quais atualizações ele deseja receber

Server enviam atualizações para os clients quando ocorrerem

Separação entre leitura / escrita.

Melhorias no algoritmo replicação

Rich dashboard

Netflix - Eureka v2

Netflix - Eureka v2

Executar chamadas

Feign + Ribbon

Eureka

APP-2

APP-1

APP-2

zuulribbon

feign

hystrix

Lib para comunicação entre processos.

Client Load Balancer.

Tolerância a falhas

Múltiplos protocolos (HTTP, TCP, UDP)

Netflix - Ribbon

Netflix - Ribbon

APP-1

APP-2

APP-2

Eureka

Netflix - Ribbon

APP-1

APP-2

APP-2

Eureka

Netflix - Ribbon

APP-1

APP-2

APP-2

Eureka

RoundRobinRule

AvailabilityFilteringRule

WeightedResponseTimeRule

ZoneAvoidanceRule

Netflix - Ribbon

Netflix - App-2 exemplo

Netflix - Eureka Client Load Balancer

application-name

Netflix - Ribbon round robin

Netflix - Ribbon round robin

Netflix - Ribbon Rule

REST Client

Integrate via REST Contract

Utiliza ribbon

@EnableFeignClients

Netflix - Feign

Netflix - Feign

Netflix - Feign call

POR MELHOR QUE SEJA A EQUIPE

sh** happens

Hystrix

Eureka

APP-2

APP-1

APP-2

zuulribbon

feign

hystrix

Circuit break pattern

Timeout

Fallback

Metrics

Netflix - Hystrix

circuitBreaker.requestVolumeThreshold

Qtde para abrir o circuito na janela tempo

circuitBreaker.sleepWindowInMilliseconds

Tempo para começar a passar algum request novamente

Netflix - Hystrix Command

Turbine stream

Dashboard com metricas

Diversos indicadores:

Status circuito

Latência

Request rate

Percentual erro últimos 10 requests

Netflix - Hystrix stream

Netflix - Hystrix

Netflix - @EnableHystrixDashboard

Time amadurecendo o uso

Dificuldade negócio entender o "fallback"

Problemas com erros 4xx

Dashboard pouco usual

Netflix - Hystrix stream

MÉTRICAS…. MUITAS MÉTRICAS

Netflix -

Zuul

Eureka

APP-2

APP-1

APP-2

zuulribbon

feign

hystrix

Netflix - Zuul

Gateway

Dynamic routing

Integração eureka

Filters

Canary

AB

Netflix - Zuul

Netflix - Zuul

ZuulEureka

Client

Serviço A Serviço B

@EnableZuulProxy

Config 1:

zuul.routes.pessoa.path=/pessoa/**

zuul.routes.pessoa.serviceId: pessoa-service

Config 2:

zuul.routes.pessoa.path=/pessoa/**

zuul.routes.pessoa.url: https://servico-pessoa.com.br

Netflix - Zuul

Netflix - Zuul

ZuulEureka

Client

Serviço A Serviço BServiço A'

AB FILTER

Netflix - Rx

top related