Slide 1

Slide 1 text

domingo, 1 de dezembro de 13

Slide 2

Slide 2 text

eu • Desenvolvedor apaixonado • Programador poliglota • Jogador de Magic e RPG • DJ nas horas vagas • Globo.com / esportes domingo, 1 de dezembro de 13

Slide 3

Slide 3 text

Construindo uma API de dados esportivos que responde 6000 req/s domingo, 1 de dezembro de 13

Slide 4

Slide 4 text

api anterior • Velocidade -150 req/s • documentação ruim • serviços inconsistentes • base de código ruim domingo, 1 de dezembro de 13

Slide 5

Slide 5 text

requisitos • Acesso externo • Controle • Escalabilidade • Velocidade domingo, 1 de dezembro de 13

Slide 6

Slide 6 text

premissas • velocidade de resposta • ótima documentação • serviços consistentes • teste, teste e teste domingo, 1 de dezembro de 13

Slide 7

Slide 7 text

tecnologias domingo, 1 de dezembro de 13

Slide 8

Slide 8 text

camadas internas domingo, 1 de dezembro de 13

Slide 9

Slide 9 text

camadas internas Controller Model Repository View domingo, 1 de dezembro de 13

Slide 10

Slide 10 text

view domingo, 1 de dezembro de 13

Slide 11

Slide 11 text

model / view set min set max domingo, 1 de dezembro de 13

Slide 12

Slide 12 text

model / repository jogo.equipe_mandante.nome X X X domingo, 1 de dezembro de 13

Slide 13

Slide 13 text

model / repository jogo.equipe_mandante.nome X X X domingo, 1 de dezembro de 13

Slide 14

Slide 14 text

model / repository jogo.equipe_mandante.nome X X X ids = [jogo.equipe_mandante_id, jogo.equipe_visitante_id] equipe_repository = EquipeRepository() equipes = equipe_repository.get_equipes(ids) domingo, 1 de dezembro de 13

Slide 15

Slide 15 text

model / repository jogos = JogoRepository().get_jogos(edicao=”brasileirao2013”, pagina=1) equipes = set() for jogo in jogos: equipes.add(jogos.equipe_mandante.nome_popular) equipes.add(jogos.equipe_visitante.nome_popular) print equipes Modelo 1 domingo, 1 de dezembro de 13

Slide 16

Slide 16 text

model / repository jogos = JogoRepository().get_jogos(edicao=”brasileirao2013”, pagina=1) equipes = set() for jogo in jogos: equipes.add(jogos.equipe_mandante.nome_popular) equipes.add(jogos.equipe_visitante.nome_popular) print equipes Modelo 1 20 jogos 40 hits no cache domingo, 1 de dezembro de 13

Slide 17

Slide 17 text

model / repository jogos = JogoRepository().get_jogos(edicao=”brasileirao2013”, pagina=1) equipes_ids = set() for jogo in jogos: equipes.add(jogos.equipe_mandante_id) equipes.add(jogos.equipe_visitante_id) equipes = EquipeRepository().get_equipes(id=equipes_ids) [ print equipe.nome_popular for equipe in equipes ] Modelo 2 domingo, 1 de dezembro de 13

Slide 18

Slide 18 text

model / repository jogos = JogoRepository().get_jogos(edicao=”brasileirao2013”, pagina=1) equipes_ids = set() for jogo in jogos: equipes.add(jogos.equipe_mandante_id) equipes.add(jogos.equipe_visitante_id) equipes = EquipeRepository().get_equipes(id=equipes_ids) [ print equipe.nome_popular for equipe in equipes ] Modelo 2 20 jogos 2 hits ao cache domingo, 1 de dezembro de 13

Slide 19

Slide 19 text

model / repository Modelo 2 Modelo 1 domingo, 1 de dezembro de 13

Slide 20

Slide 20 text

model / repository Modelo 2 Modelo 1 domingo, 1 de dezembro de 13

Slide 21

Slide 21 text

model / repository Modelo 2 Modelo 1 domingo, 1 de dezembro de 13

