+
          Transformando código aberto
            em um projeto comercial

http://www.locaweb.com.br
http://spreecommerc...
Agenda
• Cenário atual
• O que é o Spree
• Transformação do Spree em WebStore
• Equipe e ambiente de trabalho
• Introdução...
Cenário Atual
Loja Pronta
Loja Pronta
• Grátis
• Multi-usuário
• Mais de 10.000 instalações
• Desenvolvida em ASP (código de 2006)
• Roda em Windows...
Loja Pronta
• Não possui testes automatizados
• Difícil de dar manutenção
• Cada nova instalação cria uma nova base de
  d...
Necessidade
• Substituir a Loja Pronta por outra solução
• Mais escalável, fácil de dar manutenção,
  testável
• Menos cus...
Outros fatores

• Equipe com conhecimento do negócio
• Desenvolvedores experientes com
  plataforma Windows e .NET
• Desej...
Opções

• Refazer a Loja Pronta em .NET
• Criar uma nova loja do zero em Ruby on
  Rails
• Utilizar uma plataforma de Comé...
Spree
Spree
• Plataforma completa de Comércio
  Eletrônico em Ruby on Rails
• Suporte a SEO e internacionalização
• Projeto de c...
Transformação do
Spree em WebStore
Spree Extensions
Locaweb Extension
Locaweb Extension
Locaweb Extension
Locaweb Extension
• Uso de meios de pagamentos nacionais
• Integração com Correios (cálculo de frete)
• Alteração dos pass...
Locaweb Extension

• Toda essa flexibilidade tem um preço
• Maior esforço de análise e desenvolvimento
• Necessário escreve...
Spree Extensions
$ script/generate extension MinhaExtension
Spree Way
Spree Way
Locaweb Way
Locaweb Way
Locaweb Way
Locaweb Way
Locaweb Way
Gems e Plugins
• Active Merchant
• State Machine
• Resource Controller
• Authlogic
• Paperclip
• Outros
Prós do Spree

• Grande parte do trabalho já está pronto
• Comunidade desenvolvendo para Spree
• Aprendizado com código de...
Contras do Spree
• Curva de aprendizado para entender o
  código
