Lamoda por dentro: por que a loja on-line de 300 engenheiros

Olá Habr! Meu nome é Valentine, sou CTO em Lamoda, onde trabalho quase desde a fundação da empresa. Durante todos esses anos, toda a equipe seguiu tão rápido que não foi possível parar um pouco e conversar sobre nós mesmos. Eu acho que chegou a hora.



Pode parecer que Lamoda seja um dos pioneiros da Internet russa, mas temos apenas sete anos de idade. Desde a sua fundação em 2011 até os dias atuais, nossa empresa cresceu de 11 funcionários para mais de cinco mil. Todo mês,> 10 milhões de pessoas visitam nosso site. De fato, éramos uma empresa iniciante no setor de TI russo estabelecido e, como resultado, em tão pouco tempo, conseguimos alcançar e superar muitos caras honrados.

Espero contar um pouco sobre nossas realizações, fracassos, experiências e experiências mais úteis e interessantes e quais tarefas nossa equipe enfrenta todos os dias. Vamos considerar este post como nosso conhecido.

Em 2011, desenvolvemos de forma independente apenas a preparação do conteúdo e a compra de ações para venda, tudo foi terceirizado. Agora fazemos tudo sozinhos. Supervisionamos a operação de nosso próprio armazém de cinco níveis, do tamanho de um campo de futebol, três centros de contato e entrega aos clientes. Apesar do fato de a Rússia ter uma cultura de TI muito alta, as grandes empresas estão começando a mergulhar em como construir essa infraestrutura, e a Lamoda segue esse caminho com sucesso há muitos anos.

Então, de que são feitos os bastidores técnicos da Lamoda? De fato, são cinco grandes unidades:

  • departamento de desenvolvimento (departamento de automação de processos de negócios e departamento de desenvolvimento de lojas online)
  • Departamento de suporte de TI (infraestrutura e segurança)
  • Departamento de implementação e suporte de sistemas ERP
  • departamento de suporte de serviço
  • departamento de dados e análises



Tudo no GO


Esta história é sobre os caras que estão desenvolvendo uma plataforma de comércio eletrônico e, no tempo livre, dirigem em motos e fazem visitas guiadas a bares de cerveja artesanal.

É no departamento de desenvolvimento de comércio eletrônico que as plataformas criam tudo o que os clientes da Lamoda usam diariamente: as versões para desktop e móvel do site e os aplicativos para iOS e Android. A complexidade do trabalho não está na implementação de funcionalidades para o usuário, a equipe precisa implantar novos recursos o mais rápido possível, mas sem perda de qualidade e estabilidade, e apoiar projetos em quatro países: Rússia, Cazaquistão, Ucrânia e Bielorrússia. Até o momento, os funcionários deste departamento podem executar o serviço toda semana, se necessário, e trabalhar sob o lema: "Tudo no GO".


As equipes são divididas principalmente por plataforma (desktop, site móvel, aplicativos móveis); também existem quatro equipes para serviços de back-end. Cada equipe inclui desenvolvedores, analistas, testadores e gerente de produto.

Para entregar as mudanças o mais rápido possível, praticamos essa abordagem para iterações de desenvolvimento: no início do sprint, apresentamos uma hipótese e, lançando novos recursos na produção, testamos-a, percebendo se a inovação é benéfica para o produto e se a vida dos usuários da Lamoda está melhorando. Por exemplo, não muito tempo atrás, aprendemos a mostrar quanto uma pessoa visualizada por uma pessoa foi comprada recentemente. Para fazer isso, pegamos a tarefa do produto, encontramos o MVP e determinamos a estratégia de implementação mais rápida. Antes de lançar tudo na produção, determinamos que o aumento na conversão seria o critério de sucesso. De acordo com os resultados do teste A / B, a conversão é maior no grupo em que o recurso foi introduzido.

