SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
A EVOLUÇÃO DE UMA
ARQUITETURA DISTRIBUÍDA:
DO GLOBO.TV
AO GLOBOSAT PLAY
Guilherme Garnier
http://blog.guilhermegarnier.com
@guilhermgarnier
Estamos contratando!
http://talentos.globo.com
PLATAFORMA DE VÍDEOS
2 M vídeos publicados
500 M videoviews/mês
2011
GLOBO.TV
produto de vídeos centralizado
Rede Globo e canais Globosat
trechos abertos e íntegras para assinantes
ARQUITETURA ORIGINAL
2012
NOVAS DEMANDAS
Transmissões ao vivo
Big Brother
UFC
Campeonato Brasileiro e estaduais
Olimpíadas de inverno
Canal Combate (acervo de lutas)
globotv globotv API
eventos VoD
API API
COMO MANTER A IDENTIDADE
VISUAL ENTRE OS PROJETOS?
GLOBOTV-UI
BIBLIOTECA DE COMPONENTES
HTML, JS e CSS
Padronização
Documentação
COMPONENTES DO GLOBOTV-UI
2014
Acervo dos canais Globosat
Transmissões ao vivo
Filmes
Lutas
DESAFIOS
manter a consistência entre os projetos
compartilhar APIs e componentes
evoluir a plataforma para manter o Globo.TV e receber o Globosat Play
globotv
globotv APIeventos VoD
globosat-play programas filmes
login busca
Globo.tv
Plataforma
Globosat
Play
API API
APIAPIAPI
EVOLUÇÃO DA ARQUITETURA
código de projetos antigos extraído para novos projetos
documentação de APIs internas
código comum compartilhado (gems internas)
versionamento de APIs
EVOLUÇÃO DA ARQUITETURA
ARQUITETURA RESILIENTE
Fazer o máximo para manter o site no ar
Foco nas principais features ("graceful degradation")
EVOLUÇÃO DA ARQUITETURA
ARQUITETURA RESILIENTE
Cache
Circuit breaker
Monitoração
Escalabilidade
CACHE
2 níveis (performance e stale)
diferentes tempos para cada serviço
https://github.com/globocom/content-gateway-ruby
menu_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")
CIRCUIT BREAKER
CIRCUIT BREAKER
http://martinfowler.com/bliki/CircuitBreaker.html
https://github.com/wsargent/circuit_breaker
MONITORAÇÃO
Falhas
Performance
ESCALABILIDADE
EVOLUÇÃO DA INFRA
CULTURA DEVOPS
Blue-green deploy
Docker
Tsuru (PaaS)
Database as a service
BLUE-GREEN DEPLOY
https://github.com/rafaelbiriba/cap_blue_green_deploy
Setup do ambiente local muito mais simples
Garante um ambiente igual para qualquer máquina
Isolamento de containers
docker run --name redis -d redis
docker run --name mongodb -d mongo:2.4 mongod
docker run --name globosatplay -p 3010:3010 -v "$(pwd)":/app 
--link mongodb:mongodb --link redis:redis globosatplay
https://tsuru.io/
PaaS open source da Globo.com
Mais liberdade para os desenvolvedores
Deploys mais rápidos e frequentes
Escalabilidade de forma simples
tsuru app-create myapp
git remote add tsuru git@example.com:myapp.git
git push tsuru master
DATABASE AS A SERVICE
https://github.com/globocom/database-as-a-service
MONOLITO X MICRO SERVIÇOS
ARQUITETURA MONOLÍTICA
Arquitetura mais simples
Setup local mais fácil
Atualizações mais rápidas (gems, bugfixes)
Mais fácil de testar
Ambiente homogêneo
Menos pontos de falha
MICRO SERVIÇOS
Projetos menores e mais fáceis de gerenciar
Build mais rápido
Deploys menores e menos arriscados
Infra mais flexível
Permite mudanças incrementais
QUAL A MELHOR ARQUITETURA?
DEPENDE!
REFERÊNCIAS
REFERÊNCIAS
http://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.
html
http://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/61479577
http://qconsp.com/sp2015/system/files/presentation-slides/QConSP2015-
MonolithToMicroServices.pdf
OBRIGADO!
http://blog.guilhermegarnier.com
@guilhermgarnier
Slides: http://blog.guilhermegarnier.com/evolucao-arquitetura/

Mais conteúdo relacionado

Mais procurados

Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020Renato Groff
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDevHélio Medeiros
 
Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Victor Souza
 
Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Hélio Medeiros
 
Github - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoGithub - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoHélio Medeiros
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errarBruno Calheira
 
Aula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - WebschoolAula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - WebschoolBruno Orlandi
 
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWDesvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWMorganna Giovanelli de Souza
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteWaldyr Felix
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesLeandro Cavalcante
 
Controlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteControlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteComunidade NetPonto
 

Mais procurados (17)

Git
GitGit
Git
 
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
Novidades do .NET 5 e ASP.NET 5 | Visual Studio Summit 2020
 
Novidades do I3GEO
Novidades do I3GEONovidades do I3GEO
Novidades do I3GEO
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016
 
Git & GitHub for beginners
Git & GitHub for beginnersGit & GitHub for beginners
Git & GitHub for beginners
 
Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.
 
Github - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoGithub - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimento
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errar
 
