O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Integração entre times e o desafio de
desenvolver uma aplicação
Ciclo de Palestras Infnet
2
Victor
Pantoja
Engenheiro Eletrônico e de Computação pela
UFRJ e mestre em Informática pela PUC-Rio,
possuo mais de 9 an...
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 sof...
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
Cenário 2011
6
- 1 time recém-formado trabalhando no globoesporte.com
- nenhum dos desenvolvedores jamais havia trabalhado...
Cenário 2011
7
- SporTV.com foi o primeiro projeto deste time
- ownership do código e do projeto
- começamos a conhecer ca...
8
Mudanç
as
Mudanças
10
- novos sites Combate e Eu Atleta (desenvolvidos pelo time
1)
- importantes eventos esportivos com data bem de...
Mudanças
11
1 time trabalhando no
globoesporte.com
1 time trabalhando no
SporTV
1 time trabalhando em
Classificação / Tabe...
Mudanças
12
Utilizando a mesma base de código!
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ã...
Tragédia
Anunciada
14
15
16
O Grande
Vilão
17
Diálogo
18
Diálogo
19
Reuniões periódicas para:
-falar sobre o que cada time está fazendo
-identificar pontos de sobreposição de
trab...
Segregação do
Código
20
- havia uma quantidade (pequena) de bugs
introduzidos em código alheio
- código legado anterior ao...
Segregação do
Código
21
Em essência, Django Application é simplesmente um
pacote Python que segue algumas convenções. Essa...
Segregação do
Código
22
-divisão do globoesporte.com em dezenas
de apps isoladas que falam entre si apenas
por interfaces
...
Segregação de
Código
Utilize os recursos da própria
linguagem!
au de acoplamento deve ser visto caso a ca
Integração Antecipada de
Código
25
Objetivo: descobrir o
problema antes que el
chegue em produção
26
27
Local
DEV0[1-4]
QA1
Staging
PROD
Integração Antecipada de
Código
Integração Antecipada de
Código
28
- estava se tornando
comum quebrar o
código do colega ao
lado e só perceber
no último m...
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 ...
Como resolver?
31
Escreva testes!
Como resolver?
32
Coordenar releases:
- todo time deve avisar aos demais de sua
intenção de subida
Mostrou-se o método mai...
- o objetivo é garantir que o código da apps
Django estejam bem isolados
- isolamento de testes através de um
settings no ...
E o nosso PO?
Trouxemos nosso PO para nosso lado
mostrando os benefícios:
E o nosso PO?
- menos bugs em produção
- maior aproveitamento ...
Última dica!
37
Mude sempre!
38
- o que funciona hoje provavelmente não
funcionará amanhã
- crie novas formações dos times para
disseminar “boa cultura...
Palavra Final
39
Comunicação é a
chave!
Perguntas!!
40
@victorpantoja
Integração entre times e o desafio de desenvolver uma aplicação (v2)
Próximos SlideShares
Carregando em…5
×

Integração entre times e o desafio de desenvolver uma aplicação (v2)

472 visualizações

Publicada em

Confira na prática como 12 desenvolvedores, divididos em 4 times, conseguem trabalhar na mesma base de código sem gerar bugs. Será apresentado o case de produção do site globoesporte.com.

Publicada em: Software
  • Seja o primeiro a comentar

Integração entre times e o desafio de desenvolver uma aplicação (v2)

  1. 1. Integração entre times e o desafio de desenvolver uma aplicação Ciclo de Palestras Infnet
  2. 2. 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.
  3. 3. 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
  4. 4. 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!
  5. 5. Cenário 2011
  6. 6. 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
  7. 7. 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
  8. 8. 8
  9. 9. Mudanç as
  10. 10. 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
  11. 11. 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
  12. 12. Mudanças 12 Utilizando a mesma base de código!
  13. 13. 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
  14. 14. Tragédia Anunciada 14
  15. 15. 15
  16. 16. 16
  17. 17. O Grande Vilão 17
  18. 18. Diálogo 18
  19. 19. 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
  20. 20. 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
  21. 21. 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. e: http://henriquebastos.net/desmistificando-o-conceito-de-django-a
  22. 22. 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
  23. 23. Segregação de Código Utilize os recursos da própria linguagem! au de acoplamento deve ser visto caso a ca
  24. 24. Integração Antecipada de Código 25 Objetivo: descobrir o problema antes que el chegue em produção
  25. 25. 26
  26. 26. 27 Local DEV0[1-4] QA1 Staging PROD Integração Antecipada de Código
  27. 27. 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)
  28. 28. Como resolver? 29 Perguntar se alguém usa certo trecho de código se mostrou bastante ineficiente pelo tamanho do projeto
  29. 29. 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
  30. 30. Como resolver? 31 Escreva testes!
  31. 31. 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
  32. 32. - 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
  33. 33. E o nosso PO?
  34. 34. 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
  35. 35. Última dica! 37 Mude sempre!
  36. 36. 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…)
  37. 37. Palavra Final 39 Comunicação é a chave!
  38. 38. Perguntas!! 40 @victorpantoja

×