Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Jean Carlo Emer

May 30, 2013
Tweet

More Decks by Jean Carlo Emer

Other Decks in Programming

Transcript

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

    comentários ★ 25k apoios dados de 21 de abril de 2013
  2. Cenário inicial ★ Ruby on Rails 2.3 (março de 2009)

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

    Signals ★ Framework Open Source para aplicações web ★ Padrão Model-View-Controller
  4. Metodologia ★ Projeto de escopo aberto ★ Fork privado do

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

    Monitoramento dos servidores ★ Performance de SQL ★ Alerta de erros e perda de performance
  6. 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...
  7. 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
  8. 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
  9. 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...
  10. 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
  11. 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
  12. 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
  13. ★ 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
  14. Entrega de e-mails ★ Cerca de 400 e-mails por dia

    ★ Fila de e-mails ★ Envio fora do uxo da aplicação
  15. 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)
  16. 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
  17. 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
  18. 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
  19. Desenvolvimento dos concursos ★ Desenvolvimento guiado a testes ★ Uso

    de Gems mais novas ★ Melhor organização do código
  20. 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
  21. Qualidade de código ★ Em mais de 1.5k commits progredimos

    muito ★ Dá para melhorar mais, nossos outros projetos possuem GPA quase 4.0