Há algum tempo, Lamoda iniciou uma transição massiva e rápida para microsserviços. O que isso nos dá? O primeiro é um baixo limite de entrada para um novo desenvolvedor ou especialista de outra equipe. O segundo é o fácil suporte e alteração dos sistemas de microsserviços, para que o fluxo de trabalho seja preenchido com coisas interessantes, e não apenas dolorosas. Mas um pequeno número de monólitos (por exemplo, o sistema responsável pela distribuição de pedidos) ainda mora conosco e, no momento, é difícil e inconveniente livrar-se deles.

Coletamos Lamoda do zero sem SMS e registro


Todo mundo sabe que não há trabalho sem falhas. Cada vez, resolvendo o problema e lançando o código, esperamos que aqui esteja, a felicidade e a experiência novamente. Falando sobre a experiência, vale ressaltar que os funcionários do departamento de desenvolvimento da plataforma de comércio eletrônico, como verdadeiros lutadores, são capazes de montar a Lamoda literalmente do zero. Ocorreu que, devido às configurações de rede incorretas, nosso cluster decidiu que não era mais um cluster e se recusou a existir. Por sorte, foi à noite e, em quatro horas, conseguimos dar vida a Lamoda. Temos outras histórias.



Timur Nurutdinov, Chefe de Desenvolvimento da plataforma de comércio eletrônico:

Antes de começar a trabalhar na nova funcionalidade, nós, como sempre, sentamos para avaliar quais recursos precisávamos. Quatro equipes estavam envolvidas no projeto. Levamos em consideração as prioridades de outras tarefas, o cronograma de férias dos colegas e os custos trabalhistas. Como resultado, recebemos 32 semanas.

Oito meses para implementar um recurso. Isso soa selvagem. Com a ajuda de mudanças simples, conseguimos reduzir o tempo de lançamento no mercado para 4 semanas, e foi isso que fizemos.

O truque das equipes de plataforma é que elas são capazes de fazer tanto de frente quanto de trás. É assim que eles funcionam em nosso departamento. Porém, no back-end, é necessário fazer alterações em muitos sistemas integrados, e as competências da equipe da plataforma não permitem isso. Iniciamos o projeto Tamanhos relacionados ao fornecimento ao cliente das grades dimensionais mais detalhadas e não queremos esperar. Primeiro, tive que descobrir quais sistemas precisavam ser alterados, depois montamos uma pequena equipe com as competências apropriadas. Portanto, removemos o bloqueio para aguardar recursos de outras equipes da plataforma e conseguimos uma equipe de produtos. Quanto às tarefas, agimos de maneira comprovada - dividimos tarefas grandes em tarefas menores, fizemos, lançamos no produto e testamos nossas hipóteses nos usuários para entender se estávamos seguindo na direção certa. Após um experimento tão bem-sucedido com a criação de uma equipe de produtos, planejamos organizar equipes em áreas em que os funcionários formam uma única unidade e desenvolvem uma direção específica, por exemplo, entrega.

Automação de armazém e intervalos de entrega de 15 minutos


O pessoal da automação não tem tempo para ficar entediado, e as tarefas aqui não são triviais. Por exemplo, como fazer upload de milhões de mercadorias com o mesmo alto nível de qualidade do conteúdo (automação de um estúdio de fotografia) para o site, como processar e levar em consideração todos os pedidos do site, levando em consideração centenas de parceiros de mercado e quatro países da CEI, como coletar um pedido em um armazém de cinco andares em três horas, como realizar a entrega ao cliente no dia seguinte no intervalo de 15 minutos escolhido em 600 cidades apenas na Rússia. E para a sobremesa, eles estão vendendo todo esse farm para parceiros B2B e a direção do Marketplace.

O trabalho é feito principalmente em PHP, para automação de armazém usamos Java mais Docker / Kubernetes, pilha Atlassian, PostgreSQL, RabbitMQ.







Temos um sistema de baldes para o planejamento de sprints em nosso departamento: 60% é um balde de projeto, 20% é dívida técnica, 10% do sprint é atribuído a bugs prioritários e 10% é que algo voará de fora. Entre outras coisas, limpeza de pendências, planejamento online de pôquer, stand-up, retro, revisão de código 360, coleta e análise de métricas básicas, monitoramento (Prometheus, Grafana, Icinga, Kibana), em geral, tudo é como nas melhores casas das equipes de desenvolvimento de Paris .

