Lamoda desde adentro: por qué la tienda en línea de 300 ingenieros

Hola Habr! Mi nombre es Valentine, soy CTO en Lamoda, donde he estado trabajando casi desde la fundación de la empresa. Todos estos años, todo el equipo que corrimos avanzó tan rápido que no fue posible detenerse un poco y hablar de nosotros mismos. Creo que ha llegado el momento.



Puede parecer que Lamoda es uno de los pioneros de la Internet rusa, pero solo tenemos siete años. Desde su fundación en 2011 hasta la actualidad, nuestra empresa ha crecido de 11 empleados a más de cinco mil. Cada mes,> 10 millones de personas visitan nuestro sitio. De hecho, éramos un recién llegado en la TI rusa establecida y, como resultado, en tan poco tiempo pudimos ponernos al día y superar a muchos muchachos honrados.

Espero contarles un poco sobre nuestros logros, fracasos, experiencia y las tareas más útiles e interesantes y qué tareas enfrenta nuestro equipo todos los días. Consideraremos esta publicación como nuestra conocida.

En 2011, desarrollamos de forma independiente solo la preparación de contenido y la compra de acciones para la venta, todo lo demás se subcontrató. Ahora hacemos todo nosotros mismos. Supervisamos la operación de nuestro propio almacén de cinco niveles del tamaño de un campo de fútbol, ​​tres centros de contacto y entrega a clientes. A pesar del hecho de que Rusia tiene una cultura de TI muy alta, las grandes empresas están comenzando a sumergirse en cómo construir dicha infraestructura, y Lamoda ha seguido este camino con éxito durante muchos años.

Entonces, ¿de qué está hecho el backstage técnico de Lamoda? De hecho, estas son cinco unidades grandes:

  • departamento de desarrollo (departamento de automatización de procesos de negocio y departamento de desarrollo de tienda en línea)
  • Departamento de soporte de TI (infraestructura y seguridad)
  • Departamento de implementación y soporte del sistema ERP
  • departamento de soporte de servicio
  • departamento de datos y análisis



Todo en GO


Esta historia trata sobre los chicos que están desarrollando una plataforma de comercio electrónico, y en su tiempo libre manejan motos y realizan visitas guiadas a bares de cerveza artesanal.

Es en el departamento de desarrollo de comercio electrónico que las plataformas crean todo lo que los clientes de Lamoda utilizan a diario: las versiones de escritorio y móviles del sitio y las aplicaciones para iOS y Android. La complejidad del trabajo no está en la implementación de la funcionalidad para el usuario, el equipo necesita implementar nuevas características lo más rápido posible, pero sin pérdida de calidad y estabilidad, y apoyar proyectos en cuatro países: Rusia, Kazajstán, Ucrania y Bielorrusia. Hasta la fecha, los empleados de este departamento pueden ejecutar el servicio todas las semanas, si es necesario, y trabajar bajo el lema: "Todo en GO".


Los equipos se desglosan principalmente por plataforma (escritorio, sitio móvil, aplicaciones móviles), también hay cuatro equipos para servicios de back-end. Cada equipo incluye desarrolladores frontales y posteriores, analistas, probadores y un gerente de producto.

Para ofrecer los cambios con la mayor frecuencia posible, practicamos este enfoque para las iteraciones de desarrollo: al comienzo del sprint presentamos una hipótesis y lanzamos nuevas características en la producción, la probamos y nos damos cuenta de si la innovación es beneficiosa para el producto y si la vida de los usuarios de Lamoda está mejorando. Por ejemplo, no hace mucho tiempo aprendimos a mostrar cuánto ha comprado recientemente una persona vista por una persona. Para hacer esto, tomamos la tarea del producto, encontramos el MVP y determinamos la estrategia de implementación más rápida. Antes de implementar todo en producción, determinamos que el aumento en la conversión sería el criterio del éxito. Según los resultados de la prueba A / B, la conversión es mayor en el grupo donde se introdujo la función.

