Tudo à venda: como configuramos processos de negócios para Lamoda e começamos a vendê-los a parceiros

Olá, sou Pavel Saveliev, chefe do BPA (Business Process Automation) da Lamoda. Este é um dos maiores departamentos de nossas equipes de TI - 9, e planejamos expandir ainda mais. Vou falar sobre como meu departamento de desenvolvimento funciona e o que está “sob o capô” de Lamoda.



Muito simplesmente, o BPA é uma rede tão centralizada que combina um serviço de entrega, um enorme armazém e um sistema de gestão de encomendas, com desenvolvimento e integração com parceiros. Tudo isso está vinculado a relatórios e análises. Projetamos e redigimos todos os serviços para a interação desses sistemas e a prestação de serviços semelhantes a parceiros.



imagem



Nosso departamento de TI encontra o mundo real : é fácil definir um intervalo de entrega de 15 minutos em um sistema de TI, mas é muito difícil garantir que milhares de representantes de vendas em Moscou cheguem ao endereço exatamente durante esse intervalo. A principal tarefa do nosso departamento é vincular negócios e tecnologia. O departamento de BPA em si está agora em três áreas: entrega, armazém e função comercial, que inclui interação com B2B e market place. E tudo o que nós mesmos usamos e vendemos lá fora é muito bacana: nossos recursos trazem dinheiro, economizam tempo e oferecem serviço de qualidade aos nossos clientes.



5 idiomas e 2 milhões de linhas de código



imagemBPA é um conjunto de sistemas que são integrados entre si e com outros sistemas Lamoda. Para o seu desenvolvimento, usamos PHP, Java, Kotlin, existe um pouco de Go e Typescript - existem 5 linguagens em nosso radar técnico. Escrevemos todos os sistemas para as tarefas do nosso negócio. Agora são 2 milhões de linhas de código, 25 serviços e mais de cem bibliotecas reutilizáveis.



A linguagem principal é o PHP, e vários outros grandes serviços são escritos em Java e Kotlin. Por que PHP? Em primeiro lugar, ele implementa um sistema de processamento de pedidos - um monólito, que vimos transformando em microsserviços há muitos anos e, em segundo lugar, somos ótimos em trabalhar com PHP: escrevemos rapidamente nele, o servimos bem, resolvemos isso com um monte de bibliotecas... Esta abordagem nos permite lançar novos serviços com todas as conexões de infraestrutura: com todos os logs e monitoramento, em apenas alguns dias. Podemos usar Go e Kotlin como em um warehouse. Não usamos tecnologias duplicadas e tudo o mais não é proibido, desde que funcione.



Nos processos de negócios, a lógica e a consideração de cada etapa são importantes. Para que não aconteça que a sua encomenda foi do armazém para Vladivostok, e aí um inesperado prato apareceu de repente no sistema e não lhe foi entregue.



Devemos cobrir cada etapa com testes, uma vez que a estabilidade e exatidão da execução da lógica do sistema é crítica. Além disso, nossos parceiros também usam nossos processos de negócios. Portanto, a prioridade da empresa é a estabilidade, embora a rapidez no lançamento de novos serviços também seja importante para os negócios. Para garantir a estabilidade, investimos tempo na concepção de serviços e testes em torno deles. Isso nos dá a oportunidade de desenvolver o sistema sem arriscar quebrar tudo.



Tem até trigo sarraceno!



imagemSou Anton Dmitrienko, responsável técnico de sistemas de gestão de centros de distribuição WMS - Lamoda ou, mais simplesmente, armazém.



Minhas principais tarefas são falar a mesma língua com os negócios, desenvolver um modelo de domínio e preparar o sistema para mudanças. Para fazer isso, você precisa entender onde estão os nossos "pontos quentes". Existem processos que são alinhados uma vez a cada três anos e existem aqueles que mudam a cada três meses - são os “pontos quentes”. Eles são importantes a serem considerados ao projetar um sistema.



Agora tenho quatro equipes - 18 pessoas que estão envolvidas na criação, teste e suporte do sistema. Aceleramos todos os processos operacionais e comerciais do armazém: sem nós com os atuais volumes de negócios da Lamoda, o envio de um pedido do cliente demoraria muito, nossa participação reduz o tempo de processamento de qualquer pedido para 4 horas.



