En pocas palabras, BPA es una red tan centralizada que combina un servicio de entrega, un gran almacén y un sistema de gestión de pedidos, con desarrollo e integración con socios. Todo esto está relacionado con informes y análisis. Diseñamos y redactamos todos los servicios para la interacción de estos sistemas y la prestación de servicios similares a los socios.
Nuestro departamento de TI se encuentra con el mundo real : es fácil establecer un intervalo de entrega de 15 minutos en un sistema de TI, pero es bastante difícil asegurarse de que miles de representantes de ventas en Moscú acudan a la dirección exactamente durante este intervalo. La principal tarea de nuestro departamento es vincular negocio y tecnología. El departamento de BPA en sí se encuentra ahora en tres áreas: entrega, almacén y función comercial, que incluye la interacción con B2B y el mercado. Y todo lo que usamos nosotros mismos y vendemos afuera es realmente genial: nuestras características generan dinero, ahorran tiempo y ofrecen un servicio de alta calidad a nuestros clientes.
5 idiomas y 2 millones de líneas de código
BPA es un conjunto de sistemas que se integran entre sí y con otros sistemas Lamoda. Para su desarrollo, usamos PHP, Java, Kotlin, hay un poco de Go y Typecript, hay 5 idiomas en nuestro radar técnico. Redactamos todos los sistemas para las tareas de nuestro negocio. Ahora son 2 millones de líneas de código, 25 servicios y más de cien bibliotecas reutilizables.
El lenguaje principal es PHP y varios otros grandes servicios están escritos en Java y Kotlin. ¿Por qué PHP? En primer lugar, implementa un sistema de procesamiento de pedidos: un monolito, que hemos estado cortando en microservicios durante muchos años, y en segundo lugar, somos excelentes para trabajar con PHP: escribimos rápidamente en él, lo servimos bien, lo hemos resuelto con un montón de bibliotecas... Este enfoque nos permite lanzar nuevos servicios con todas las conexiones de infraestructura: con todos los registros y monitoreo, en solo unos días. Podemos usar tanto Go como Kotlin como en un almacén. No utilizamos tecnologías duplicadas, y todo lo demás no está prohibido, siempre que funcione.
En los procesos comerciales, la lógica y la consideración de cada paso es importante. Para que no suceda que su pedido fue del almacén a Vladivostok, y de repente apareció una placa inesperada en el sistema y no se la entregó.
Debemos cubrir cada paso con pruebas, ya que la estabilidad y corrección de la ejecución de la lógica del sistema es crítica. Además, nuestros socios también utilizan nuestros procesos comerciales. Por tanto, la prioridad de la compañía es la estabilidad, a pesar de que la velocidad de lanzamiento de nuevos servicios también es importante para los negocios. Para garantizar la estabilidad, invertimos tiempo en diseñar servicios y pruebas a su alrededor. Esto nos da la oportunidad de desarrollar el sistema sin arriesgarnos a romperlo todo.
¡Incluso hay trigo sarraceno!
Soy Anton Dmitrienko, responsable técnico de WMS - Sistema de gestión del centro de distribución Lamoda o, más simplemente, almacén.
Mis tareas principales son hablar el mismo idioma con los negocios, desarrollar un modelo de dominio y preparar el sistema para los cambios. Para hacer esto, necesita comprender dónde están nuestros "puntos calientes". Hay procesos que se alinean una vez cada tres años, y hay aquellos que cambian cada tres meses: estos son "puntos calientes". Es importante considerarlos al diseñar un sistema.
Ahora tengo cuatro equipos: 18 personas que participan en la creación, prueba y soporte del sistema. Aceleramos todos los procesos operativos y comerciales del almacén: sin nosotros con los volúmenes actuales del negocio de Lamoda, el envío de un pedido de un cliente llevaría mucho tiempo, nuestra participación reduce el tiempo de procesamiento de cualquier pedido a 4 horas.
La escala es, por supuesto, muy grande: el almacén de Lamoda tiene unos 40 mil metros cuadrados o varios campos de fútbol en 5 pisos, donde se almacenan 10 millones de mercancías. Funciona las 24 horas del día 364 días al año, con un día libre una vez al año: el 1 de enero. Y todos los días salen más de 500 empleados para un turno, y a través de nuestro sistema se envían y reciben 200 mil mercancías. Además, dentro del almacén se despliega una red de transportadores mecanizados y equipos, los cuales están diseñados para transportar mercancías, empaquetar paquetes, consolidar físicamente los pedidos de los clientes, clasificar los paquetes por destino, también los gestionamos.
Lamoda vende a sus clientes todo tipo de productos, desde sombrillas y maletas de gran tamaño hasta pequeños relojes y joyas. Todo esto se almacena y procesa en nuestro almacén. Cada categoría tiene sus propias características. Por ejemplo, los productos de gran tamaño no se pueden procesar en equipos automatizados, las joyas se almacenan y procesan con medidas de seguridad adicionales y los cosméticos, los perfumes, por ejemplo, requieren ciertas condiciones de almacenamiento de temperatura y control sobre la vida útil de los productos.
Recientemente tuvimos un proyecto llamado "Buckwheat". Desde la introducción del régimen de autoaislamiento, Lamoda ha agregado alimentos populares de larga duración a su gama. Por cierto, implementamos esta función en solo unos días. Por supuesto, el surtido principal es ropa y calzado, el trabajo con el que también tiene algunos matices: para la venta de mercancías es necesario preparar y comprobar su calidad: será malo si, por ejemplo, traemos una camisa sin botones al cliente.
Lamoda no es solo una tienda en línea, sino una plataforma de comercio electrónico en toda regla que proporciona su infraestructura y servicios (incluido un almacén) a socios externos. Por ejemplo, las grandes marcas de moda internacionales almacenan sus productos con nosotros. ¿Qué diferencia hace? Los vestidos, abrigos y zapatos de los socios son los mismos que ya están en nuestro almacén. Pero todos tenemos requisitos individuales para los procesos que estamos obligados a cumplir según los contratos, por ejemplo, algunos de los productos de grandes clientes se almacenan en zonas separadas y los productos del mercado se encuentran en todo el stock. Estas características también deben tenerse en cuenta.
Verificamos y procesamos cada producto en cada etapa del proceso teniendo en cuenta los detalles no solo en el mundo físico, sino también en el sistema de TI. Además, el propio sistema de TI indica al empleado del almacén cómo manejar un producto específico, ya que el operador no puede conocer todas las características o acuerdos: el producto no dice a quién pertenece: una gran empresa internacional o un pequeño socio del mercado.
La característica clave del sistema es la interacción a través de escáneres y códigos de barras: cada producto tiene un código de barras único, que se puede leer para obtener toda la información necesaria sobre el producto. Este enfoque minimiza los errores y le permite realizar todas las acciones con el producto más rápido, reduciendo el número de empleados. Si enviamos 200 mil productos por día, 1 segundo ahorrado en un producto equivale a 55 horas de tiempo de trabajo. Para los negocios, es tangible.
Bajo el capó del almacén
Nuestras tecnologías:
Java 8,
PostgreSQL,
Wildfly,
Spring,
Redis,
ActiveMQ,
Hibernate.
Comenzamos con una solución lista para usar en Java, pero desde entonces la funcionalidad del sistema se ha expandido enormemente y el código ya se ha refactorizado y reescrito por completo varias veces.
Ahora tenemos 350 mil líneas de código, y esto es solo el backend de la aplicación principal, y también hay 5 servicios secundarios y 2 interfaces de usuario: un cliente web ligero y una aplicación nativa móvil. Estamos haciendo un desarrollo completo.
Los empleados del almacén utilizan el cliente móvil. Se mueven por el almacén utilizando nuestra propia aplicación de Android, esta es una tecnología más moderna y conveniente que permite utilizar las características del propio dispositivo: vibración, sonidos por errores, y la batería se gasta menos si la aplicación es nativa y no basada en navegador. La aplicación en sí está escrita en Kotlin, tenemos una buena experiencia usándola. Incluso comenzamos a escribir un backend en él: hasta ahora este es solo un servicio, pero nos gusta que el código es más simple y más expresivo que en Java, y el rendimiento es el mismo. No tenemos el objetivo de reescribir todo en Kotlin, pero continuaremos usándolo para tareas adecuadas.
La interacción con otros sistemas Lamoda se construye a través de un bus de datos escrito en Apache Camel utilizando el agente de mensajes ActiveMQ. Este enfoque proporciona una entrega garantizada y una transformación relativamente simple de mensajes para varios formatos, la capacidad de distribuir mensajes a varios consumidores. Fuimos los primeros en usar Apache Camel en 2014, luego este método de integración fue adoptado por otros equipos de nuestro departamento.
Los principios de la construcción de sistemas de almacén:
· fiabilidad y calidad
· extensibilidad y flexibilidad
· simplicidad
El almacén está en el corazón de los procesos logísticos de Lamoda, y los errores y el tiempo de inactividad del sistema tienen un impacto significativo en el negocio. Por lo tanto, prestamos mucha atención a la estabilidad y tolerancia a fallas del sistema. La confiabilidad se logra duplicando los elementos críticos del sistema y la infraestructura. Tenemos dos servidores independientes que se dividen en máquinas virtuales. Cada aplicación se implementa en dos instancias, cada instancia en su propia máquina virtual. El cliente interactúa con el servidor a través de un equilibrador en forma de Haproxy, que enruta las solicitudes a una de las instancias. La base de datos también se respalda mediante el esquema de replicación maestro-esclavo.
Todos nuestros servidores están ubicados físicamente en el almacén, lo que también aumenta la confiabilidad y velocidad de trabajo debido a la interacción de todos los elementos del sistema a través de una red local. Incluso si el Internet externo se cae, seguiremos trabajando, y en caso de un corte de energía, tenemos fuentes de alimentación ininterrumpidas y generadores de gasolina en el almacén.
Para minimizar la cantidad de errores en el código, escribimos pruebas automatizadas: unidad, integración, aceptación, carga, y el equipo de pruebas verifica todo a mano. Todo esto es una práctica obligatoria y está integrado en el ciclo de vida de la tarea, a veces, por supuesto, aparecen errores, pero no hemos tenido reversiones completas de versiones durante varios años.
Capacidad de expansión y flexibilidad: para nosotros, es principalmente una cuestión de cuánto esfuerzo y tiempo dedicaremos a cambiar el sistema para cumplir con los nuevos requisitos de los procesos comerciales. Por lo tanto, el desarrollo ofrece la posibilidad de cambiar el código de forma rápida y sencilla en el futuro. Por ejemplo, cualquier categoría de bienes se puede configurar para una ubicación de almacenamiento física específica, esto le permite conectar rápidamente nuevas categorías de bienes para la venta. Para cada pedido, se configura en qué material se empaquetará y qué documentos adjuntos se imprimirán para él. Y esto es solo una pequeña parte de las funciones.
Tenemos un área temática compleja con una gran cantidad de procesos comerciales y un modelo de dominio ramificado. Cuanto más simple sea el código, mejor, porque aumenta su legibilidad, comprensibilidad y reduce la probabilidad de errores. Y le permite centrarse más en la función que realiza el código para la empresa.
Seguro de error
Mi nombre es Denis Plisko y soy el líder de desarrollo de servicios de entrega en BPA.
Hemos creado, desarrollado y mantenido el sistema informático LM Express. Sirve para automatizar el trabajo de almacenes de tránsito, comerciales y puntos de emisión de pedidos. Nuestro sistema lo sabe todo sobre la llegada y salida de las entregas, se ocupa de su tramitación, vende y emite pedidos ya pagados, acepta devoluciones y muchos otros procesos comerciales relacionados. Además, en él registramos y analizamos las acciones físicas de nuestros representantes de ventas y trabajadores del almacén; hacemos un seguimiento de todo lo que sucede en la “última milla” antes de que la mercancía sea entregada al comprador. La mayoría de los procesos técnicos que se encuentran en forma de información en el sistema Express reflejan las acciones físicas de un empleado del servicio de entrega.
Cómo se ve? Por ejemplo, un empleado acepta una entrega, saca un palé de él, una caja que contiene paquetes con mercancías, saca paquetes, los clasifica en estanterías: cada acción que realiza va acompañada de una operación en nuestro sistema. Y aquí es donde pueden surgir errores: nunca se puede estar seguro de que incluso si el empleado de la entrega "hizo clic" todo correctamente, entonces es así. Como consecuencia, una de las partes más importantes de la lógica de nuestro proceso es advertir y corregir errores: a veces esto se puede hacer de forma automática, a veces a través de la propia persona, a veces a través del servicio de asistencia o de los usuarios que tienen derechos más avanzados. Si no fuera por estas características, nuestros sistemas serían 5 veces más pequeños.
Los principios de la construcción de sistemas de entrega:
· estabilidad y disponibilidad de sistemas
· consistencia de datos
· independencia de sistemas y servicios externos
La tarea es asegurar el funcionamiento más estable de los sistemas, ya que de esto depende directamente si las personas reciben sus compras a tiempo o no. Al implementar cualquier funcionalidad, tratamos de ser independientes de los servicios y sistemas externos, para ello, se duplican muchas interacciones. Supongamos que ha llegado una entrega y no hay datos de pedido para ella, entonces nosotros mismos solicitaremos esta información para no detener el trabajo. También es importante hacer idempotentes muchas operaciones para mantener la coherencia de datos necesaria, especialmente en intercambios con otros servicios.
Además, nos esforzamos por recibir todos los datos necesarios lo antes posible, para que no resulte que una persona haya venido a buscar un producto y no pueda recibirlo debido a una falla del sistema. Nos esforzamos por hacer que las partes internas del sistema sean lo más confiables posible, de modo que la interacción del usuario con ellas dependa únicamente de nuestros propios servicios. Por lo tanto, incluso si todos los sistemas Lamoda dejan de estar disponibles temporalmente, el trabajo de los almacenes y puntos de recogida no se detendrá y las operaciones principales continuarán.
En las calles mensajeros, mensajeros
Además de su propia entrega, Lamoda coopera con servicios de mensajería de terceros, por ejemplo, Russian Post, Pony Express, DPD y otros. Esto sucede cuando en una ciudad, región o país (por ejemplo, en Ucrania), nuestra entrega solo es posible a través de socios. Brindamos intercambio de información a través de la interacción con sus sistemas de TI.
Conectar cada nuevo mensajero es una aventura emocionante, ya que las API son muy diferentes para todos y no siempre están adaptadas para la integración. Esto se debe a que algunos de los servicios de mensajería son empresas históricamente fuera de línea. Se han estado enviando desde los días del papeleo, y escribir una buena API no es una tarea fácil.
Usamos un sistema especial basado en el framework ESB Apache Camel para implementar la integración con el nuevo socio. El uso de Camel facilita la realización de una amplia variedad de transformaciones de datos e interacciones en diferentes protocolos de intercambio. Normalmente, configurar la integración con un nuevo servicio de mensajería lleva de dos semanas a un mes.
La entrega es uno de los servicios que vendemos a nuestros socios junto con el almacén. Al solicitar un producto en una tienda en línea de una marca de ropa popular que no parece tener nada que ver con Lamoda, la compra será entregada por un representante de ventas en forma de LM express. Estamos trabajando en estos proyectos junto con el equipo de función comercial.
Para implementar proyectos de nuestro negocio, yo y nuestros líderes técnicos de 2 equipos (el tercero ahora está contratando desarrolladores y evaluadores) estamos determinando la mejor manera de adaptar todos los cambios a nuestra arquitectura actual.
Trabajamos sobre la base de los retrasos de la lista de proyectos. La empresa evalúa cada proyecto en términos de efecto financiero y de marketing. Estimamos los costos laborales y pensamos en un enfoque técnico: ¿es posible crear una nueva función de manera rápida y eficiente, o, por el contrario, será tan costoso y difícil que bloqueará todo el efecto comercial? Con base en estas estimaciones, ajustamos la acumulación y hacemos proyectos en la parte superior de la lista. Aproximadamente el 30% de nuestro tiempo de desarrollo se asigna a la acumulación técnica, por lo que no es necesario encontrar tiempo para refactorizar y mejorar los sistemas desde un punto de vista técnico, todo va según lo planeado.
El mundo interior de la entrega
:
· PHP,
· Java,
· Kotlin,
· TypeScript,
· MySQL,
· PostgreSQL,
· RabbitMQ,
· ActiveMQ,
· Apache Kafka,
· Apache Camel,
· Docker, K8S.
La mayoría de nuestros servicios se basan en PHP. Históricamente, los sistemas sobre los que se creó Lamoda se escribieron en este idioma. Una de las primeras versiones del sitio se creó en Magento, luego se tomaron los sistemas Rocket Internet como base para la entrega y procesamiento de pedidos. Han pasado por muchas iteraciones de desarrollo y reelaboración, pero PHP todavía es la base de casi todos los servicios, incluidos los nuevos. Ya hemos escrito alrededor de 200 mil líneas de código y muchos desarrolladores PHP experimentados (la dirección de entrega junto con los ingenieros de control de calidad cuenta con 20 personas y se está expandiendo activamente), pero no se limitan a una tecnología, son excelentes ingenieros que eligen la herramienta adecuada para la tarea.
No vamos a abandonar PHP en el backend, ya que tenemos una cultura de desarrollo bien desarrollada: utilizamos versiones nuevas del lenguaje y los marcos, cubrimos casi todo el código con pruebas, realizamos una revisión exhaustiva del código, tenemos un CI bien construido y muchas bibliotecas comunes que aceleran proceso de desarrollo.
A diferencia de la tienda en línea, no tenemos grandes cargas asociadas con RPS. En primer lugar, necesitamos una arquitectura de aplicación compleja y flexible, con una gran cantidad de niveles de abstracción (tratamos de adherirnos a DDD) para una lógica empresarial compleja y, a veces, confusa. También tenemos una gran cantidad de intercambios síncronos (JSON-RPC, SOAP) y asíncronos (RabbitMQ, Apache Kafka) con otros sistemas.
En total, alrededor del 80-85% de los sistemas están escritos en PHP, aunque a veces usamos Java. Contiene un servicio para interactuar con servicios de entrega externos, que estamos en constante cambio.
La interfaz está representada por un paquete de VueJS + TypeScript. Nuestros paneles de administración para usuarios internos no requieren un super-diseño o un diseño complejo.
También tenemos una aplicación nativa móvil para representantes de ventas, que está escrita en Kotlin para Android. Alguna vez fue desarrollado por desarrolladores móviles dedicados, pero ahora lo estamos desarrollando con mucho éxito por nuestra cuenta.
Para los empleados que trabajan en almacenes de tránsito, desde donde se envían los pedidos a todos los almacenes y puntos de recogida en Rusia, tenemos una aplicación web. Con este enfoque, existe el riesgo de indisponibilidad de nuestra aplicación debido a la desconexión de Internet en un punto de recogida específico o en un almacén, pero lo minimizamos utilizando la reserva de canales de comunicación.
Además de estos sistemas de entrega (Express y aplicación móvil, un bus para integración con servicios de mensajería externa), contamos con dos servicios más que nuestro equipo soporta actualmente: un servicio de impresión de recibos electrónicos y Datamatrix... Este último está destinado a garantizar el marcado de productos con códigos únicos de acuerdo con los nuevos requisitos de las leyes. Estos dos proyectos no están directamente relacionados con la entrega, pero es a través de nuestros servicios que se intercambian los datos necesarios para ellos.
El servicio de entrega imprime recibos: cada representante de ventas tiene una caja, además hay cajas en cada uno de nuestros puntos de recogida. Por tanto, el servicio de fiscalización interactúa constantemente con nuestro sistema. Datamatrix afecta a casi todos los sistemas BPA (almacén, envío, asociaciones, sistemas de contabilidad). Nuestra división también está interactuando muy activamente con él, por lo que participamos activamente en su desarrollo. Ahora mismo estamos desarrollando un nuevo sistema de políticas de incentivos para representantes de ventas.
La función comercial del BPA: lo que vendemos
La empresa tiene un objetivo ambicioso: ser la mejor plataforma de moda de la CEI. Para ello, Lamoda invirtió mucho en la calidad del servicio y planteó desde cero los procesos operativos: entrega, almacén, estudio fotográfico, trabajo de operadores de call center. Todos los procesos operativos han sido probados y probados en nuestros clientes. Experimentamos, monitoreamos los comentarios de los clientes, cometimos errores, arreglamos errores, mejoramos continuamente todo lo que se podía mejorar en la experiencia de compra en línea. En el quinto año de vida de la empresa, tomamos la decisión de que estamos listos para compartir nuestros recursos y experiencia con otros actores del mercado.
Así que tenemos la primera dirección B2B, que proporciona a grandes socios servicios de estudio de fotografía, almacenamiento y entrega de bienes y llamadas de clientes. Pronto apareció un Marketplace dentro de la empresa, para medianas y pequeñas empresas, que brinda un escaparate de Lamoda como un servicio adicional al listado anterior. Ambas direcciones trabajaron y se desarrollaron prácticamente en paralelo, poniéndose al día y superándose en la oferta de servicios.
Luego de otros 3 años y luego de evaluar los resultados, se decidió combinar B2B y Marketplace en una función comercial, que se dedica a la creación, desarrollo y soporte de servicios para socios externos, basados en los servicios internos existentes de Lamoda.
Ahora cooperamos con unas 20 grandes marcas; todas ellas son empresas globales con reputación mundial que tienen sus propios procesos comerciales complejos. Otros 1000 de nuestros clientes son empresas medianas y pequeñas, que a menudo no cuentan con una infraestructura de TI desarrollada. Para todos los socios, nosotros, de nuestro lado, mantenemos una capa de integración separada, que está diseñada para un desarrollo rápido y flexible de funciones que convierten los procesos externos en nuestros.
Soy Alexey Felde, arquitecto de soluciones, y soy el responsable del desarrollo técnico y de producto de la función comercial de Lamoda.
Me dedico al desarrollo y soporte de servicios en la capa de integración, y para ello necesito comprender a fondo los procesos de negocio de la empresa y nuestros socios para poder diseñar cualquier cambio en los sistemas Lamoda.
Como mencioné anteriormente, estamos desarrollando dos áreas principales de interacción con las marcas: Marketplace para marcas pequeñas, a las que brindamos soluciones SAAS en forma de una aplicación WEB separada, y B2B - grandes proyectos separados para grandes marcas globales, a las que adicionalmente brindamos completamente nuestras capacidades operativas, o ayudamos a integrarnos con los nuestros.
La dirección B2B es una de las más interesantes de la empresa, pero a la vez una de las más difíciles. Ocurre que los gigantes de la moda mundial nos llegan con requisitos o restricciones de integración completamente nuevos. En tales casos, mi equipo interactúa con otros equipos de Lamoda y diseñamos cambios en cualquier servicio de la empresa requerido. Para conectar a uno de los líderes de la industria mundial de la moda, necesitábamos sumergirnos en todos sus procesos comerciales, incluidos los contables y operativos. Como parte del proyecto, abordamos 15 de nuestros procesos internos: desde la descripción de los bienes en el sitio hasta la contabilidad y la entrega. Mi equipo tiene la experiencia más amplia en la operación de sistemas de TI y procesos comerciales de Lamoda. Esto requiere una cuidadosa sistematización y documentación de nuestro conocimiento.
Para los pequeños fabricantes de ropa, calzado y accesorios, que a menudo ni siquiera tienen su propio departamento de TI, ofrecemos una solución Marketplace en caja que le permite realizar un seguimiento de las ventas, el movimiento de mercancías y las devoluciones. Funciona íntegramente en las instalaciones de nuestros sistemas: las fotos de las mercancías las toma nuestro estudio y se almacenan con nosotros, las mercancías no se encuentran físicamente en el lugar del cliente, sino en nuestro almacén, y son entregadas por el servicio de entrega de Lamoda.
Otro producto en caja con código fuente es un estudio fotográfico. Fue comprado por un gran minorista de lujo hace unos años. Tenían fotos muy diferentes en su sitio web, y esto influyó mucho en la conversión de ventas. Nuestro estudio realizó un gran número de pruebas con fotografías: cuál de ellas se vende mejor (fotos de hombres sin cabeza o con cabeza, ángulos correctos de piernas, etc.). Al cliente le gustaron mucho los resultados de estas pruebas y quiso aplicar nuestra experiencia en su tienda online. Para hacer esto, necesitaba construir un estudio similar al nuestro, donde la gente trabajaría, organizaría el proceso de fotografía e instalaría nuestro sistema de TI.
Lamoda en miniatura
A diferencia de los equipos de servicio, tenemos una tarea diferente: el desarrollo de una capa de integración detrás de la cual se esconde una empresa de una gran empresa. El producto principal es una plataforma B2B, que a nivel de código se divide internamente en módulos: un módulo para trabajar con un almacén, un módulo para trabajar con la entrega, etc. Es un gran sistema que a nivel de estos pequeños módulos puede administrar ciertos servicios. Resulta que nuestra plataforma es una Lamoda en miniatura. Al mismo tiempo, los socios solo ven una API, universal y muy simple, detrás de la cual se esconde toda la complejidad de Lamoda. Al mismo tiempo, debemos ser lo más simples posible para la integración: nuestro primer principio en el desarrollo, luego viene la estabilidad y la confiabilidad. Admitimos varios SLA, por ejemplo, uno de ellos es un tiempo máximo de inactividad del sistema de 4 horas por año. Como colegas,Prestamos mucha atención a las tareas de tolerancia a fallas, procesos de liberación, calidad del código, cobertura por pruebas funcionales. Nuestra plataforma B2B es casi el primer sistema en la lista en términos de número de pruebas, tenemos más de 2,000 pruebas funcionales y 3,000 pruebas unitarias.
B2B :
·
·
·
·
:
· PHP,
· Java,
· JavaScript,
· GO,
· Symfony,
· Camel,
· PostgreSQL,
· AngularJS,
· Apache Kafka,
· RabbitMQ.
Antes de conectar la marca, acordamos con el socio todos los detalles de la relación: el rango y la cantidad esperada de productos, la geografía de la entrega, el conjunto de servicios conectados. A continuación, entra en juego el componente de TI: los detalles de integración se discuten con la marca y ayudamos a conectarnos a nuestra API. Si algo difiere del esquema de integración estándar, también aumentamos los servicios que son middleware entre los sistemas de socios y nuestra plataforma B2B.
El 90% de las veces actualizamos nuestra plataforma e implementamos nuevos procesos comerciales. El último de los procesos comerciales implementados es trabajar con códigos Datamatrix, que ya se discutió en otro artículo , y los colegas mencionados anteriormente.
En nuestro trabajo, lo principal es mantener un equilibrio de tecnologías y elegir herramientas para las tareas que se están resolviendo. Honestamente, no perseguimos la moda en la industria. Nuestra pila es PHP, Java, Javascript y algo de Go.
Como se menciona en el artículo, históricamente la empresa ha escrito muchos sistemas en PHP. Es conveniente y rápido programar procesos comerciales en él. La base de nuestra plataforma B2B está escrita en ella: autorización, gestión de roles, todos los procesos comerciales principales. Se basa en una arquitectura hexagonal, uso activo de DDD y primer diseño de API. Admitimos la aplicación de una sola página escrita en Angular 1.5. Se comunica con nuestra plataforma B2B a través de API y es el principal responsable de representar la interfaz de usuario para nuestros empleados y empleados de socios.
También usamos Java, en particular el marco de integración de Camel. Las marcas no siempre están listas para usar nuestra API, y para jugadores muy grandes escribimos middleware que convierte el dominio de la marca en el dominio Lamoda. Camel ahorra tiempo desarrollando soluciones de integración de sistemas, cambia la mentalidad de las personas hacia buenas prácticas de ingeniería utilizando patrones de integración empresarial (EIP). Planeamos desarrollar Camel en lugares donde sea más conveniente usar patrones de integración que escribir un servicio separado.
Usamos activamente Kafka para intercambiar datos entre sistemas internos. Esto reduce significativamente la conectividad entre sistemas, porque en los aspectos específicos de nuestro trabajo, necesitamos almacenar instantáneas de datos de todos los sistemas mejorados para los socios. Para todo lo que necesita hacerse rápidamente y para las tareas de oficina, escribimos en Go. Uno de nuestros servicios calcula métricas cada minuto en función de los datos almacenados. Anteriormente, esta solución estaba integrada en una plataforma B2B y estaba escrita en PHP, pero la reescribimos para que sea ágil Go, ya que tiene un mayor rendimiento, un soporte más fácil, se escala mejor y se puede implementar fuera del ciclo de lanzamiento de la plataforma B2B.
Estoy sinceramente feliz cuando veo el resultado del trabajo de nuestra plataforma en más de 30 sitios web de terceros de grandes y famosas marcas de moda. Veo cómo un pedido, que se coloca en nuestros sistemas desde el sitio de otra persona, es procesado por nuestro operador del centro de contacto y luego es transportado por nuestra entrega. Nadie sabe que todos estos procesos se crean y automatizan en Lamoda, pero lo hacemos tan bien que nuestros procesos son comprados por marcas globales.