Laravel na
Leroy Merlin Brasil
Quem sou eu?
Guilherme Guitte
Membro do Laravel Brasil
Co-organizer Meetup Laravel SP
Leroy Merlin
O que vamos falar hoje?
- A Leroy Merlin Brasil
- Projeto e decisões tecnológicas
- Lições aprendidas
- Próximos passos
A Leroy Merlin
- Multinacional Francesa
- Grupo ADEO
- Líder no varejo da construção civil no Brasil
- Primeira loja aberta foi em 1998
- 70 empresas para melhor se trabalhar no país (Great places to work)
- + 70.000 produtos
- Presente em 13 países
- + de 7 mil funcionários
A Leroy Merlin
O projeto
Onde tudo começou
Gaëtan Belbéoc'h
Missão
- Acelerar a implantação do e-commerce no Brasil
- Duas opções:
- Adquirir uma plataforma pronta de mercado.
- Desenvolvimento interno.
POC - Prove of Concept
Provar que uma equipe pequena, bem unida poderia criar uma plataforma de e-commerce sob medida para a Leroy Merlin Brasil.
#1 release
Trocar o site catálogo atual
#1 problema
"MongoDB é adequado para o projeto?"
Resposta: Sim!
Schema flexível
+1200 categorias com pelo menos 20 características diferentes, editadas real-time.
Ou com SQL você pode...
EAV of destruction
EAV is notoriously problematic as it leads to severe deployment performance and scalability problems.
Magento Schema
#2 problema
Que ODM vamos utilizar?
Começamos com o "navruz/lmongo"
Decidimos fazer o nosso!
https://github.com/leroy-merlin-br/mongolid
#3 problema
"Como vamos organizar nossa aplicação?"
No início...
MVC com repositories, sem namespace...
Motivos:
-
Era um POC.
- Precisavamos andar rápido.
- Aplicação era pequena.
Porém...
#4 problema
"Precisamos de uma barra de busca!"
Regex query no nome do produto!
#sqn
Sinônimos
Tratar palavras com gênero
Busca full text de verdade
Motor de busca!
Facets
Real-time
Fácil de escalar
Porém...
O elasticsearch não é uma...
Texto
Resultado
Apanhamos bastante no começo
Principalmente pela falta de documentação, no começo foi bem alquimia.
Para garantir a consistência...
Busca
O resultado da busca
Pego os ID's retornados
#5 problema
"Será que a aplicação está, pronta para o público?"
New relic
Blitz.io
Otimizamos apache, APC, rotas não necessárias nem registravamos o Laravel.
Precisamos de uma layer de cache!
Porém tem alguns requisitos:
- Quero poder limpar algumas páginas quando necessário, em uma mudança de preço, por exemplo.
- Tem que ser robusto.
- Ser centralizado.
- Integração com o próprio framework.
Para ficar mais organizado, utilizamos um cache por page e por partials.
Usamos um "Filter" do laravel.
Requisição
Filter
Controller
Cache
#6 Problema
"A aplicação cresceu muito!"
Começamos a quebrar em "namespace" com contexto
-
Validator.php
-
SearchIndex.php
-
Repository.php
-
Command.php
-
Sanitizer.php
-
Product.php
-
...
namespace Kameleon\Product;
6 meses depois...
#2 Release
Site responsivo + modelo multi-árvore
#3 Release
E-commerce e afins
Início do projeto - Tráfego
Menos de 1 milhão visitantes/mês
Menos de 6,7 milhões visitantes/mês
40 milhões de pageviews/mês
Em 2 anos
Lições aprendidas
6 passos para a felicidade eterna!
Não tenha medo do novo!
Mesmo que não tenha tempo no seu trabalho, estude em casa!
Use TDD
"TDD irá te ajudar em grande refactoring, detectar mudanças não desejadas, design do código etc.."
Refatore frequentemente
Manter toda aplicação no mesmo nível
Empresas ágeis e startups burocráticas
É o mindset que manda, e não o tipo da empresa.
Faça testes de carga
Dará mais confiança para você e para os outros.
Framework é um meio não é um fim
Não se prenda a estrutura de pastas ou coisas do tipo.
No cargo cult!
Obrigado!
Estamos contratando!
Contato
Twitter: @guilhermeguitte
Slack: laravel-br
Laravel na Leroy Merlin Brasil
By guilhermeguitte
Laravel na Leroy Merlin Brasil
- 2,060