imagem



A escala é, obviamente, muito grande: o armazém de Lamoda tem cerca de 40 mil metros quadrados ou vários campos de futebol em 5 andares, onde estão armazenados 10 milhões de mercadorias. Ele funciona 24 horas por dia 364 dias por ano, com um dia de folga uma vez por ano - 1º de janeiro. E todos os dias mais de 500 funcionários partem para o turno, e através de nosso sistema 200 mil mercadorias são enviadas e recebidas. Além disso, uma rede de transportadores e equipamentos mecanizados é implantada dentro do armazém, que são projetados para transportar mercadorias, embalar pacotes, consolidar fisicamente os pedidos dos clientes, classificar os pacotes por destino, também os gerenciamos.



imagem



A Lamoda vende aos clientes todos os tipos de produtos, desde guarda-chuvas e malas grandes até pequenos relógios e joias. Tudo isso é armazenado e processado em nosso depósito. Cada categoria tem suas próprias características. Por exemplo, mercadorias superdimensionadas não podem ser processadas em equipamentos automatizados, joias são armazenadas e processadas com medidas de segurança adicionais e cosméticos, perfumes, por exemplo, requerem certas condições de temperatura de armazenamento e controle sobre a vida útil das mercadorias.



Recentemente, tivemos um projeto chamado "Buckwheat". Desde a introdução do regime de auto-isolamento, Lamoda acrescentou alimentos populares de longa vida à sua linha. A propósito, implementamos esse recurso em apenas alguns dias. Claro que o sortimento principal são roupas e calçados, o trabalho com o qual também tem algumas nuances: para a venda de mercadorias é preciso preparar e verificar sua qualidade: será ruim se nós, por exemplo, levarmos uma camisa sem botões para o cliente.



Lamoda não é apenas uma loja online, mas uma plataforma de e-commerce completa que fornece sua infraestrutura e serviços (incluindo um depósito) para parceiros externos. Por exemplo, grandes marcas de moda internacionais armazenam seus produtos conosco. Que diferença faz? Os vestidos, casacos e sapatos dos parceiros são iguais aos que já se encontram no nosso armazém. Mas todos nós temos requisitos individuais para os processos que somos obrigados a cumprir nos termos dos contratos, por exemplo, algumas das mercadorias de grandes clientes são armazenadas em zonas separadas e as coisas do mercado estão localizadas em todo o estoque. Essas características também devem ser levadas em consideração.



Verificamos e processamos cada produto em todas as fases do processo levando em consideração as especificidades não só do mundo físico, mas também do sistema de TI. Além disso, o próprio sistema de TI informa ao funcionário do depósito como manusear um produto específico, uma vez que o operador não pode saber todas as características ou acordos: o produto não diz a quem pertence: uma grande empresa internacional ou um pequeno parceiro de mercado.



imagem



A principal característica do sistema é a interação por meio de leitores e códigos de barras: cada produto possui um código de barras único, que pode ser lido para obter todas as informações necessárias sobre o produto. Essa abordagem minimiza erros e permite realizar todas as ações com o produto de forma mais rápida, reduzindo o número de funcionários. Se despacharmos 200 mil mercadorias por dia, 1 segundo economizado em um produto equivale a 55 horas de trabalho. Para os negócios, é tangível.



Sob o capô do armazém



Nossas tecnologias:



Java 8,

PostgreSQL,

Wildfly,

Spring,

Redis,

ActiveMQ,

Hibernate.



Começamos com uma solução pronta em Java, mas desde então a funcionalidade do sistema se expandiu muito e o código já foi completamente refatorado e reescrito várias vezes.



Agora temos 350 mil linhas de código - e este é apenas o backend do aplicativo principal, e também existem 5 serviços secundários e 2 interfaces de usuário: um cliente web fino e um aplicativo nativo móvel. Estamos fazendo um desenvolvimento full-stack.



Os funcionários do depósito usam o cliente móvel. Eles se movem pelo armazém usando nosso próprio aplicativo Android, esta é uma tecnologia mais moderna e conveniente que permite que você use os recursos do próprio dispositivo: vibração, sons para erros e menos bateria gasta se o aplicativo for nativo, não baseado em navegador. O aplicativo em si é escrito em Kotlin, temos uma boa experiência em usá-lo. Até começamos a escrever um back-end nele: até agora este é apenas um serviço, mas gostamos que o código seja mais simples e mais expressivo do que em Java, e o desempenho seja o mesmo. Não temos o objetivo de reescrever tudo em Kotlin, mas continuaremos a usá-lo para as tarefas adequadas.



