SlideShare una empresa de Scribd logo
1 de 70
Descargar para leer sin conexión
O CartolaFC e o processo 
de desenvolvimento na 
globo.com
- bacharel em informática 
PUC-Rio 
- web developer 
- ~ 10 anos de globo.com 
- ~ 6 anos em equipes ágeis 
Alexandre Saboia 
saboia@corp.globo.com 
@alexandresaboia
14 
anos de estrada
45 
milhões de acessos/dia
+500 
funcionários
+35 
times de desenvolvimento
Trabalho 
em equipe!
http://sendamessage.to/dist/images/thumbsup-700/18.jpg
globoesporte.com
éramos assim…
desenvolvimento de software clássico 
http://www.oldclitheroe.co.uk/railwaystation2.jpg 
fases: 
análise de requisitos 
especificação 
arquitetura 
implementação 
testes 
documentação 
suporte e treinamento 
manutenção
waterfall !
agora, estamos assim:
times multidisciplinares 
http://www.sbcoaching.com.br/blog/wp-content/uploads/2013/08/equipe-maos.jpg 
e auto-organizáveis !
http://talksport.com/sites/default/files/tscouk_old_image/blog/Scrum_0.jpg
incremental x interativo
metodologia ágil
times compostos por: 
! 
• arquiteto de informação e designer 
• desenvolvedor de software 
• backend + frontend 
• product owner e scrum master 
! 
• especialista em banco de dados 
• especialista em infraestrutura
de olho na qualidade!
Reviews
opensource 
+ 
colaboração
opensource.globo.com
+110 
colaboradores internos
+80 
repositórios abertos
+
+
https://assets-cdn.github.com/images/modules/logos_page/Octocat.png 
github.com/globocom
minha estação de 
trabalho!
além disto…
Hackday
Big Review!
Cursos
Workshops
Javali de Ouro!
1,300,000 
1,150,000 
1,000,000 
850,000 
700,000 
550,000 
2012 
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 
1.283.676 times usmalvao úsn eicma rodada 
! 
2011 
! 
3.0m00a.is0 0d0e ! de times 2010
cartolafc 
acessos simultâneos
o desafio: 
Desenvolver uma aplicação, que 
suporte o volume de acesso do 
cartolafc, com alta performance 
e disponibilidade.
cartolafc 
o pioneiro 
http://nginx.org/ 
https://github.com/nginx/nginx 
http://www.tornadoweb.org/en/stable/ 
https://github.com/tornadoweb/tornado
http://www.apache.org/ 
presente na maioria das 
aplicações da globo.com
A little holiday present: 
10,000 reqs/sec with Nginx! 
http://blog.webfaction.com/2008/12/a-little-holiday-present-10000-reqssec-with-nginx-2/ 
x
Principais módulos: 
!- Proxy Cache 
- Load Balancer 
- SSI Dinâmico 
- Nginx Pushstream
https://developers.facebook.com/blog/post/301
Principais características: 
!- opensource 
- simples 
- alta performance 
- não bloqueante I/O 
- consumo baixo de recursos
cartolafc 
tecnologias aplicadas 
PUSH STREAM 
asyncmongo 
beanstalkd
cartolafc 
arquitetura da aplicação
cartolafc 
arquitetura da aplicação 
tornado 
controller 
repository template 
model
cartolafc 
a idéia de box 
. . . NPUSH STREAM 
PUSH STREAM 
beanstalkd 
7 x 
DEAMON x 5 
beanstalkd 
7 x 
DEAMON x 5 
PUSH STREAM 
beanstalkd 
7 x 
DEAMON x 5 
PUSH STREAM 
beanstalkd 
7 x 
DEAMON x 5 
PUSH STREAM 
beanstalkd 
7 x 
DEAMON x 5
cartolafc 
arquitetura do banco de dados 
vip de escrita 
Slave 
Master 
vip de leitura
1,5 milhão de times X 12 atletas X 38 rodadas = 684.000.000 de linhas = 20% 
24 Cores 
cartolafc 
processamento da rodada 
multiprocesso 
24 Cores ...
cartolafc 
client side 
Principais pontos: 
!- navegação em javascript (sem reload) 
- jQuery 
- redução no número de requests 
- sprites e otimização nas imagens 
- minify javascript
cartolafc 
testes automatizados
cartolafc 
deployment pipeline
cartolafc 
testes de performance 
Principais pontos: 
!- testes feitos ao longo de todo o 
desenvolvimento do game 
- cenários de testes simulando um uso 
em produção 
- testes de novas tecnologias para sair 
de gargalos
cartolafc 
testes de performance 
benchmark 
$ ab -n 1000 -c 5 http://202.54.200.1/test.html 
-n 1000: ab will send 1000 number of requests 
-c 5 : 5 is concurrency number 
http://httpd.apache.org/docs/2.2/programs/ab.html
cartolafc 
referências 
- http://pt.slideshare.net/davidsonfellipe/como-e-trabalhar-na- 
globocom 
! - http://pt.slideshare.net/marcelnicolay/cartolafc-uma-aplicao- 
python-rpida-e-escalvel-pythonbrasil-6 
! - http://pt.slideshare.net/rveiga/rveiga-agilidaderecife2013 
! - http://speakerdeck.com/saboia/tornado-plus-mongodb-plus- 
nginxpushstream-equals-newsfeed-no-cartolafc
perguntas?
obrigado! 
Alexandre Saboia 
saboia@corp.globo.com 
@alexandresaboia