Slide 22

Slide 22 text

cache back-end lista de jogos classificação ficha Romário Romário redis mysql domingo, 1 de dezembro de 13

Slide 23

Slide 23 text

cache back-end lista de jogos classificação ficha Romário Romário redis mysql domingo, 1 de dezembro de 13

Slide 24

Slide 24 text

cache back-end lista de jogos classificação ficha Romário Romário redis mysql domingo, 1 de dezembro de 13

Slide 25

Slide 25 text

cache back-end lista de jogos classificação ficha Romário Romário redis mysql domingo, 1 de dezembro de 13

Slide 26

Slide 26 text

cache back-end lista de jogos classificação ficha Romário Romário redis mysql domingo, 1 de dezembro de 13

Slide 27

Slide 27 text

cache back-end lista de jogos classificação ficha Romário Romário redis mysql domingo, 1 de dezembro de 13

Slide 28

Slide 28 text

cache back-end lista de jogos classificação ficha Romário Romário redis mysql domingo, 1 de dezembro de 13

Slide 29

Slide 29 text

expiração ativa SDE API /atletas/romario /equipes/flamengo/elenco Cache SDE Admin Banco de domingo, 1 de dezembro de 13

Slide 30

Slide 30 text

expiração ativa SDE API /atletas/romario /equipes/flamengo/elenco Cache SDE Admin Banco de domingo, 1 de dezembro de 13

Slide 31

Slide 31 text

expiração ativa SDE API /atletas/romario /equipes/flamengo/elenco Cache atletas savio, nelio, romario atleta nelio atleta savio atleta romario SDE Admin Banco de domingo, 1 de dezembro de 13

Slide 32

Slide 32 text

expiração ativa SDE API /atletas/romario /equipes/flamengo/elenco Cache atletas savio, nelio, romario atleta nelio atleta savio atleta romario SDE Admin Banco de domingo, 1 de dezembro de 13

Slide 33

Slide 33 text

expiração ativa SDE API /atletas/romario /equipes/flamengo/elenco Cache atletas savio, nelio, romario atleta nelio atleta savio atleta romario SDE Admin Banco de domingo, 1 de dezembro de 13

Slide 34

Slide 34 text

expiração ativa SDE API /atletas/romario /equipes/flamengo/elenco Cache atletas savio, nelio, romario atleta nelio atleta savio atleta romario SDE Admin Banco de domingo, 1 de dezembro de 13

Slide 35

Slide 35 text

expiração ativa SDE API /atletas/romario /equipes/flamengo/elenco Cache atleta nelio atleta savio SDE Admin Banco de domingo, 1 de dezembro de 13

Slide 36

Slide 36 text

Nginx - AAA web Autenticação Acesso Autorização Monitoração token: aaa Nginx- AAA Redis domingo, 1 de dezembro de 13

Slide 37

Slide 37 text

Nginx - AAA web Autenticação Acesso Autorização Monitoração token: aaa Nginx- AAA Redis Com 1000 req simultâneas em 120ms domingo, 1 de dezembro de 13

Slide 38

Slide 38 text

Nginx - AAA domingo, 1 de dezembro de 13

Slide 39

Slide 39 text

Nginx - AAA domingo, 1 de dezembro de 13

Slide 40

Slide 40 text

Nginx - AAA domingo, 1 de dezembro de 13

Slide 41

Slide 41 text

cache front-end Nginx - AAA Nginx - cache SDE API SDE API SDE API web domingo, 1 de dezembro de 13

Slide 42

Slide 42 text

documentação domingo, 1 de dezembro de 13

Slide 43

Slide 43 text

resultados • Serviços no Hack Day • Clientes com software em produção em 3 dias sem nenhum email. • Mais de 3 milhões de req/dia • Máquinas com load abaixo de 10% • Deploy constante domingo, 1 de dezembro de 13

Slide 44

Slide 44 text

estamos contratando domingo, 1 de dezembro de 13

Slide 45

Slide 45 text

contato [email protected] @rafael_mws :D domingo, 1 de dezembro de 13