A interação com outros sistemas Lamoda é construída por meio de um barramento de dados escrito em Apache Camel usando o agente de mensagens ActiveMQ. Essa abordagem fornece entrega garantida e transformação relativamente simples de mensagens para vários formatos, a capacidade de distribuir mensagens para vários consumidores. Fomos os primeiros a usar o Apache Camel em 2014, então esse método de integração foi adotado por outras equipes em nosso departamento.

Os princípios de construção de sistemas de armazém:



· confiabilidade e qualidade

· extensibilidade e flexibilidade

· simplicidade



O warehouse está no centro dos processos de logística da Lamoda, e erros e tempo de inatividade do sistema têm um impacto significativo nos negócios. Portanto, prestamos muita atenção à estabilidade e tolerância a falhas do sistema. A confiabilidade é alcançada pela duplicação de elementos críticos do sistema e da infraestrutura. Temos dois servidores independentes que são divididos em máquinas virtuais. Cada aplicativo é implantado em duas instâncias, cada instância em sua própria máquina virtual. O cliente interage com o servidor por meio de um balanceador na forma de Haproxy, que encaminha as solicitações para uma das instâncias. O backup do banco de dados também é feito usando o esquema de replicação Master-Slave.



imagem



Todos os nossos servidores estão fisicamente localizados no warehouse, o que também aumenta a confiabilidade e a velocidade do trabalho devido à interação de todos os elementos do sistema em uma rede local. Mesmo se a Internet externa cair, ainda continuaremos a trabalhar e, em caso de queda de energia, temos fontes de alimentação ininterrupta e geradores a gasolina no depósito.



Para minimizar o número de erros no código, escrevemos testes automatizados: unidade, integração, aceitação, carga e a equipe de teste verifica tudo manualmente. Tudo isso é uma prática obrigatória e está embutido no ciclo de vida da tarefa, às vezes, é claro, bugs aparecem, mas não tivemos reversões completas de lançamentos por vários anos.



Expansibilidade e flexibilidade - para nós, é principalmente uma questão de quanto esforço e tempo gastaremos para mudar o sistema para atender aos novos requisitos dos processos de negócios. Portanto, o desenvolvimento fornece a capacidade de alterar o código de forma rápida e fácil no futuro. Por exemplo, qualquer categoria de mercadorias pode ser configurada para um local de armazenamento físico específico, o que permite conectar rapidamente novas categorias de mercadorias à venda. Para cada pedido, é configurado em que material será embalado e que documentos acompanhantes serão impressos. E esta é apenas uma pequena parte das funções.



Temos uma área de assunto complexa com um grande número de processos de negócios e um modelo de domínio ramificado. Quanto mais simples for o código, melhor, porque ele aumenta sua legibilidade, compreensão e reduz a probabilidade de erros. E permite que você se concentre mais na função que o código executa para o negócio.



Seguro contra erros



imagemMeu nome é Denis Plisko e sou o Gerente de Desenvolvimento de Serviços de Entrega da BPA.



Criamos, desenvolvemos e mantemos o sistema LM Express IT. Serve para automatizar o trabalho dos armazéns de trânsito, representantes comerciais e pontos de emissão de pedidos. Nosso sistema sabe tudo sobre a chegada e saída de entregas, trata do seu processamento, vende e emite pedidos já pagos, aceita devoluções e muitos outros processos de negócios relacionados. Além disso, registramos e analisamos as ações físicas de nossos representantes de vendas e funcionários de almoxarifado - rastreamos tudo o que acontece na “última milha” antes de a mercadoria ser entregue ao comprador. A maioria dos processos técnicos que estão no formulário de informações no sistema Express reflete as ações físicas de um funcionário do serviço de entrega.



imagem



