A saga de recuperação de um Software de Webcidadania

A saga de recuperação de um Software de Webcidadania

Palestra apresentada no FLISOL 2013 sobre a recuperação do projeto http://cidadedemocratica.org.br

C5df370a883b65279af5a7ca94a5eed7?s=128

Jean Carlo Emer

May 30, 2013
Tweet

Transcript

  1. A saga de recuperação de um Software de Webcidadania

  2. None
  3. ★ 14k usuários ★ 5k propostas e problemas ★ 12k

    comentários ★ 25k apoios dados de 21 de abril de 2013
  4. Tempo de resposta do servidor

  5. Quem sou Codeminer 42 jcemer jcemer Jean Carlo Emer

  6. Cenário inicial ★ Ruby on Rails 2.3 (março de 2009)

    ★ Ruby 1.8 ★ MySQL ★ Linode (uma única máquina)
  7. Ruby on Rails ★ Surgiu do Basecamp, produto da 37

    Signals ★ Framework Open Source para aplicações web ★ Padrão Model-View-Controller
  8. Vamos recuperar!

  9. Metodologia ★ Projeto de escopo aberto ★ Fork privado do

    projeto no GitHub ★ Entregas constantes ★ Deploy automatizado
  10. None
  11. Como monitorar? ★ New Relic ★ Análise de performance ★

    Monitoramento dos servidores ★ Performance de SQL ★ Alerta de erros e perda de performance
  12. None
  13. Banco de dados sobrecarregado ★ Pesquisas ao banco não incluíam

    os models dependentes ★ Novas queries eram necessárias para complementar os registros (N+1) ★ Cache das queries mais custosas ★ Queries mal escritas...
  14. Queries Problemáticas

  15. Servidor do banco de dados ★ Adoção de um servidor

    exclusivo para o banco de dados ★ Aplicação bastante baseada em pesquisa e combinação de resultados ★ Tuning do banco de dados
  16. None
  17. Testes! ★ As aplicações vão crescendo e adquirindo complexidade ★

    Inviável testar manualmente toda a aplicação a cada nova funcionalidade ou refatoração ★ O Cidade Democrática não tinha nenhum teste
  18. Por onde começar a testar? ★ Reescritas críticas de código

    sempre começavam pela criação dos testes ★ Novas funcionalidades com cobertura total de testes ★ Testes de funcionalidade com os principais casos de uso...
  19. None
  20. Integração contínua ★ Con guração do Travis ★ A cada

    push no repositório, os testes são rodados no serviço ★ Garantia de código sempre passando nos testes ★ Apoio para validar correção de Pull Requests
  21. None
  22. Servidor de staging ★ Servidor dedicado para testar e depurar

    novas versões da aplicação ★ Con guração de máquina e ambiente iguais às de produção ★ Todo o deploy é feito antes para o servidor de Staging
  23. Qualidade de código ★ Code Climate ★ Suíte de ferramentas

    de análise estática ★ Métricas de complexidade ★ Identi ca código duplicado ou fonte de ataque
  24. None
  25. None
  26. Mãos ao código!

  27. ★ Projeto original com Rails plugins ★ Rails 3.0 introduz

    o uso do ★ Dependências indicadas em um arquivo Gem le ★ As Gems sempre serão as certas sem precisar versionar seu código no projeto Dependências
  28. Entrega de e-mails ★ Cerca de 400 e-mails por dia

    ★ Fila de e-mails ★ Envio fora do uxo da aplicação
  29. Autenticação dos usuários ★ Sistema de autenticação defasado ★ Gem

    Devise para autenticação ★ Diferentes permissões para os usuários ★ Suporte a Omniauth (login via Facebook)
  30. Autenticação através do Facebook ★ Criar a app no Facebook

    ★ Con gurar uma rota de destino na aplicação ★ Adicionar chave secreta e identi cador da app
  31. Concursos no Cidade Democrática

  32. O que são os concursos? ★ Nova seção do Cidade

    Democrática ★ Etapas de inspiração, propostas, aplausos, união, anúncio ★ Na fase de união, duas propostas podem ser uni cadas formando uma terceira
  33. Entregas ★ Não teríamos tempo de entregar o concurso completo

    antes da data de início prevista ★ O concurso possui etapas que foram codi cadas progressivamente
  34. Desenvolvimento dos concursos ★ Desenvolvimento guiado a testes ★ Uso

    de Gems mais novas ★ Melhor organização do código
  35. Resultado

  36. Evolução da plataforma Inicial Atual Linguagem Framework Cache Monitor Integração

    Qualidade Ruby 1.8 Ruby 2.0 Ruby on Rails 2.3 Ruby on Rails 3.2 - Memcached - New Relic - Travis - Code Climate
  37. Qualidade de código ★ Em mais de 1.5k commits progredimos

    muito ★ Dá para melhorar mais, nossos outros projetos possuem GPA quase 4.0
  38. Tempo de resposta do servidor

  39. Tempo de resposta do servidor

  40. O trabalho continua!

  41. Obrigado Jean Carlo Emer @jcemer