• Tem poucos testes
• Code smells (métodos longos, classe...
Contras do Spree
Equipe e Ambiente de
      Trabalho
Equipe

• Product Owner (PO)
• Lider Técnico
• Seis Desenvolvedores
• Quality Assurance (QA)
• User Experience (UX)
Equipe
• Equipe inicial experiente em .NET
• Consultoria da Caelum em Ruby on Rails
• Inclusão de dois desenvolvedores com...
Metodologias Ágeis
• Inicialmente utilizamos Scrum
• Atualmente uma variação de Kanban
• Programação Extrema (XP)
• Progra...
Programação Pareada
A importância de testes
• Test-Driven Development (TDD)
• Behavior-Driven Development (BDD)
• RSpec + Cucumber
• Atualment...
Ciclo BDD
Integração Contínua
• Hudson (http://hudson-ci.org)
• Git (http://git-scm.com)
• RSpec (http://rspec.info)
• Cucumber (htt...
Integração Contínua
Introdução ao “Mundo
  do Software Livre”
Introdução ao “Mundo
  do Software Livre”
• Maior parte da equipe nunca havia se
  envolvido com um projeto de código
  ab...
Introdução ao “Mundo
  do Software Livre”
O que vem pela frente
Contribuições em
      extensions

• Correios (cálculo de frete)
• Meios de pagamentos nacionais
• Proposta para melhorar ...
Contribuições diretas
     no Spree
• Traduções para português
• Correções de bugs
• Customização de layout com temas
• Cá...
Checkout no Spree
Checkout no Spree
Checkout no Spree
Checkout no Spree
Checkout no Spree
Checkout no Spree
Checkout no Spree
Checkout no Spree
Checkout na WebStore
Checkout na WebStore
Checkout na WebStore
Checkout na WebStore
Checkout na WebStore
Perguntas
+
          Transformando código aberto
            em um projeto comercial

http://www.locaweb.com.br
http://spreecommerc...
Próximos SlideShares
Carregando em…5
×

Locaweb + Spree: transformando código aberto em um projeto comercial

3.944 visualizações

Publicada em

Os desafios, benefícios, dificuldades e lições aprendidas que a equipe de desenvolvimento de SaaS da Locaweb teve na utilização do Spree, uma plataforma de comércio eletrônico de código aberto, como base de seu novo sistema de loja virtual multi-usuário, desenvolvido em Ruby on Rails. O poder e o dinamismo do Ruby tiveram destaque, com grande utilização de metaprogramação nas extensões do Spree.

Publicada em: Tecnologia
  • O projeto está legal, pena que na prática a mudança ficou muito inferior ao produto que eles tinham antes.
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

Locaweb + Spree: transformando código aberto em um projeto comercial

  1. 1. + Transformando código aberto em um projeto comercial http://www.locaweb.com.br http://spreecommerce.com Fernando Hamasaki de Amorim a.k.a. Prodis http://prodis.pro.br http://twitter.com/prodis
  2. 2. Agenda • Cenário atual • O que é o Spree • Transformação do Spree em WebStore • Equipe e ambiente de trabalho • Introdução ao “Mundo do Software Livre” • O que vem pela frente
  3. 3. Cenário Atual
  4. 4. Loja Pronta
  5. 5. Loja Pronta • Grátis • Multi-usuário • Mais de 10.000 instalações • Desenvolvida em ASP (código de 2006) • Roda em Windows Server 2003 • Banco de dados SQL Server (8 servidores)
  6. 6. Loja Pronta • Não possui testes automatizados • Difícil de dar manutenção • Cada nova instalação cria uma nova base de dados • Alto custo de infraestrutura de servidores • Problemas de escalabilidade (processo ASP)
  7. 7. Necessidade • Substituir a Loja Pronta por outra solução • Mais escalável, fácil de dar manutenção, testável • Menos custos de infraestrutura • Recursos adicionais • Oferecer essa solução como um serviço pago (SaaS)
  8. 8. Outros fatores • Equipe com conhecimento do negócio • Desenvolvedores experientes com plataforma Windows e .NET • Desejo de criar uma aplicação na plataforma Unix, preferencialmente utilizando Ruby on Rails
  9. 9. Opções • Refazer a Loja Pronta em .NET • Criar uma nova loja do zero em Ruby on Rails • Utilizar uma plataforma de Comércio Eletrônico já existente (Spree, Magento, OS Commerce)
  10. 10. Spree
  11. 11. Spree • Plataforma completa de Comércio Eletrônico em Ruby on Rails • Suporte a SEO e internacionalização • Projeto de código aberto (BSD License) • Um dos projetos mais forkados no Github • Extensível através das Spree Extensions
  12. 12. Transformação do Spree em WebStore
  13. 13. Spree Extensions
  14. 14. Locaweb Extension
  15. 15. Locaweb Extension
  16. 16. Locaweb Extension
  17. 17. Locaweb Extension • Uso de meios de pagamentos nacionais • Integração com Correios (cálculo de frete) • Alteração dos passos de checkout • Escolha de temas pré-definidos • Integração com sistemas da Locaweb • Outras melhorias
  18. 18. Locaweb Extension • Toda essa flexibilidade tem um preço • Maior esforço de análise e desenvolvimento • Necessário escrever uma quantidade maior de código • Uso massivo de metaprogramação em Ruby
  19. 19. Spree Extensions $ script/generate extension MinhaExtension
  20. 20. Spree Way
  21. 21. Spree Way
  22. 22. Locaweb Way
  23. 23. Locaweb Way
  24. 24. Locaweb Way
  25. 25. Locaweb Way
  26. 26. Locaweb Way
  27. 27. Gems e Plugins • Active Merchant • State Machine • Resource Controller • Authlogic • Paperclip • Outros
  28. 28. Prós do Spree • Grande parte do trabalho já está pronto • Comunidade desenvolvendo para Spree • Aprendizado com código de outras pessoas • Extensível sem ser intrusivo
  29. 29. Contras do Spree • Curva de aprendizado para entender o código • Tem poucos testes • Code smells (métodos longos, classes com mais de uma responsabilidade, etc) • Complexidade desnecessária em alguns pontos
  30. 30. Contras do Spree
  31. 31. Equipe e Ambiente de Trabalho
  32. 32. Equipe • Product Owner (PO) • Lider Técnico • Seis Desenvolvedores • Quality Assurance (QA) • User Experience (UX)
  33. 33. Equipe • Equipe inicial experiente em .NET • Consultoria da Caelum em Ruby on Rails • Inclusão de dois desenvolvedores com conhecimento em Ruby on Rails • Aprendizado em grupo (dojos, eventos, etc) • Muito investimento pessoal em estudo de cada integrante da equipe
  34. 34. Metodologias Ágeis • Inicialmente utilizamos Scrum • Atualmente uma variação de Kanban • Programação Extrema (XP) • Programação em pares a maior parte do tempo • Estações de pareamento
  35. 35. Programação Pareada
  36. 36. A importância de testes • Test-Driven Development (TDD) • Behavior-Driven Development (BDD) • RSpec + Cucumber • Atualmente PO e QA estão definindo testes de aceitação e casos de testes • QA aprova as histórias junto com PO
  37. 37. Ciclo BDD
  38. 38. Integração Contínua • Hudson (http://hudson-ci.org) • Git (http://git-scm.com) • RSpec (http://rspec.info) • Cucumber (http://cukes.info) • Metric_fu (http://metric-fu.rubyforge.org) • RPM (http://www.rpm.org)
  39. 39. Integração Contínua
  40. 40. Introdução ao “Mundo do Software Livre”
  41. 41. Introdução ao “Mundo do Software Livre” • Maior parte da equipe nunca havia se envolvido com um projeto de código aberto • A equipe tinha uma expectativa que os mantenedores oferecessem soluções para nossos problemas • Mas então a equipe entendeu que o processo é o inverso
  42. 42. Introdução ao “Mundo do Software Livre”
  43. 43. O que vem pela frente
  44. 44. Contribuições em extensions • Correios (cálculo de frete) • Meios de pagamentos nacionais • Proposta para melhorar a maneira de organizar código de extensions
  45. 45. Contribuições diretas no Spree • Traduções para português • Correções de bugs • Customização de layout com temas • Cálculo de frete no carrinho de compras, antes de informar dados de usuário
  46. 46. Checkout no Spree
  47. 47. Checkout no Spree
  48. 48. Checkout no Spree
  49. 49. Checkout no Spree
  50. 50. Checkout no Spree
  51. 51. Checkout no Spree
  52. 52. Checkout no Spree
  53. 53. Checkout no Spree
  54. 54. Checkout na WebStore
  55. 55. Checkout na WebStore
  56. 56. Checkout na WebStore
  57. 57. Checkout na WebStore
  58. 58. Checkout na WebStore
  59. 59. Perguntas
  60. 60. + Transformando código aberto em um projeto comercial http://www.locaweb.com.br http://spreecommerce.com Fernando Hamasaki de Amorim a.k.a. Prodis http://prodis.pro.br http://twitter.com/prodis

×