Com o que se parece? Por exemplo, um funcionário aceita uma entrega, tira um palete - uma caixa contendo pacotes com mercadorias, tira os pacotes, separa-os nas prateleiras: cada ação que ele faz é acompanhada por uma operação em nosso sistema. E é aqui que podem surgir erros: nunca se pode ter certeza de que, mesmo que o entregador “clicou” em tudo corretamente, então é verdade. Como consequência, uma das maiores partes da nossa lógica de processo é alertar e corrigir erros: às vezes isso pode ser feito automaticamente, às vezes através da própria pessoa, às vezes através do helpdesk ou de usuários que possuem direitos mais avançados. Se não fosse por esses recursos, nossos sistemas seriam 5 vezes menores.

Os princípios de construção de sistemas de entrega:



· estabilidade e disponibilidade de sistemas

· consistência de dados

· independência de sistemas e serviços externos



A tarefa é garantir o funcionamento mais estável dos sistemas, pois depende diretamente do recebimento das compras em dia ou não. Ao implementar qualquer funcionalidade, procuramos ser independentes de serviços e sistemas externos, para isso, muitas interações são duplicadas. Suponha que uma entrega tenha chegado e não haja dados de pedido para ela, então solicitaremos essas informações para não interromper o trabalho. Também é importante fazer muitas operações idempotentes para manter a consistência de dados necessária, especialmente em trocas com outros serviços.



Além disso, nos esforçamos para receber todos os dados necessários o mais cedo possível, para que não aconteça que uma pessoa veio buscar um produto e não pode recebê-lo devido a uma falha do sistema. Nós nos esforçamos para tornar as partes internas do sistema extremamente confiáveis, de forma que a interação do usuário com elas dependa apenas de nossos próprios serviços. Assim, mesmo que todos os sistemas Lamoda fiquem temporariamente indisponíveis, o trabalho dos armazéns e pontos de coleta não será interrompido e as operações principais continuarão.



Nas ruas, correios, correios



Além da entrega própria, a Lamoda coopera com serviços de correio terceirizado, por exemplo, Correios Russos, Pony Express, DPD e outros. Isso acontece quando em uma cidade, região ou país (por exemplo, na Ucrânia), nossa entrega só é possível através de parceiros. Oferecemos troca de informações por meio da interação com seus sistemas de TI.



Conectar cada novo courier é uma aventura emocionante, pois as APIs são muito diferentes para cada pessoa e nem sempre são adaptadas para integração. Isso ocorre porque alguns dos serviços de correio são empresas historicamente offline. Eles vêm sendo enviados desde os dias da papelada, e escrever uma boa API não é uma tarefa fácil.



Usamos um sistema especial baseado no framework ESB Apache Camel para implementar a integração com o novo parceiro. O uso do Camel facilita a execução de uma ampla variedade de transformações de dados e interações em diferentes protocolos de troca. Normalmente, a configuração da integração com um novo serviço de correio leva de duas semanas a um mês.



A entrega é um dos serviços que vendemos aos nossos parceiros juntamente com o armazém. Ao solicitar um produto em uma loja online de uma marca de roupas popular que não parece ter nada a ver com Lamoda, a compra será entregue por um representante de vendas na forma de um expresso LM. Estamos trabalhando nesses projetos em conjunto com a equipe comercial.



Para implementar projetos em nosso negócio, eu e nossos líderes técnicos de 2 equipes (a terceira agora está contratando desenvolvedores e testadores) estamos determinando a melhor forma de ajustar todas as mudanças em nossa arquitetura atual.



Trabalhamos com base nas pendências da lista de projetos. Cada projeto é avaliado pela empresa em termos de efeito financeiro e de marketing. Estimamos os custos de mão de obra e pensamos em uma abordagem técnica: é possível criar um novo recurso de forma rápida e eficiente, ou, pelo contrário, será tão caro e difícil que bloqueará todo o efeito do negócio. Com base nessas estimativas, ajustamos a carteira de pedidos e colocamos os projetos no topo da lista. Cerca de 30% do nosso tempo de desenvolvimento é alocado para o backlog técnico, então não há necessidade de encontrar tempo para refatorar e melhorar os sistemas do ponto de vista técnico, tudo está indo de acordo com o planejado.



O mundo interno da entrega



:



· PHP,

· Java,

· Kotlin,

· TypeScript,

· MySQL,

· PostgreSQL,

· RabbitMQ,

· ActiveMQ,

· Apache Kafka,

· Apache Camel,

· Docker, K8S.



