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. 2.
  2. 3.

    ★ 14k usuários ★ 5k propostas e problemas ★ 12k

    comentários ★ 25k apoios dados de 21 de abril de 2013
  3. 6.

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

    ★ Ruby 1.8 ★ MySQL ★ Linode (uma única máquina)
  4. 7.

    Ruby on Rails ★ Surgiu do Basecamp, produto da 37

    Signals ★ Framework Open Source para aplicações web ★ Padrão Model-View-Controller
  5. 9.

    Metodologia ★ Projeto de escopo aberto ★ Fork privado do

    projeto no GitHub ★ Entregas constantes ★ Deploy automatizado
  6. 10.
  7. 11.

    Como monitorar? ★ New Relic ★ Análise de performance ★

    Monitoramento dos servidores ★ Performance de SQL ★ Alerta de erros e perda de performance
  8. 12.
  9. 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...
  10. 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
  11. 16.
  12. 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
  13. 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...
  14. 19.
  15. 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
  16. 21.
  17. 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
  18. 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
  19. 24.
  20. 25.
  21. 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
  22. 28.

    Entrega de e-mails ★ Cerca de 400 e-mails por dia

    ★ Fila de e-mails ★ Envio fora do uxo da aplicação
  23. 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)
  24. 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
  25. 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
  26. 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
  27. 34.

    Desenvolvimento dos concursos ★ Desenvolvimento guiado a testes ★ Uso

    de Gems mais novas ★ Melhor organização do código
  28. 35.
  29. 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
  30. 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