+
          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.918 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
1 comentário
5 gostaram
Estatísticas
Notas
  • 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
Sem downloads
Visualizações
Visualizações totais
3.918
No SlideShare
0
A partir de incorporações
0
Número de incorporações
334
Ações
Compartilhamentos
0
Downloads
37
Comentários
1
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Vamos testar para ver o que acontece.












  • - Todo código produzido pela Locaweb fica separado
    - Não tocamos no código do Spree
    - Dessa forma, podemos atualizar com novas releases do Spree

  • - Todo código produzido pela Locaweb fica separado
    - Não tocamos no código do Spree
    - Dessa forma, podemos atualizar com novas releases do Spree

  • - Todo código produzido pela Locaweb fica separado
    - Não tocamos no código do Spree
    - Dessa forma, podemos atualizar com novas releases do Spree
















  • - PO dedicado ao produto- Lider Técnico atua como gerente- Inicialmente eram 4 desenvolvedores
    - QA dedicado ao produto- UX compartilhado com outros projetos
  • Falar sobre você ter o domínio de uma linguagem e de repente você passa a pisar em ovos quando tem que trabalhar com outra linguagem, outra S.O., outras ferramentas de desenvolvimento.


  • Não escreva código sem antes ter um teste falhando.























  • Vamos testar para ver o que acontece.
  • 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

    ×