Upload
trancong
View
219
Download
0
Embed Size (px)
Citation preview
Rafael Martins• Desenvolvedor apaixonado
• Programador poliglota
• Jogador de Magic e RPG
• DJ nas horas vagas
• Globo.com / esportes
Bastidores da API de esportes da globo.com
4 milhões de reqs/dia com Python/Tornado, Redis e Nginx
Estado Anterior• Velocidade, 150 req/s.
• Documentação ruim.
• Serviços inconsistentes.
• Base de código ruim.
Requisitos• Acesso externo
• Controle
• Escalabilidade
• Velocidade
Premissas• Velocidade de resposta
• Ótima documentação.
• Serviços consistentes.
• Testes, testes e testes.
Tecnologias
Camadas Internas• Model
• Repository
• Controller
• View
Model
Model
Repository
Controller
View
View, set_max
View, set_max
29 elementos
View, set_min
16 elementos
View, set_min
Camadas
Responsabilidades bem definidas
2 hits para cada jogo
Cache
2 hits para cada jogo
CacheRecupera 10 Jogos
2 hits para cada jogo
CacheRecupera 10 Jogos
2 hits para cada jogo
CacheRecupera 10 Jogos
2 hits para cada jogo
CacheRecupera 10 Jogos
20 hits no cache
2 hits para cada jogo
CacheRecupera 10 Jogos
20 hits no cache
Cache
CacheRecupera 10 Jogos
CacheRecupera 10 JogosAgrupa os Ids
CacheRecupera 10 JogosAgrupa os IdsRecupera 20 equipes
CacheRecupera 10 JogosAgrupa os IdsRecupera 20 equipes
1 hit no cache
CacheRecupera 10 JogosAgrupa os IdsRecupera 20 equipes
1 hit no cache
Repository
RedisRepository
Mysql
Busca no cache a lista de ids para essa query
Repository
RedisRepository
Mysql
Faz a query no banco, retornando apenas os ids
Repository
RedisRepository
Mysql
Adiciona resultado da query no cache
Repository
RedisRepository
Mysql
Busca objetos no cache, gerando chaves por Id
Repository
RedisRepository
Mysql
Recupera do banco somente objetos não encontrados
Repository
RedisRepository
Mysql
Adiciona no cache objetos vindos do banco
Repository1. Busca no cache a query de lista.
2. Faz query de lista (retorna só id).
3. Busca no cache os objetos.
4. Busca no banco ids não encontrados.
5. Coloca no cache objetos encontrados.
6. Retorna lista de objetos
Cache
Cache
Lista de jogos de uma edição
Lista de edições
Scouts de uma edição
Outros
Cache
Vai salvar sua vida !!
Documentação
Documentação
Documentação
Documentação
Documentação
Documentação escala melhor do que suporte
Nginx HTTP AAA
webtoken
Autenticação Autorização
Limite de Acesso Monitoração
AAA
Nginx HTTP AAA
Autenticação Autorização
Limite de Acesso Monitoração
AAA
SDE API
Nginx HTTP AAA• Feito em C
• Redis
• Testes com rspec
• Dividido em 3 etapas
Nginx HTTP AAACom 1000 requests
simultâneos atendemos cada em
120ms
Nginx HTTP AAA
C é muito rápido…..
Uso atual1 Ano
Uso atualDia 06/04
Hack Day
• Novos serviços implementados com documentação e testes, por outra equipe.
• Uso da api em vários projetos.
Resultados
ResultadosAcesso externo simplificado.
Resultados
Produto do cliente em produção em 4 dias.
Acesso externo simplificado.
Resultados
Produto do cliente em produção em 4 dias.
Acesso externo simplificado.
Velocidade no desenvolvimento de serviços.
Resultados
Produto do cliente em produção em 4 dias.
Acesso externo simplificado.
Velocidade no desenvolvimento de serviços.
Segurança na suite de testes.
Resultados
Produto do cliente em produção em 4 dias.
Acesso externo simplificado.
Velocidade no desenvolvimento de serviços.
Segurança na suite de testes.
Servidores em 10%
Aprendizado
Fazer o certo deve ser simples.
Vagas !!!!
https://github.com/globocom/ IWantToWorkAtGloboCom
/dev
http://globodev.tumblr.com/