A evolução de uma arquitetura distribuída

41
A EVOLUÇÃO DE UMA ARQUITETURA DISTRIBUÍDA: DO GLOBO.TV AO GLOBOSAT PLAY Guilherme Garnier

Transcript of A evolução de uma arquitetura distribuída

Page 1: A evolução de uma arquitetura distribuída

A EVOLUÇÃO DE UMAARQUITETURA DISTRIBUÍDA:

DO GLOBO.TV AO GLOBOSAT PLAY

Guilherme Garnier

Page 2: A evolução de uma arquitetura distribuída

http://blog.guilhermegarnier.com

@guilhermgarnier

Page 3: A evolução de uma arquitetura distribuída

Estamos contratando!http://talentos.globo.com

Page 4: A evolução de uma arquitetura distribuída

PLATAFORMA DE VÍDEOS2 M vídeos publicados

500 M videoviews/mês

Page 5: A evolução de uma arquitetura distribuída

2011GLOBO.TV

produto de vídeos centralizadoRede Globo e canais Globosattrechos abertos e íntegras para assinantes

Page 6: A evolução de uma arquitetura distribuída
Page 7: A evolução de uma arquitetura distribuída

ARQUITETURA ORIGINAL

Page 8: A evolução de uma arquitetura distribuída

2012NOVAS DEMANDAS

Transmissões ao vivoBig BrotherUFCCampeonato Brasileiro e estaduaisOlimpíadas de inverno

Canal Combate (acervo de lutas)

Page 9: A evolução de uma arquitetura distribuída
Page 10: A evolução de uma arquitetura distribuída

globotv globotv API

eventos VoD

API API

Page 11: A evolução de uma arquitetura distribuída

COMO MANTER A IDENTIDADEVISUAL ENTRE OS PROJETOS?

Page 12: A evolução de uma arquitetura distribuída
Page 13: A evolução de uma arquitetura distribuída
Page 14: A evolução de uma arquitetura distribuída

GLOBOTV-UIBIBLIOTECA DE COMPONENTES

HTML, JS e CSSPadronizaçãoDocumentação

Page 15: A evolução de uma arquitetura distribuída

COMPONENTES DO GLOBOTV-UI

Page 16: A evolução de uma arquitetura distribuída

2014

Acervo dos canais GlobosatTransmissões ao vivoFilmesLutas

Page 17: A evolução de uma arquitetura distribuída

DESAFIOSmanter a consistência entre os projetoscompartilhar APIs e componentesevoluir a plataforma para manter o Globo.TV e receber o Globosat Play

Page 18: A evolução de uma arquitetura distribuída

globotv

globotv APIeventos VoD

globosat-play programas filmes

login busca

Globo.tv

Plataforma

GlobosatPlay

API API

APIAPIAPI

Page 19: A evolução de uma arquitetura distribuída
Page 20: A evolução de uma arquitetura distribuída

EVOLUÇÃO DA ARQUITETURAcódigo de projetos antigos extraído para novos projetosdocumentação de APIs internascódigo comum compartilhado (gems internas)versionamento de APIs

Page 21: A evolução de uma arquitetura distribuída

EVOLUÇÃO DA ARQUITETURAARQUITETURA RESILIENTE

Fazer o máximo para manter o site no arFoco nas principais features ("graceful degradation")

Page 22: A evolução de uma arquitetura distribuída

EVOLUÇÃO DA ARQUITETURAARQUITETURA RESILIENTE

CacheCircuit breakerMonitoraçãoEscalabilidade

Page 23: A evolução de uma arquitetura distribuída

CACHE2 níveis (performance e stale)diferentes tempos para cada serviço

https://github.com/globocom/content-gateway-rubymenu_config = OpenStruct.new( cache: Rails.cache, timeout: 1, cache_expires_in: 30.minutes, cache_stale_expires_in: 2.days)

gateway = ContentGateway::Gateway.new("Menu", menu_config)

gateway.get_json("/api/menu.json")

Page 24: A evolução de uma arquitetura distribuída
Page 25: A evolução de uma arquitetura distribuída

CIRCUIT BREAKER

Page 26: A evolução de uma arquitetura distribuída

CIRCUIT BREAKER

http://martinfowler.com/bliki/CircuitBreaker.html

https://github.com/wsargent/circuit_breaker

Page 27: A evolução de uma arquitetura distribuída

MONITORAÇÃOFalhasPerformance

Page 28: A evolução de uma arquitetura distribuída

ESCALABILIDADE

Page 29: A evolução de uma arquitetura distribuída

EVOLUÇÃO DA INFRACULTURA DEVOPS

Blue-green deployDockerTsuru (PaaS)Database as a service

Page 30: A evolução de uma arquitetura distribuída

BLUE-GREEN DEPLOY

https://github.com/rafaelbiriba/cap_blue_green_deploy

Page 31: A evolução de uma arquitetura distribuída
Page 32: A evolução de uma arquitetura distribuída

Setup do ambiente local muito mais simplesGarante um ambiente igual para qualquer máquinaIsolamento de containers

docker run --name redis -d redisdocker run --name mongodb -d mongo:2.4 mongoddocker run --name globosatplay -p 3010:3010 -v "$(pwd)":/app \ --link mongodb:mongodb --link redis:redis globosatplay

Page 33: A evolução de uma arquitetura distribuída

https://tsuru.io/

PaaS open source da Globo.com

Mais liberdade para os desenvolvedoresDeploys mais rápidos e frequentesEscalabilidade de forma simples

tsuru app-create myappgit remote add tsuru [email protected]:myapp.gitgit push tsuru master

Page 34: A evolução de uma arquitetura distribuída

DATABASE AS A SERVICEhttps://github.com/globocom/database-as-a-service

Page 35: A evolução de uma arquitetura distribuída

MONOLITO X MICRO SERVIÇOS

Page 36: A evolução de uma arquitetura distribuída

ARQUITETURA MONOLÍTICA

Arquitetura mais simplesSetup local mais fácilAtualizações mais rápidas (gems, bugfixes)Mais fácil de testarAmbiente homogêneoMenos pontos de falha

Page 37: A evolução de uma arquitetura distribuída

MICRO SERVIÇOS

Projetos menores e mais fáceis de gerenciarBuild mais rápidoDeploys menores e menos arriscadosInfra mais flexívelPermite mudanças incrementais

Page 38: A evolução de uma arquitetura distribuída

QUAL A MELHOR ARQUITETURA?

DEPENDE!

Page 39: A evolução de uma arquitetura distribuída

REFERÊNCIAS

Page 40: A evolução de uma arquitetura distribuída

REFERÊNCIAShttp://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.htmlhttp://labs.spotify.com/2014/03/27/spotify-engineering-culture-part-1/https://sudo.hailoapp.com/web/2014/12/08/webapps-as-microservices/http://www.ustream.tv/recorded/61479577http://qconsp.com/sp2015/system/files/presentation-slides/QConSP2015-MonolithToMicroServices.pdf

Page 41: A evolução de uma arquitetura distribuída

OBRIGADO!http://blog.guilhermegarnier.com

@guilhermgarnier

Slides: http://blog.guilhermegarnier.com/evolucao-arquitetura/