A Locaweb transformou o código aberto do projeto Spree Commerce em uma plataforma de comércio eletrônico chamada WebStore para oferecer como serviço pago. A equipe aprendeu Ruby on Rails e melhorou o código do Spree através de extensões para adicionar recursos necessários e contribuirá de volta com melhorias ao projeto Spree.
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
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)
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
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
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
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
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
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
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
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
Notas del editor
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.