Hace algún tiempo, Lamoda comenzó una transición masiva y rápida a microservicios. ¿Qué nos da esto? El primero es un umbral de entrada bajo para un nuevo desarrollador o especialista de otro equipo. El segundo es el fácil soporte y cambio de los sistemas de microservicios para que el flujo de trabajo se llene de dolor interesante y no solo doloroso. Pero un pequeño número de monolitos (por ejemplo, el sistema responsable de la distribución de pedidos) aún vive con nosotros, y en este momento es difícil e inconveniente deshacerse de ellos.

Recopilamos Lamoda desde cero sin SMS y registro


Todos saben que no hay trabajo sin fallas. Cada vez, resolviendo el problema y lanzando el código, esperamos que aquí esté, felicidad, y luego no, otra vez experiencia. Hablando de la experiencia, vale la pena señalar el hecho de que los empleados del departamento de desarrollo de plataformas de comercio electrónico, como los verdaderos luchadores, pueden literalmente armar a Lamoda desde cero. Sucedió que, debido a una configuración de red incorrecta, nuestro clúster decidió que ya no era un clúster y se negó a existir. Fue una suerte que fuera de noche, y en cuatro horas logramos darle vida a Lamoda. Tenemos otras historias



Timur Nurutdinov, Jefe de Desarrollo de la plataforma de comercio electrónico:

Antes de comenzar a trabajar en la nueva funcionalidad, nosotros, como siempre, nos sentamos a evaluar qué recursos necesitábamos. Cuatro equipos participaron en el proyecto. Tomamos en cuenta las prioridades de otras tareas, el calendario de vacaciones de colegas y los costos laborales. Como resultado, tenemos 32 semanas.

Ocho meses para implementar una característica. Eso suena salvaje. Con la ayuda de cambios simples, pudimos reducir el tiempo de comercialización a 4 semanas, y esto es lo que hicimos.

El truco de los equipos de la plataforma es que son capaces de hacer tanto adelante como atrás. Así es como funcionan en nuestro departamento. Pero en el back-end, existe la necesidad de realizar cambios en muchos sistemas integrados, y las competencias del equipo de la plataforma no lo permiten. Comenzamos el proyecto Tamaños relacionado con proporcionar al cliente las cuadrículas dimensionales más detalladas, y no queríamos esperar. Primero tuve que averiguar qué sistemas debían cambiarse, luego reunimos un pequeño equipo con las competencias apropiadas. Así que eliminamos el bloqueo para esperar recursos de otros equipos de plataforma y obtuvimos un equipo de producto. En cuanto a las tareas, actuamos de nuestra propia manera comprobada: dividimos las tareas grandes en otras más pequeñas, las hicimos, las implementamos y probamos nuestras hipótesis en los usuarios para comprender si nos estábamos moviendo en la dirección correcta. Después de un experimento tan exitoso con la creación de un equipo de producto, planeamos organizar equipos en áreas donde los empleados forman una sola unidad y desarrollan una dirección específica, por ejemplo, la entrega.

Automatización de almacenes e intervalos de entrega de 15 minutos


Los chicos de la automatización no tienen tiempo para aburrirse, y las tareas aquí no son triviales. Por ejemplo, cómo cargar millones de productos con el mismo alto nivel de calidad de contenido (automatización de un estudio fotográfico) en el sitio, cómo procesar y tener en cuenta todos los pedidos del sitio, teniendo en cuenta cientos de socios del mercado y cuatro países de la CEI, cómo recoger un pedido en un almacén de cinco pisos en tres horas, cómo realizar la entrega al cliente al día siguiente en el intervalo de 15 minutos elegido en 600 ciudades solo en Rusia. Y para el postre, están vendiendo toda esta granja a socios B2B y la dirección del mercado.

El trabajo se realiza principalmente en PHP, para la automatización del almacén utilizamos Java más Docker / Kubernetes, Atlassian stack, PostgreSQL, RabbitMQ.







