SlideShare una empresa de Scribd logo
1 de 60
Descargar para leer sin conexión
+
          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
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
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 Server 2003
• Banco de dados SQL Server (8 servidores)
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)
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)
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
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)
Spree
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
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 passos de checkout
• Escolha de temas pré-definidos
• Integração com sistemas da Locaweb
• Outras melhorias
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
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 outras pessoas
• Extensível sem ser intrusivo
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
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
  conhecimento em Ruby on Rails
• Aprendizado em grupo (dojos, eventos, etc)
• Muito investimento pessoal em estudo de
  cada integrante da equipe
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
Programação Pareada
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
Ciclo BDD
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)
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
  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
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 a maneira de
  organizar código de extensions
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
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://spreecommerce.com

Fernando Hamasaki de Amorim a.k.a. Prodis
http://prodis.pro.br
http://twitter.com/prodis

Más contenido relacionado

La actualidad más candente

Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Mario Guedes
 
Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPRaphael Almeida
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
Integrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONIntegrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONMario Guedes
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançadoThiago Carlos
 

La actualidad más candente (8)

Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática Nova Infraestrutura JSON: System.JSON na prática
Nova Infraestrutura JSON: System.JSON na prática
 
Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHP
 
Webinar php extreme 5.3
Webinar php extreme 5.3Webinar php extreme 5.3
Webinar php extreme 5.3
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Integrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSONIntegrando sua App ao Mundo via REST/JSON
Integrando sua App ao Mundo via REST/JSON
 
Ruby and Rails
Ruby and RailsRuby and Rails
Ruby and Rails
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançado
 

Similar a Transformando Spree em WebStore

Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 
Negócios e Open Source
Negócios e Open SourceNegócios e Open Source
Negócios e Open SourceOpenBossa
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?Luis Vendrame
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edtedbrunoaalves
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
Desenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperDesenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperCesar Romero
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Renato Groff
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Renato Groffe
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureFabrício Lopes Sanchez
 
Apresentação do grupo Serverless Floripa + Introdução ao Serverless e seu eco...
Apresentação do grupo Serverless Floripa + Introdução ao Serverless e seu eco...Apresentação do grupo Serverless Floripa + Introdução ao Serverless e seu eco...
Apresentação do grupo Serverless Floripa + Introdução ao Serverless e seu eco...Ricardo Lima
 
Apresentação scriptcase-netmake
Apresentação   scriptcase-netmakeApresentação   scriptcase-netmake
Apresentação scriptcase-netmakeGustavo Lobato
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Renato Groff
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Renato Groff
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceJosé Roberto Araújo
 

Similar a Transformando Spree em WebStore (20)

Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 
Negócios e Open Source
Negócios e Open SourceNegócios e Open Source
Negócios e Open Source
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
JEE nas nuvens: uma introdução ao openshift
JEE nas nuvens:  uma introdução ao openshiftJEE nas nuvens:  uma introdução ao openshift
JEE nas nuvens: uma introdução ao openshift
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Desenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack DeveloperDesenvolvendo Sistema Cloud e Web Full-stack Developer
Desenvolvendo Sistema Cloud e Web Full-stack Developer
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
 
Web tools pt-br
Web tools pt-brWeb tools pt-br
Web tools pt-br
 
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o AzureQCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
QCon 2016 - Como migramos uma solução de 4 milhões de usuários para o Azure
 
Apresentação do grupo Serverless Floripa + Introdução ao Serverless e seu eco...
Apresentação do grupo Serverless Floripa + Introdução ao Serverless e seu eco...Apresentação do grupo Serverless Floripa + Introdução ao Serverless e seu eco...
Apresentação do grupo Serverless Floripa + Introdução ao Serverless e seu eco...
 
Apresentação scriptcase-netmake
Apresentação   scriptcase-netmakeApresentação   scriptcase-netmake
Apresentação scriptcase-netmake
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
 
Curso HTML 5 - Aula Inicial
Curso HTML 5 - Aula InicialCurso HTML 5 - Aula Inicial
Curso HTML 5 - Aula Inicial
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performance
 

Más de Fernando Hamasaki de Amorim

Más de Fernando Hamasaki de Amorim (7)

Ido Keido - ElixirConf EU 2019
Ido Keido - ElixirConf EU 2019Ido Keido - ElixirConf EU 2019
Ido Keido - ElixirConf EU 2019
 
Anotações da TDC Florianópolis 2016
Anotações da TDC Florianópolis 2016Anotações da TDC Florianópolis 2016
Anotações da TDC Florianópolis 2016
 
Os piores códigos Ruby já vistos - TDC Florianópolis 2016
Os piores códigos Ruby já vistos - TDC Florianópolis 2016Os piores códigos Ruby já vistos - TDC Florianópolis 2016
Os piores códigos Ruby já vistos - TDC Florianópolis 2016
 
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
 
TDC 2015 - Torne-se um programador melhor
TDC 2015 - Torne-se um  programador melhorTDC 2015 - Torne-se um  programador melhor
TDC 2015 - Torne-se um programador melhor
 
7 coisas que todo desenvolvedor Ruby on Rails deveria fazer
7 coisas que todo desenvolvedor Ruby on Rails deveria fazer7 coisas que todo desenvolvedor Ruby on Rails deveria fazer
7 coisas que todo desenvolvedor Ruby on Rails deveria fazer
 
Apresentação de TDD na Fatec Jundiaí
Apresentação de TDD na Fatec JundiaíApresentação de TDD na Fatec Jundiaí
Apresentação de TDD na Fatec Jundiaí
 

Transformando Spree em WebStore

Notas del editor

  1. Vamos testar para ver o que acontece.
  2. - 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
  3. - 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
  4. - 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
  5. - PO dedicado ao produto- Lider Técnico atua como gerente- Inicialmente eram 4 desenvolvedores - QA dedicado ao produto- UX compartilhado com outros projetos
  6. 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.
  7. Não escreva código sem antes ter um teste falhando.
  8. Vamos testar para ver o que acontece.