Aqui estão algumas histórias engraçadas de Pavel Savelyev, chefe do departamento de automação de processos de negócios.

É impossível testar e levar tudo em consideração, porque as pessoas participam de uma maneira ou de outra em todos os processos de negócios. E as pessoas, como você sabe, são criaturas racionais e sempre tentam criar toques astutos que facilitam sua vida. Mas quando essas mesmas noções vão contra o processo de negócios descrito, histórias engraçadas acontecem.

Uma vez percebemos que o sistema responsável pela distribuição de mercadorias em um armazém recebe cem vezes mais verificações em um minuto que o normal. Aconteceu que a equipe do armazém encontrou um sistema de invasão e decidiu facilitar seu trabalho. Partindo para o almoço, eles apertaram um botão no scanner para não serem expulsos da sessão do usuário. E esse golpe de trabalho continuaria funcionando, mas em um dos lotes (uma caixa especial para mercadorias no armazém) havia muitos itens pequenos. O scanner, como a metralhadora de Maxim, processou mercadorias do malfadado artilheiro, o que levou a um forte salto na carga, falhas no sistema e na detecção de um bug óbvio pelos desenvolvedores. É claro que consertamos um bug, mas acho que a equipe do armazém não nos deixa entediados e inventa algo novo.

O segundo caso também ocorreu no armazém. Essa história é chamada de "43 camisetas divertidas". Nem sempre é possível reconhecer imediatamente a complexidade do algoritmo, especialmente quando você resolve o problema da mochila e precisa colocar objetos N de maneira ideal em um determinado volume (problema de empacotamento tridimensional). Verificou-se que, se 43 camisetas idênticas chegarem ao nosso armazém, o sistema responsável por embalar as mercadorias gera tantas combinações de distribuição para esse caso que é brega o suficiente para a memória. Analisamos o algoritmo e não temos mais medo de camisetas idênticas - mas o que acontece se centenas de pares de meias chegarem à embalagem, que fabricantes decidem vender uma de cada vez? Vale a pena considerar ...

Em qualquer situação incompreensível, concentre-se nos dados


As mudanças relacionadas à análise em Lamoda estão atrasadas e, neste ano, começamos a combinar departamentos analíticos diferentes com nossa infraestrutura e hábitos analíticos em um único departamento. Porque O principal motivo é que os funcionários que estão em equipes analíticas díspares geralmente fazem o mesmo trabalho, mas de maneiras diferentes, e então não está claro em quais dados focar. Dados diferentes - isso geralmente é normal, porque as equipes vêm de diferentes tarefas e pré-requisitos, mas você precisa gastar muito tempo para entendê-los.

Os funcionários do departamento são verdadeiros evangelistas, de que todas as decisões da empresa devem ser tomadas com base em dados; portanto, todos os dias aqui estudam com entusiasmo os fenômenos comerciais dos dados, analisam e extraem valor dos dados, avaliando como eles podem ser aplicados. A ferramenta principal é SQL, bem como Spark, Hadoop, Python para análise de dados, Excel, SAP BusinessObjects para geração de relatórios e Tableau para visualização.

Uma das tarefas importantes da equipe é a personalização da experiência do cliente: criamos uma solução em que cada usuário terá a lista mais relevante de produtos e ofertas, e todos os nossos serviços serão ajustados individualmente a cada cliente, e não ao grupo, como é feito agora.

Sergey Gilev, Chefe do Departamento de Dados e Análise:

Atualmente, o departamento de análise enfrenta duas grandes tarefas: a primeira é a consolidação da economia diversificada que tínhamos antes da fusão. Para um trabalho mais eficaz, precisamos de métricas, infraestrutura e processos analíticos comuns. O segundo objetivo é um projeto para criar painéis analíticos que descrevem a "saúde" de um processo específico ou de toda a empresa. Assim, nos esforçamos para melhorar significativamente a disponibilidade de dados para os tomadores de decisão e instilar em todos nossa abordagem ao trabalho: focar nos dados em qualquer situação incompreensível.