Aula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - WebschoolAula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - Webschool
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Git e Github
Git e GithubGit e Github
Git e Github
 
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWDesvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficiente
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de Versões
 
Controlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteControlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto Proiete
 

Destaque

นาย สกลภัทร สุขสวัสดิ์ ม.4I2 เลขที่ 26
นาย สกลภัทร สุขสวัสดิ์ ม.4I2 เลขที่ 26นาย สกลภัทร สุขสวัสดิ์ ม.4I2 เลขที่ 26
นาย สกลภัทร สุขสวัสดิ์ ม.4I2 เลขที่ 26sakonlapat25
 
Credentials Butterfly Media Group_July 2015
Credentials Butterfly Media Group_July 2015Credentials Butterfly Media Group_July 2015
Credentials Butterfly Media Group_July 2015Stefania Stroe
 
Test
TestTest
Testmukda
 
Pune open cloudfoundry keynote niranjan maka share
Pune open cloudfoundry keynote niranjan maka share Pune open cloudfoundry keynote niranjan maka share
Pune open cloudfoundry keynote niranjan maka share nmaka
 

Destaque (10)

Nursing resume 2015
Nursing resume 2015Nursing resume 2015
Nursing resume 2015
 
crazyy facts!!!
crazyy facts!!!crazyy facts!!!
crazyy facts!!!
 
นาย สกลภัทร สุขสวัสดิ์ ม.4I2 เลขที่ 26
นาย สกลภัทร สุขสวัสดิ์ ม.4I2 เลขที่ 26นาย สกลภัทร สุขสวัสดิ์ ม.4I2 เลขที่ 26
นาย สกลภัทร สุขสวัสดิ์ ม.4I2 เลขที่ 26
 
Credentials Butterfly Media Group_July 2015
Credentials Butterfly Media Group_July 2015Credentials Butterfly Media Group_July 2015
Credentials Butterfly Media Group_July 2015
 
Test
TestTest
Test
 
Foda
FodaFoda
Foda
 
Pune open cloudfoundry keynote niranjan maka share
Pune open cloudfoundry keynote niranjan maka share Pune open cloudfoundry keynote niranjan maka share
Pune open cloudfoundry keynote niranjan maka share
 
How to use Jing
How to use JingHow to use Jing
How to use Jing
 
Foda
FodaFoda
Foda
 
介護予防 バイオリズム2
介護予防 バイオリズム2介護予防 バイオリズム2
介護予防 バイオリズム2
 

Semelhante a Evolução da arquitetura da Globosat Play

Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkDesenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkAmazon Web Services LATAM
 
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Renato Groff
 
Simplificando seu DevOps com o Azure DevOps Project
Simplificando seu DevOps com o Azure DevOps ProjectSimplificando seu DevOps com o Azure DevOps Project
Simplificando seu DevOps com o Azure DevOps ProjectResource IT
 
Ginga - Solisc 2010
Ginga - Solisc 2010Ginga - Solisc 2010
Ginga - Solisc 2010Bruno Ghisi
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web ToolkitPT.JUG
 
Introdução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPIntrodução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPSamuel Sampaio
 
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019Renato Groff
 
Introdução ao Windows Azure
Introdução ao Windows AzureIntrodução ao Windows Azure
Introdução ao Windows AzureFernando Correia
 
workshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfworkshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfAuriceliaRosa
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android EmbarcadoOdair Sousa
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAlvaro Viebrantz
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoGuilhermeJorgeAragod
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeAlessandro Binhara
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
E-Book de estudos
E-Book de estudosE-Book de estudos
E-Book de estudosinfo_cimol
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline AppsByclosure
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...fabio perrella
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasCelso Crivelaro
 

Semelhante a Evolução da arquitetura da Globosat Play (20)

Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkDesenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
 
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Setembro-2019
 
Simplificando seu DevOps com o Azure DevOps Project
Simplificando seu DevOps com o Azure DevOps ProjectSimplificando seu DevOps com o Azure DevOps Project
Simplificando seu DevOps com o Azure DevOps Project
 
Ginga - Solisc 2010
Ginga - Solisc 2010Ginga - Solisc 2010
Ginga - Solisc 2010
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Liferay e Modularização com Arquitetura OSGi
Liferay e Modularização com Arquitetura OSGiLiferay e Modularização com Arquitetura OSGi
Liferay e Modularização com Arquitetura OSGi
 
Introdução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPIntrodução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySP
 
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019
Desenvolvimento de APIs REST Multiplataforma com ASP.NET Core - Julho-2019
 
Introdução ao Windows Azure
Introdução ao Windows AzureIntrodução ao Windows Azure
Introdução ao Windows Azure
 
workshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfworkshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdf
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google Cloud
 
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como CódigoCurso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
Curso de Verão - Aula 03 - Introdução ao CI-CD e Infraestrutura como Código
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
E-Book de estudos
E-Book de estudosE-Book de estudos
E-Book de estudos
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline Apps
 
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...Qconsp 2016   escalando uma plataforma de e-mail transacional- aprendizado da...
Qconsp 2016 escalando uma plataforma de e-mail transacional- aprendizado da...
 
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheirasEscalando uma plataforma de e-mail transacional- aprendizado das trincheiras
Escalando uma plataforma de e-mail transacional- aprendizado das trincheiras
 

Evolução da arquitetura da Globosat Play