Locaweb + Spree: transformando código aberto em um projeto comercial
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 4,086 views
Uploaded on

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,......

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.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • O projeto está legal, pena que na prática a mudança ficou muito inferior ao produto que eles tinham antes.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
4,086
On Slideshare
3,765
From Embeds
321
Number of Embeds
2

Actions

Shares
Downloads
33
Comments
1
Likes
5

Embeds 321

http://prodis.blog.br 250
http://prodis.pro.br 71

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for 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.

Transcript

  • 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. 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. Cenário Atual
  • 4. Loja Pronta
  • 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. 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. 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. 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. 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. Spree
  • 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. Transformação do Spree em WebStore
  • 13. Spree Extensions
  • 14. Locaweb Extension
  • 15. Locaweb Extension
  • 16. Locaweb Extension
  • 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. 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. Spree Extensions $ script/generate extension MinhaExtension
  • 20. Spree Way
  • 21. Spree Way
  • 22. Locaweb Way
  • 23. Locaweb Way
  • 24. Locaweb Way
  • 25. Locaweb Way
  • 26. Locaweb Way
  • 27. Gems e Plugins • Active Merchant • State Machine • Resource Controller • Authlogic • Paperclip • Outros
  • 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. 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. Contras do Spree
  • 31. Equipe e Ambiente de Trabalho
  • 32. Equipe • Product Owner (PO) • Lider Técnico • Seis Desenvolvedores • Quality Assurance (QA) • User Experience (UX)
  • 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. 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. Programação Pareada
  • 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. Ciclo BDD
  • 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. Integração Contínua
  • 40. Introdução ao “Mundo do Software Livre”
  • 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. Introdução ao “Mundo do Software Livre”
  • 43. O que vem pela frente
  • 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. 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. Checkout no Spree
  • 47. Checkout no Spree
  • 48. Checkout no Spree
  • 49. Checkout no Spree
  • 50. Checkout no Spree
  • 51. Checkout no Spree
  • 52. Checkout no Spree
  • 53. Checkout no Spree
  • 54. Checkout na WebStore
  • 55. Checkout na WebStore
  • 56. Checkout na WebStore
  • 57. Checkout na WebStore
  • 58. Checkout na WebStore
  • 59. Perguntas
  • 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