A maioria dos nossos serviços é construída em PHP. Historicamente, os sistemas nos quais Lamoda foi criado foram escritos neste idioma. Uma das primeiras versões do site foi criada em Magento, então os sistemas Rocket Internet foram tomados como base para entrega e processamento de pedidos. Eles passaram por muitas iterações de desenvolvimento e retrabalho, mas o PHP ainda é a base de quase todos os serviços, incluindo os novos. Já escrevemos cerca de 200 mil linhas de código e muitos desenvolvedores PHP experientes (a direção de entrega junto com engenheiros de QA soma 20 pessoas e está expandindo ativamente) - mas eles não estão limitados a uma tecnologia, eles são excelentes engenheiros que escolhem a ferramenta certa para a tarefa.



Não vamos abandonar o PHP no back-end, já que temos uma cultura de desenvolvimento bem desenvolvida: usamos novas versões da linguagem e das estruturas, cobrimos quase todo o código com testes, conduzimos uma revisão completa do código, temos um CI bem construído e muitas bibliotecas comuns que aceleram processo de desenvolvimento.



Ao contrário da loja online, não temos grandes cargas associadas ao RPS. Em primeiro lugar, precisamos de uma arquitetura de aplicativo complexa e flexível, com um grande número de níveis de abstração (tentamos aderir ao DDD) para lógicas de negócios complexas e às vezes confusas. Também temos um grande número de trocas síncronas (JSON-RPC, SOAP) e trocas assíncronas (RabbitMQ, Apache Kafka) com outros sistemas.



No total, cerca de 80-85% dos sistemas são escritos em PHP, embora às vezes usemos Java. Contém um serviço de interação com serviços de entrega externos, que estamos em constante mudança.



O frontend é representado por um pacote de VueJS + TypeScript. Nossos painéis de administração para usuários internos não requerem um super layout ou design complexo.



Também temos um aplicativo nativo móvel para representantes de vendas, que é escrito em Kotlin para Android. Ele já foi desenvolvido por desenvolvedores móveis dedicados, mas agora estamos desenvolvendo com muito sucesso por conta própria.



imagem



Para os funcionários que trabalham em depósitos de trânsito, de onde os pedidos são enviados para todos os depósitos e pontos de coleta na Rússia, temos um aplicativo da web. Com esta abordagem, existe o risco de indisponibilidade da nossa aplicação devido à desconexão da Internet num determinado posto de recolha ou num armazém, mas minimizamos através da reserva de canais de comunicação.



Além desses sistemas de entrega (Express e um aplicativo mobile, um ônibus para integração com serviços de courier externo), contamos com mais dois serviços que nossa equipe atende atualmente: um serviço de impressão de recibos eletrônicos e Datamatrix... Este último destina-se a garantir a marcação das mercadorias com códigos únicos de acordo com os novos requisitos da legislação. Esses dois projetos não estão diretamente relacionados à entrega, mas é por meio de nossos serviços que os dados necessários para eles são trocados.



O serviço de entrega imprime recibos: cada representante de vendas possui um caixa, além de haver caixas em cada um de nossos pontos de retirada. Portanto, o serviço de fiscalização interage constantemente com nosso sistema. Datamatrix afeta quase todos os sistemas BPA (warehouse, remessa, parcerias, sistemas de contabilidade). Nossa divisão também está interagindo muito ativamente com ele, por isso participamos ativamente de seu desenvolvimento. No momento, estamos desenvolvendo um novo sistema de políticas de incentivo para representantes de vendas.



A função comercial do BPA: o que vendemos



A empresa tem um objetivo ambicioso - ser a melhor plataforma de moda na CIS. Para isso, a Lamoda investiu muito na qualidade do atendimento e elevou do zero os processos operacionais: entrega, almoxarifado, estúdio fotográfico, trabalho de operadoras de call center. Todos os processos operacionais foram testados e testados em nossos clientes. Experimentamos, monitoramos o feedback dos clientes, cometemos erros, corrigimos bugs, melhoramos continuamente tudo o que poderia ser melhorado na experiência de compra online. No quinto ano de vida da empresa, decidimos estar prontos para compartilhar nossos recursos e expertise com outros players do mercado.



