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