Más contenido relacionado

La actualidad más candente

Deployment no Azure
Deployment no AzureDeployment no Azure
Deployment no AzureRodrigo Kono
 
Servidor de Build e Integração Contínua
Servidor de Build e Integração ContínuaServidor de Build e Integração Contínua
Servidor de Build e Integração ContínuaRodrigo Kono
 
O maravilhoso mundo dos webhooks
O maravilhoso mundo dos webhooksO maravilhoso mundo dos webhooks
O maravilhoso mundo dos webhooksRodrigo Kono
 
Abertura - Workshop ASP.NET Core
Abertura - Workshop ASP.NET CoreAbertura - Workshop ASP.NET Core
Abertura - Workshop ASP.NET CoreRodrigo Kono
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensPaulino Michelazzo
 
MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.Leonardo Quevedo
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Pablo Souza
 
9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometemFernando Henriques
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenterPaulino Michelazzo
 
ASP.NET Core: visão geral, exemplos práticos e novidades - .NET SP - Agosto-2017
ASP.NET Core: visão geral, exemplos práticos e novidades - .NET SP - Agosto-2017ASP.NET Core: visão geral, exemplos práticos e novidades - .NET SP - Agosto-2017
ASP.NET Core: visão geral, exemplos práticos e novidades - .NET SP - Agosto-2017Renato Groff
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensRodrigo Matheus
 
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...Renato Groff
 
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geralRenato Groff
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarFilipe Falcão
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Renato Groff
 
Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...
Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...
Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...Renato Groff
 
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Bruno Rocha
 
Automatizando tudo no backend com Cake!
Automatizando tudo no backend com Cake!Automatizando tudo no backend com Cake!
Automatizando tudo no backend com Cake!Robson Soares Amorim
 

La actualidad más candente (20)

Deployment no Azure
Deployment no AzureDeployment no Azure
Deployment no Azure
 
Servidor de Build e Integração Contínua
Servidor de Build e Integração ContínuaServidor de Build e Integração Contínua
Servidor de Build e Integração Contínua
 
O maravilhoso mundo dos webhooks
O maravilhoso mundo dos webhooksO maravilhoso mundo dos webhooks
O maravilhoso mundo dos webhooks
 
Javascript nos dias de hoje
Javascript nos dias de hojeJavascript nos dias de hoje
Javascript nos dias de hoje
 
Abertura - Workshop ASP.NET Core
Abertura - Workshop ASP.NET CoreAbertura - Workshop ASP.NET Core
Abertura - Workshop ASP.NET Core
 
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvensDrupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
Drupal Performance - Dicas e técnicas para levar seu Drupal às nuvens
 
MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?
 
Django - Muito além do básico
Django - Muito além do básicoDjango - Muito além do básico
Django - Muito além do básico
 
9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenter
 