Portanto, temos a primeira direção B2B, que fornece a grandes parceiros serviços de estúdio fotográfico, armazenamento e entrega de mercadorias e ligações para clientes. Em breve surgiu dentro da empresa um Marketplace, para médias e pequenas empresas, que disponibiliza uma montra Lamoda como um serviço adicional à lista anterior. As duas direções trabalharam e se desenvolveram praticamente em paralelo, se aproximando e se superando na oferta de serviços.



Após mais 3 anos e após avaliação dos resultados, decidiu-se combinar o B2B e o Marketplace numa função comercial, que se dedica à criação, desenvolvimento e suporte de serviços para parceiros externos, com base nos serviços internos da Lamoda existentes.



Agora estamos cooperando com cerca de 20 grandes marcas - todas são empresas globais com reputação mundial que possuem seus próprios processos de negócios complexos. Outros 1000 de nossos clientes são médias e pequenas empresas, que muitas vezes não possuem uma infraestrutura de TI desenvolvida. Para todos os parceiros, nós mantemos uma camada de integração separada, que é projetada para o desenvolvimento rápido e flexível de funcionalidades que convertem processos externos em nossos.



imagemSou Alexey Felde, arquiteto de soluções e responsável pelo desenvolvimento técnico e de produto da função comercial da Lamoda.



Estou engajado no desenvolvimento e suporte de serviços na camada de integração, e para isso devo entender profundamente os processos de negócios da empresa e de nossos parceiros, a fim de projetar quaisquer alterações nos sistemas Lamoda.



Como mencionei acima, estamos desenvolvendo duas áreas principais de interação com marcas: Marketplace para pequenas marcas, para o qual fornecemos solução SAAS na forma de um aplicativo WEB separado, e B2B - grandes projetos separados para grandes marcas globais, para os quais fornecemos totalmente nossas capacidades operacionais, ou ajudamos a integrar com o nosso.



A direção de B2B é uma das mais interessantes da empresa, mas ao mesmo tempo uma das mais difíceis. Acontece que os gigantes da moda do mundo vêm até nós com requisitos completamente novos ou restrições de integração. Nesses casos, minha equipe interage com outras equipes da Lamoda e projetamos alterações em qualquer serviço necessário da empresa. Para conectar um dos líderes da indústria global da moda, precisávamos mergulhar em todos os seus processos de negócios, incluindo contábil e operacional. Como parte do projeto, abordamos 15 dos nossos processos internos: desde a descrição da mercadoria no local até a contabilidade e entrega. Minha equipe tem a mais ampla experiência na operação de sistemas de TI e processos de negócios da Lamoda. Isso requer uma sistematização cuidadosa e documentação de nosso conhecimento.



Para pequenos fabricantes de roupas, calçados e acessórios, que muitas vezes nem têm seu próprio departamento de TI, oferecemos uma solução de mercado em caixa que permite rastrear vendas, movimentação de mercadorias e devoluções. Funciona plenamente nas instalações dos nossos sistemas: as fotos das mercadorias são tiradas pelo nosso estúdio e são armazenadas connosco, as mercadorias ficam fisicamente não na casa do cliente, mas no nosso armazém e são entregues pelo serviço de entregas da Lamoda.



Outro nosso produto embalado com código-fonte é um estúdio fotográfico. Ele foi comprado por um grande varejista de luxo há alguns anos. Eles tinham fotos muito diferentes em seu site e isso influenciou muito a conversão de vendas. Nosso estúdio realizou um grande número de testes com fotografias: qual delas vende melhor (fotos de homens sem cabeça ou com cabeça, ângulos corretos das pernas, etc.). O cliente gostou muito dos resultados destes testes e quis aplicar a nossa experiência na sua loja online. Para isso, ele precisava construir um estúdio parecido com o nosso, onde as pessoas trabalhariam, organizariam o processo fotográfico e instalariam nosso sistema de informática.



Lamoda em miniatura



