Upload
victor-pantoja
View
136
Download
0
Embed Size (px)
Citation preview
2
Victor Pantoja
Engenheiro Eletrônico e de Computação pela UFRJ e mestre em Informática pela PUC-Rio, possuo mais de 9 anos de experiência desenvolvendo grandes sites focados no usuário.
Scrum Master da área de aplicações móveis (before it was cool) de 2007 a 2008.
Atualmente, sou desenvolvedor web sênior no globoesporte.com.
Background
Scrum na globo.com desde julho de 2007
4 Times Ágeis com 3 a 4 dev + 1 Infra + 1 DBA + SM + 1 PO
Maioria do software em Python / Django
3
Tamanho do Problema
Visitantes únicos: 20,7 milhões por mês
4
Visitas: 215 milhões por mês
8 milhões de visitas por dia!
Cenário 2011
6
- 1 time recém-formado trabalhando no globoesporte.com
- nenhum dos desenvolvedores jamais havia trabalhado no portal e nem com o framework por trás dele
- código legado construído sobre um framework quando este ainda estava no início de seu desenvolvimento.
- testes escassos
- não sabíamos o impacto das alterações que fazíamos mas éramos apenas um time
Cenário 2011
7
- SporTV.com foi o primeiro projeto deste time
- ownership do código e do projeto
- começamos a conhecer cada linha de código do projeto
- definimos padrões de código e de testes
Mudanças
10
- novos sites Combate e Eu Atleta (desenvolvidos pelo time 1)
- importantes eventos esportivos com data bem definida, como as Olimpíadas de Londres 2012 e Copa do Mundo FIFA 2014
Mudanças
11
1 time trabalhando no globoesporte.com
1 time trabalhando no SporTV
1 time trabalhando em Classificação / Tabelas / Tempo Real
1 time realizando integrações com o Cartola FC
Mudanças
13
Cada time possuía seus próprios padrões de código e testes e sua verdade absoluta
Os padrões que impúnhamos não eram aceitos pelos demais times e sentíamos que faltava diálogo
Diálogo
19
Reuniões periódicas para:
-falar sobre o que cada time está fazendo-identificar pontos de sobreposição de
trabalho e reuso de código-discutir novas tecnologias-melhorar nosso processo de trabalho
Segregação do Código
20
- havia uma quantidade (pequena) de bugs introduzidos em código alheio
- código legado anterior ao meu time e do meu próprio time precisava ficar isolado
Segregação do Código
21
Em essência, Django Application é simplesmente um pacote Python que segue algumas convenções. Essas convenções são importantes, pois permitem que o Django detecte suas características e agregue suas funcionalidades ao projeto.
Fonte: http://henriquebastos.net/desmistificando-o-conceito-de-django-apps/
Segregação do Código
22
- divisão do globoesporte.com em dezenas de apps isoladas que falam entre si apenas por interfaces
- nenhum método de uma app que não estivesse exposto poderia ser usado
- facilidade no gerenciamento do ciclo de vida de cada app
Segregação de Código
Utilize os recursos da própria linguagem!
Grau de acoplamento deve ser visto caso a caso
Integração Antecipada de Código
28
- estava se tornando comum quebrar o código do colega ao lado e só perceber no último momento (PROD)
Como resolver?
29
Perguntar se alguém usa certo trecho de código se mostrou bastante ineficiente pelo tamanho do projeto
Como resolver?
30
- Ambiente único de integração continua (CI) para dar mais visibilidade a todos os testes
- pipeline para testar o branch de cada time frente ao código de produção
- pipeline para testar o branch de cada time frente aos demais branches
Como resolver?
32
Coordenar releases:- todo time deve avisar aos demais de sua
intenção de subida
Mostrou-se o método mais eficiente para reduzir problemas com subidas
para produção
- o objetivo é garantir que o código da apps Django estejam bem isolados
- isolamento de testes através de um settings no projeto que faz referência apenas para a app em questão
Isolamento dos Testes
Trouxemos nosso PO para nosso lado mostrando os benefícios:
E o nosso PO?
- menos bugs em produção
- maior aproveitamento de código = mais features desenvolvidas em menos tempo
38
- o que funciona hoje provavelmente não funcionará amanhã
- crie novas formações dos times para disseminar “boa cultura”
- introduza novos conceitos e práticas para melhorar a integraçao (enquanto ela existe…)