Tenemos un sistema de cubetas para planificar sprints en nuestro departamento: el 60% es una cubeta de proyecto, el 20% es deuda técnica, el 10% del sprint se otorga a errores prioritarios y el 10% es que algo volará desde afuera. Entre otras cosas, preparación de backlog, póker de planificación en línea, stand-up, retro, revisión de código 360, recopilación y análisis de métricas básicas, monitoreo (Prometheus, Grafana, Icinga, Kibana), en general, todo es como en las mejores casas de los equipos de desarrollo de París .

Aquí hay un par de historias divertidas de Pavel Savelyev, jefe del departamento de automatización de procesos comerciales.

Es imposible probar y tener todo en cuenta, porque las personas participan de una forma u otra en todos los procesos comerciales. Y las personas, como saben, son criaturas racionales y siempre intentan dar toques astutos que les faciliten la vida. Pero cuando estas mismas nociones van en contra del proceso comercial descrito, suceden historias divertidas.

Una vez que notamos que el sistema responsable de distribuir productos en un almacén recibe cien veces más escaneos en un minuto de lo habitual. Resultó que el personal del almacén encontró un sistema de pirateo y decidió facilitar su trabajo. Al irse a almorzar, apretaron un botón en el escáner para que no fueran expulsados ​​de la sesión del usuario. Y este truco de trabajo continuaría funcionando, pero en uno de los contenedores (una caja especial para productos en el almacén) había muchos artículos pequeños. El escáner, como la ametralladora de Maxim, procesó productos del artillero desafortunado, lo que provocó un brusco salto en la carga, fallas en el sistema y la detección de un error obvio por parte de los desarrolladores. Por supuesto, arreglamos un error, pero creo que el personal del almacén no nos dejará aburrirnos y propondrá algo nuevo.

El segundo caso también ocurrió en el almacén. Esta historia se llama "43 camisetas divertidas". No siempre es posible reconocer de inmediato la complejidad del algoritmo, especialmente cuando resuelve el problema de la mochila y necesita colocar de manera óptima N objetos en un cierto volumen (problema de empaque tridimensional). Resultó que si 43 camisetas idénticas llegan a nuestro almacén, el sistema responsable de empacar los productos genera tantas combinaciones de distribución para este caso que es lo suficientemente cursi para la memoria. Revisamos el algoritmo y ya no tenemos miedo de las camisetas idénticas, pero ¿qué sucede si cientos de pares de calcetines entran en el empaque, que los fabricantes deciden vender uno a la vez? Vale la pena considerar ...

En cualquier situación incomprensible, concéntrese en los datos.


Los cambios con respecto a la analítica en Lamoda se han retrasado hace mucho tiempo, y este año comenzamos a combinar departamentos analíticos dispares con nuestra infraestructura analítica y hábitos en un departamento grande. Por qué La razón principal es que los empleados que están en equipos analíticos dispares a menudo hacen el mismo trabajo, pero de diferentes maneras, y luego no está claro en qué datos enfocarse. Datos diferentes: esto generalmente es normal, porque los equipos provienen de diferentes tareas y requisitos previos, pero debe dedicar mucho tiempo para comprenderlos.

Los empleados del departamento son verdaderos evangelistas de que todas las decisiones en la empresa deben tomarse sobre la base de los datos, por lo tanto, todos los días aquí estudian con entusiasmo los fenómenos comerciales en los datos, analizan y extraen valor de los datos, evaluando cómo se pueden aplicar. La herramienta principal es SQL, así como Spark, Hadoop, Python para análisis de datos, Excel, SAP BusinessObjects para informes y Tableau para visualización.

Una de las tareas importantes del equipo es la personalización de la experiencia del cliente: creamos una solución donde a cada usuario se le mostrará la lista más relevante de productos y ofertas, y todos nuestros servicios se ajustarán individualmente a cada cliente individual, y no al grupo, como se hace ahora.

Sergey Gilev, Jefe del Departamento de Datos y Análisis:

El departamento de análisis actualmente enfrenta dos grandes tareas: la primera es la consolidación de la economía diversa que teníamos antes de la fusión. Para un trabajo más efectivo, necesitamos métricas comunes, infraestructura analítica y procesos. El segundo objetivo es un proyecto para crear paneles analíticos que describan la "salud" de un proceso en particular o de toda la empresa. Por lo tanto, nos esforzamos por mejorar significativamente la disponibilidad de datos para los tomadores de decisiones e inculcar en todos nuestro enfoque de trabajo: centrarnos en los datos en cualquier situación incomprensible.