A história da grande jogada: como lançamos nosso próprio armazém despercebido pelos clientes


O abandono gradual da terceirização nos levou ao fato de que era hora de comissionar nosso próprio armazém. Além de todos os preparativos para a automação dos processos operacionais no novo armazém, estabelecemos o objetivo de não reduzir o alcance e, em nenhum caso, interromper a venda. Nossos especialistas desenvolveram uma solução baseada na criação de armazéns "virtuais" adicionais. Assim, durante toda a mudança, tivemos três tipos de depósitos: antigos, novos e a caminho. Como as mercadorias foram transportadas gradualmente por grupos de caminhões, o estoque que terminou no próximo lote foi transferido para um armazém "virtual". Como tínhamos um cronograma de carregamento e descarregamento, sabíamos exatamente quanto tempo o estoque estaria em trânsito e orientamos os clientes até a data de entrega correta do pedido.

Também criamos e implementamos um algoritmo complicado que nos permitiu equilibrar a velocidade da movimentação e organizar o recebimento de todas as mercadorias do pedido em uma entrega: quando uma pessoa encomendava vários produtos que poderiam estar fisicamente em diferentes armazéns, tentamos organizar a montagem completa do pedido em um armazém, E a vantagem foi dada ao armazém do parceiro, uma vez que o processo de montagem já foi depurado.

O trabalho de lançamento de nosso próprio armazém esteve em pleno andamento por três meses, durante os quais nenhum cliente foi ferido.

Preparando-se para a Black Friday ou como sobrevivemos no período de vício em compras


Alguns anos atrás, tínhamos medo da Black Friday como um monstro assustador. Não tínhamos ideia de como nossos sistemas reagiriam a esse fluxo de pedidos. Mas o trabalho constante em refatoração e desenvolvimento de infraestrutura estabilizou nossos sistemas e os tornou o mais previsível possível. A última sexta-feira negra foi o dia mais chato do ano. Especialistas em sistemas-chave e DevOps apenas se sentaram à mesa, jogaram videogames ou assistiram a filmes e assistiram ao estado de nossa infraestrutura com apenas um olho. Mas os preparativos para este dia são um pouco diferentes.

Planejamos testes de estresse com base em previsões de negócios e, em seguida, desenvolvedores e administradores configuram os sistemas para passar nos testes. Vários meses de testes, falhas, correções e somente depois disso acreditamos que estamos prontos para uma onda de usuários e pedidos.




Sala de guerra - nosso centro de operações na sexta-feira negra

As decisões que tomamos para sobreviver à Black Friday dependem dos gargalos que encontramos durante o teste. Alguns anos atrás, substituímos fisicamente os comutadores de rede para eliminar problemas de largura de banda. Outra ação que normalmente executamos para reduzir a carga é desativar subsistemas que não são críticos.

Sumário


Durante todos esses anos, tentamos melhorar e simplificar constantemente nosso fluxo de trabalho, coletando feedback dos funcionários da empresa, estabelecendo canais de baixo para cima e apoiando totalmente novas idéias e conceitos.

Alguém dirá que Lamoda é um zoológico absoluto de tecnologias e sistemas. Muitas vezes brincamos sobre esse tópico e dizemos: "Melhor perguntar o que não usamos". Mas, nesse assunto, um fato essencial é que estamos constantemente evoluindo a pilha e as tecnologias e, ao mesmo tempo, não há escolha impensada. Isso nos ajuda na revisão da arquitetura de cada novo serviço e projeto, um guia para a experiência existente dos funcionários, bem como para a manutenção do Radar tecnológico , cujos detalhes e argumentos teremos o maior prazer em contar no próximo post. E também estamos felizes em comemorar sobre esse assunto.

Source: https://habr.com/ru/post/pt426501/


All Articles