Em contraste com as equipes de serviço, temos uma tarefa diferente - o desenvolvimento de uma camada de integração por trás da qual se esconde uma empresa de uma grande empresa. O produto principal é uma plataforma B2B, que, no nível do código, é dividida internamente em módulos: um módulo para trabalhar com um warehouse, um módulo para trabalhar com entrega e assim por diante. É um grande sistema que, no nível desses pequenos módulos, pode gerenciar certos serviços. Acontece que nossa plataforma é um Lamoda em miniatura. Ao mesmo tempo, os parceiros veem apenas uma API - universal e muito simples, por trás da qual toda a complexidade do Lamoda está oculta. Ao mesmo tempo, devemos ser o mais simples possível para a integração - nosso primeiro princípio no desenvolvimento, depois vem estabilidade e confiabilidade. Oferecemos suporte a vários SLAs, por exemplo, um deles é um tempo máximo de inatividade do sistema de 4 horas por ano. Como colegas,prestamos muita atenção às tarefas de tolerância a falhas, processos de liberação, qualidade de código, cobertura por testes funcionais. Nossa plataforma B2B é quase o primeiro sistema da lista em termos de número de testes, temos mais de 2.000 testes funcionais e 3.000 testes unitários.

B2B :



·

·

·

·





:



· PHP,

· Java,

· JavaScript,

· GO,

· Symfony,

· Camel,

· PostgreSQL,

· AngularJS,

· Apache Kafka,

· RabbitMQ.



Antes de conectar a marca, combinamos com o parceiro todos os detalhes do relacionamento: a variedade e a quantidade esperada de mercadorias, a geografia de entrega, o conjunto de serviços conectados. Em seguida, o componente de TI entra em ação: os detalhes da integração são discutidos com a marca e ajudamos a conectar à nossa API. Se algo for diferente do esquema de integração padrão, também aumentamos os serviços que são middleware entre os sistemas de parceiros e nossa plataforma B2B.



90% do tempo, atualizamos nossa plataforma e implementamos novos processos de negócios. O último dos processos de negócios implementados é trabalhar com códigos Datamatrix, que já foi discutido em outro artigo , e colegas mencionados acima.



Em nosso trabalho, o principal é manter um equilíbrio de tecnologias e escolher ferramentas para as tarefas que estão sendo resolvidas. Sinceramente, não perseguimos a moda na indústria. Nossa pilha é PHP, Java, Javascript e alguns Go.



imagem



Conforme mencionado no artigo, a empresa historicamente escreveu muitos sistemas em PHP. É conveniente e rápido programar processos de negócios nele. A base de nossa plataforma B2B está escrita nela - autorização, gerenciamento de funções, todos os principais processos de negócios. É baseado em arquitetura hexagonal, uso ativo de DDD e design primeiro de API. Oferecemos suporte a aplicativos de página única escritos em Angular 1.5. Ele se comunica com nossa plataforma B2B via API e é principalmente responsável por processar a IU para nossos funcionários e funcionários parceiros.



Também usamos Java, em particular o framework de integração Camel. As marcas nem sempre estão prontas para usar nossa API e, para grandes empresas, escrevemos middleware que convertem o domínio da marca no domínio Lamoda. Camel economiza tempo desenvolvendo soluções de integração de sistemas, muda a mentalidade das pessoas para boas práticas de engenharia usando padrões de integração empresarial (EIP). Planejamos desenvolver o Camel em locais onde seja mais conveniente usar padrões de integração do que escrever um serviço separado.



Usamos ativamente o Kafka para trocar dados entre sistemas internos. Isso reduz significativamente a conectividade entre os sistemas, porque nas especificidades do nosso trabalho precisamos armazenar instantâneos de dados de todos os sistemas aprimorados para os parceiros. Para tudo o que precisa ser feito rapidamente e para tarefas de escritório, escrevemos em Go. Um de nossos serviços calcula métricas a cada minuto com base nos dados armazenados. Anteriormente, essa solução era construída em uma plataforma B2B e escrita em PHP, mas nós a reescrevemos para ágil Go, uma vez que tem maior desempenho, suporte mais fácil, é melhor escalonável e pode ser implementada fora do ciclo de lançamento da plataforma B2B.



Fico sinceramente feliz quando vejo o resultado do trabalho de nossa plataforma em mais de 30 sites de terceiros de grandes e famosas marcas de moda. Vejo como um pedido, que é colocado em nossos sistemas a partir do site de outra pessoa, é processado por nossa operadora de contact center e depois transportado por nossa entrega. Ninguém sabe que todos esses processos são criados e automatizados em Lamoda, mas fazemos isso de forma tão bacana que nossos processos são comprados por marcas globais.



All Articles