La historia del gran movimiento: cómo lanzamos nuestro propio almacén sin ser notado por los clientes


El abandono gradual de la subcontratación nos llevó al hecho de que era hora de poner en marcha nuestro propio almacén. Además de todos los preparativos para la automatización de los procesos operativos en el nuevo almacén, nos propusimos el objetivo de no reducir el alcance y, en ningún caso, detener la venta. Nuestros expertos han desarrollado una solución basada en la creación de almacenes "virtuales" adicionales. Por lo tanto, durante toda la reubicación, tuvimos tres tipos de almacenes: antiguos, nuevos y en camino. Dado que las mercancías fueron transportadas gradualmente por grupos de camiones, el stock que terminó en el siguiente lote se transfirió a un almacén "virtual". Teníamos un cronograma de carga y descarga, por lo que sabíamos exactamente cuánto tiempo estaría en tránsito el stock y orientamos a los clientes a la fecha de entrega correcta para el pedido.

También se nos ocurrió e implementamos un algoritmo complicado que nos permitió equilibrar la velocidad de movimiento y organizar la recepción de todos los artículos pedidos en una sola entrega: cuando una persona ordenó varios artículos que podrían estar físicamente en diferentes almacenes, intentamos organizar el montaje completo del pedido en un almacén, Y la ventaja se le dio al almacén del socio, ya que el proceso de ensamblaje ya se había depurado allí.

El trabajo de lanzamiento de nuestro propio almacén estuvo en pleno apogeo durante tres meses, durante los cuales ningún cliente resultó herido.

Preparándose para el Black Friday o cómo sobrevivimos en el período de adicción a las compras


Hace unos años teníamos miedo del Black Friday como un monstruo aterrador. No teníamos idea de cómo responderían nuestros sistemas a tal flujo de órdenes. Pero el trabajo constante en refactorización y desarrollo de infraestructura ha estabilizado nuestros sistemas y los ha hecho lo más predecibles posible. El último Black Friday fue el día más aburrido del año. Los especialistas en sistemas clave y DevOps simplemente se sentaron a la mesa, jugaron videojuegos o vieron películas y observaron el estado de nuestra infraestructura con un solo ojo. Pero los preparativos para este día son un poco diferentes.

Programamos pruebas de estrés en función de los pronósticos comerciales, luego, tanto los desarrolladores como los administradores configuran los sistemas para pasar las pruebas. Varios meses de pruebas, bloqueos, correcciones, y solo después de eso creemos que estamos listos para una ola de usuarios y pedidos.




Sala de guerra: nuestro centro de operaciones el Viernes Negro

Las decisiones que tomamos para sobrevivir al Black Friday dependen de los cuellos de botella que encontramos durante las pruebas. Hace unos años, reemplazamos físicamente los conmutadores de red para eliminar los problemas de ancho de banda. Otra acción que generalmente realizamos para reducir la carga es deshabilitar subsistemas que no son críticos.

Resumen


Todos estos años tratamos de mejorar y simplificar constantemente nuestro flujo de trabajo, recolectando comentarios de los empleados de la compañía, estableciendo canales ascendentes y apoyando completamente nuevas ideas y conceptos.

Alguien dirá que Lamoda es un zoológico absoluto de tecnologías y sistemas. A menudo bromeamos sobre este tema y decimos: "Es mejor preguntar qué no usamos". Pero en este asunto, un hecho esencial es que estamos evolucionando constantemente la pila y las tecnologías, y al mismo tiempo no hay una elección irreflexiva. Esto nos ayuda con la revisión de la arquitectura de cada nuevo servicio y proyecto, una guía de la experiencia existente de los empleados, así como el mantenimiento del radar tecnológico , cuyos detalles y argumentos estaremos encantados de contar en la próxima publicación. Y también estamos felices de celebrar sobre este tema.

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


All Articles