ASP.NET Core: visão geral, exemplos práticos e novidades - .NET SP - Agosto-2017
ASP.NET Core: visão geral, exemplos práticos e novidades - .NET SP - Agosto-2017ASP.NET Core: visão geral, exemplos práticos e novidades - .NET SP - Agosto-2017
ASP.NET Core: visão geral, exemplos práticos e novidades - .NET SP - Agosto-2017
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagens
 
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
5 Tecnologias que todo Desenvolvedor Web deveria conhecer - Developers-BR - O...
 
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
.NET Core 2.0, .NET Standard 2.0 e ASP.NET Core 2.0: uma visão geral
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
Descomplicando a montagem de ambientes de Desenvolvimento/Testes com Docker -...
 
Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...
Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...
Desenvolvimento multiplataforma em .NET Core utilizando SQL Server 2019, Dock...
 
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
Quokka CMS - Desenvolvendo web apps com Flask e MongoDB - grupy - Outubro 2015
 
Automatizando tudo no backend com Cake!
Automatizando tudo no backend com Cake!Automatizando tudo no backend com Cake!
Automatizando tudo no backend com Cake!
 

Similar a O CartolaFC e o processo de desenvolvimento na globo.com

ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
Arquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningArquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningFelipe Santos
 
JS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endJS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endiMasters
 
Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13Flavio Torres
 
Node.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo realNode.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo realDiogo Cabral da Silva
 
Machine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produçãoMachine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produçãoMarlesson Santana
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012Carlos Casalicchio
 
Performance na web, além do framework
Performance na web, além do frameworkPerformance na web, além do framework
Performance na web, além do frameworkAlexandre Cardoso
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Thiago Rondon
 
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMinicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMarcelo Linhares
 
Aplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full StackAplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full StackJoão Gabriel Lima
 
Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações WebAnderson Aguiar
 
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Renato Groff
 
Guia prático de desenvolvimento front-end para django devs
Guia prático de desenvolvimento front-end para django devsGuia prático de desenvolvimento front-end para django devs
Guia prático de desenvolvimento front-end para django devsDavidson Fellipe
 
Planejamento e Gerenciamento de Capacidade para Sistemas Distribuídos
Planejamento e Gerenciamento de Capacidade para Sistemas DistribuídosPlanejamento e Gerenciamento de Capacidade para Sistemas Distribuídos
Planejamento e Gerenciamento de Capacidade para Sistemas Distribuídosluanrjesus
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentasluanrjesus
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaSensedia
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Leandro Nunes
 

Similar a O CartolaFC e o processo de desenvolvimento na globo.com (20)

ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
Arquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningArquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine Learning
 
A revolução do client side
A revolução do client sideA revolução do client side
A revolução do client side
 
JS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front endJS Experience 2017 - Otimizando o front end
JS Experience 2017 - Otimizando o front end
 
Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13
 
Node.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo realNode.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo real
 
Machine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produçãoMachine Learning: Do Notebook ao modelo em produção
Machine Learning: Do Notebook ao modelo em produção
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012
 
Performance na web, além do framework
Performance na web, além do frameworkPerformance na web, além do framework
Performance na web, além do framework
 
Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.Cache, Concorrência e Sincronização.
Cache, Concorrência e Sincronização.
 
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São GabrielMinicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
Minicurso Ajax - 5. Semana de Informática PUC Minas São Gabriel
 
Aplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full StackAplicações de Alto Desempenho com JHipster Full Stack
Aplicações de Alto Desempenho com JHipster Full Stack
 
Mini Curso Mashup Coreu
Mini Curso Mashup CoreuMini Curso Mashup Coreu
Mini Curso Mashup Coreu
 
Alta Performance em Aplicações Web
Alta Performance em Aplicações WebAlta Performance em Aplicações Web
Alta Performance em Aplicações Web
 
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
Docker: Introdução e Primeiros Passos - CEUNSP - Outubro-2018
 
Guia prático de desenvolvimento front-end para django devs
Guia prático de desenvolvimento front-end para django devsGuia prático de desenvolvimento front-end para django devs
Guia prático de desenvolvimento front-end para django devs
 
Planejamento e Gerenciamento de Capacidade para Sistemas Distribuídos
Planejamento e Gerenciamento de Capacidade para Sistemas DistribuídosPlanejamento e Gerenciamento de Capacidade para Sistemas Distribuídos
Planejamento e Gerenciamento de Capacidade para Sistemas Distribuídos
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentas
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?
 

O CartolaFC e o processo de desenvolvimento na globo.com