Bonjour, Habr! Je m'appelle Valentine, je suis CTO à Lamoda, où je travaille presque depuis la fondation de l'entreprise. Toutes ces années, toute l'équipe que nous avons dirigée a tellement avancé qu'il n'a pas été possible de s'arrêter un peu et de parler de nous. Je pense que le moment est venu.

Il peut sembler que Lamoda est l'un des pionniers de l'Internet russe, mais nous n'avons que sept ans. Depuis sa fondation en 2011 jusqu'à nos jours, notre entreprise est passée de 11 employés à plus de cinq mille. Chaque mois,> 10 millions de personnes visitent notre site. En fait, nous étions une nouvelle start-up dans l'informatique russe établie, et en conséquence, en si peu de temps, nous avons pu rattraper et dépasser de nombreux gars honorés.
J'espère que nous vous parlerons un peu de nos réalisations, échecs, expériences et des tâches les plus utiles et intéressantes de notre équipe au quotidien. Nous considérerons ce post comme notre connaissance.
En 2011, nous avons développé de manière indépendante uniquement la préparation du contenu et l'achat de stock à vendre, tout le reste a été externalisé. Maintenant, nous faisons tout nous-mêmes. Nous supervisons le fonctionnement de notre propre entrepôt à cinq niveaux de la taille d'un terrain de football, de trois centres de contact et de la livraison aux clients. Malgré le fait que la Russie possède une culture informatique très élevée, les grandes entreprises commencent tout juste à se plonger dans la façon de construire une telle infrastructure, et à Lamoda, elles suivent avec succès cette voie depuis de nombreuses années.
De quoi est fait le backstage technique Lamoda? En fait, ce sont cinq grandes unités:
- département de développement (département d'automatisation des processus métier et département de développement de boutique en ligne)
- Service support informatique (infrastructure et sécurité)
- Service de mise en œuvre et de support du système ERP
- service de support technique
- service de données et d'analyse

Tout dans GO
Cette histoire parle des gars qui développent une plate-forme de commerce électronique, et pendant leur temps libre, ils conduisent des motos et font des visites guidées des bars à bières artisanales.
C'est au sein du département de développement e-commerce que les plateformes créent tout ce que les clients Lamoda utilisent au quotidien: les versions desktop et mobile du site et les applications pour iOS et Android. La complexité du travail ne réside pas dans la mise en œuvre de fonctionnalités pour l'utilisateur, l'équipe doit déployer de nouvelles fonctionnalités le plus rapidement possible, mais sans perte de qualité et de stabilité, et soutenir des projets dans quatre pays: Russie, Kazakhstan, Ukraine et Biélorussie. À ce jour, les employés de ce département sont en mesure de gérer le service chaque semaine, si nécessaire, et de travailler sous la devise: "Tout en GO".
Les équipes sont principalement réparties par plateforme (desktop, site mobile, applications mobiles), il y a également quatre équipes pour les services backend. Chaque équipe comprend des développeurs avant et arrière, des analystes, des testeurs et un chef de produit.
Afin d'apporter des changements aussi souvent que possible, nous pratiquons cette approche des itérations de développement: au début du sprint, nous émettons une hypothèse, et en libérant de nouvelles fonctionnalités en production, nous la testons, réalisant ainsi si l'innovation est bénéfique pour le produit et si la vie des utilisateurs de Lamoda s'améliore. Par exemple, il n'y a pas si longtemps, nous avons appris à montrer combien une personne vue par une personne avait récemment achetée. Pour ce faire, nous avons pris la tâche du produit, y avons trouvé le MVP et déterminé la stratégie de mise en œuvre la plus rapide. Avant de tout déployer en production, nous avons déterminé que l'augmentation de la conversion serait le critère de réussite. Selon les résultats du test A / B, la conversion est plus élevée dans le groupe où la fonctionnalité a été introduite.
Il y a quelque temps, Lamoda a entamé une transition massive et rapide vers les microservices. Qu'est-ce que cela nous donne? Le premier est un seuil d'entrée bas pour un nouveau développeur ou spécialiste d'une autre équipe. Le second est la prise en charge et le changement faciles des systèmes de microservices afin que le flux de travail soit rempli de douleur intéressante et pas seulement. Mais un petit nombre de monolithes (par exemple, le système qui est responsable de la distribution des commandes) vit toujours avec nous, et pour le moment il est difficile et peu pratique de s'en débarrasser.
Nous collectons Lamoda à partir de zéro sans SMS ni inscription
Tout le monde sait qu'il n'y a pas de travail sans échec. A chaque fois, en résolvant le problème et en lançant le code, nous espérons que le voici, le bonheur, puis pas - encore l'expérience. Parlant de l'expérience, il convient de noter que les employés du département de développement de la plateforme de commerce électronique, comme les vrais combattants, sont capables d'assembler littéralement Lamoda à partir de zéro. Il est arrivé qu'en raison de paramètres réseau incorrects, notre cluster ait décidé qu'il ne s'agissait plus d'un cluster et a refusé d'exister. Il a eu de la chance que ce soit la nuit, et en quatre heures, nous avons réussi à donner vie à Lamoda. Nous avons d'autres histoires.
Timur Nurutdinov, responsable du développement de la plateforme de commerce électronique:Avant de commencer à travailler sur la nouvelle fonctionnalité, comme d'habitude, nous nous sommes assis pour évaluer les ressources dont nous avions besoin. Quatre équipes ont été impliquées dans le projet. Nous avons pris en compte les priorités des autres tâches, le calendrier des vacances des collègues et les coûts de main-d'œuvre. En conséquence, nous avons eu 32 semaines.Huit mois pour implémenter une fonctionnalité. Cela semble sauvage. Grâce à de simples changements, nous avons pu réduire le délai de commercialisation à 4 semaines, et c'est ce que nous avons fait.L'astuce des équipes de plate-forme est qu'elles sont capables de faire à la fois avant et arrière. Voilà comment ils travaillent dans notre département. Mais à l'arrière, il est nécessaire d'apporter des modifications à de nombreux systèmes intégrés, et les compétences de l'équipe de la plate-forme ne le permettent pas. Nous avons commencé le projet Tailles lié à la fourniture au client des grilles dimensionnelles les plus détaillées, et nous ne voulions pas attendre. J'ai d'abord dû déterminer les systèmes à changer, puis nous avons constitué une petite équipe avec les compétences appropriées. Nous avons donc supprimé le bloc pour attendre les ressources des autres équipes de la plate-forme et obtenu une équipe de produits. En ce qui concerne les tâches, nous avons agi à notre manière éprouvée - nous avons divisé les grandes tâches en plus petites, les avons faites, déployées dans la prod et testé nos hypothèses sur les utilisateurs afin de comprendre si nous allions dans la bonne direction. Après une expérience aussi réussie avec la création d'une équipe produit, nous prévoyons d'organiser des équipes dans des domaines où les employés forment une seule unité et de développer une direction spécifique, par exemple, la livraison.Automatisation des entrepôts et intervalles de livraison de 15 minutes
Les gars de l'automatisation n'ont pas le temps de s'ennuyer, et les tâches ici ne sont pas triviales. Par exemple, comment télécharger des millions de marchandises avec le même niveau élevé de qualité de contenu (automatisation d'un studio photo) sur le site, comment traiter et prendre en compte toutes les commandes du site, en tenant compte de centaines de partenaires du marché et de quatre pays de la CEI, comment collecter une commande dans un entrepôt de cinq étages en trois heures, comment réaliser la livraison au client le lendemain à son intervalle de 15 minutes choisi dans 600 villes uniquement en Russie. Et pour le dessert, ils vendent toute cette ferme à des partenaires B2B et à la direction Marketplace.
Le travail est principalement effectué en PHP, pour l'automatisation des entrepôts, nous utilisons Java plus Docker / Kubernetes, la pile Atlassian, PostgreSQL, RabbitMQ.



Nous avons un système de bucket pour planifier les sprints dans notre département: 60% est un bucket de projet, 20% est une dette technique, 10% du sprint est donné aux bugs prioritaires, et 10% est que quelque chose va voler de l'extérieur. Entre autres, le backlog grooming, la planification en ligne de poker, le stand-up, le rétro, le code review 360, la collecte et l'analyse des métriques de base, le monitoring (Prométhée, Grafana, Icinga, Kibana), en général, tout est comme dans les meilleures
maisons des équipes de développement
parisiennes .
Voici quelques histoires drôles de Pavel Savelyev, chef du département d'automatisation des processus métier.Il est impossible de tester et de tout prendre en compte, car les gens participent d'une manière ou d'une autre à chaque processus métier. Et les gens, comme vous le savez, sont des créatures rationnelles et essaient toujours de trouver des touches rusées qui leur facilitent la vie. Mais lorsque ces mêmes notions vont à l'encontre du processus métier décrit, des histoires amusantes se produisent.Une fois, nous avons remarqué que le système responsable de la distribution des marchandises dans un entrepôt reçoit cent fois plus d'analyses en une minute que d'habitude. Il s'est avéré que le personnel de l'entrepôt a trouvé un système de piratage et a décidé de faciliter leur travail. En partant pour le déjeuner, ils ont serré un bouton sur le scanner afin qu'ils ne soient pas jetés hors de la session utilisateur. Et ce hack de travail continuerait de fonctionner, mais dans l'un des bacs (une boîte spéciale pour les marchandises dans l'entrepôt), il y avait beaucoup de petits articles. Le scanner, comme la mitrailleuse de Maxim, a traité les marchandises du tireur malheureux, ce qui a entraîné une forte augmentation de la charge, des problèmes de système et la détection d'un bug évident de la part des développeurs. Bien sûr, nous avons corrigé un bug, mais je pense que le personnel de l'entrepôt ne nous laissera pas nous ennuyer et trouvera quelque chose de nouveau.Le deuxième cas s'est également produit à l'entrepôt. Cette histoire s'appelle «43 T-shirts amusants». Il n'est pas toujours immédiatement possible de reconnaître la complexité de l'algorithme, en particulier lorsque vous résolvez le problème de sac à dos et que vous devez placer de manière optimale N objets dans un certain volume (problème d'emballage en trois dimensions). Il s'est avéré que si 43 T-shirts absolument identiques arrivent dans notre entrepôt, le système responsable de l'emballage des marchandises génère tellement de combinaisons de distribution pour ce cas qu'il est assez ringard pour la mémoire. Nous avons revu l'algorithme et nous n'avons plus peur des t-shirts identiques - mais que se passe-t-il si des centaines de paires de chaussettes se retrouvent sur l'emballage, quels fabricants décident d'en vendre un à la fois? Cela vaut la peine de considérer ...Dans toute situation incompréhensible, concentrez-vous sur les données
Les changements concernant l'analytique à Lamoda sont attendus depuis longtemps, et cette année, nous avons commencé à combiner des départements analytiques disparates avec notre infrastructure et nos habitudes analytiques en un seul grand département. Pourquoi? La raison principale est que les employés qui font partie d'équipes analytiques disparates font souvent le même travail, mais de différentes manières, et que les données sur lesquelles se concentrer ne sont pas claires. Différentes données - cela est généralement normal, car les équipes proviennent de différentes tâches et conditions préalables, mais vous devez consacrer beaucoup de temps à les comprendre.
Les employés du département sont de véritables évangélistes: toutes les décisions de l'entreprise doivent être prises sur la base de données.Par conséquent, chaque jour, ils étudient avec enthousiasme les phénomènes commerciaux dans les données, analysent et extraient de la valeur des données, évaluant comment elles peuvent être appliquées. L'outil principal est SQL, ainsi que Spark, Hadoop, Python pour l'analyse des données, Excel, SAP BusinessObjects pour le reporting et Tableau pour la visualisation.
L'une des tâches importantes de l'équipe est la personnalisation de l'expérience client: nous créons une solution où chaque utilisateur verra la liste des produits et des offres la plus pertinente, et tous nos services seront adaptés individuellement à chaque client individuel, et non au groupe, comme cela se fait maintenant.
Sergey Gilev, chef du département Données et analyses:Le département analytique est actuellement confronté à deux grandes tâches: la première est la consolidation de l'économie diversifiée que nous avions avant la fusion. Pour un travail plus efficace, nous avons besoin de paramètres, d'une infrastructure analytique et de processus communs. Le deuxième objectif est un projet de création de tableaux de bord analytiques décrivant la «santé» d'un processus particulier ou de l'ensemble de l'entreprise. Ainsi, nous nous efforçons d'améliorer considérablement la disponibilité des données pour les décideurs, et inculquer à chacun notre approche du travail: se concentrer sur les données dans toute situation incompréhensible.L'histoire du grand déménagement: comment nous avons lancé notre propre entrepôt inaperçu par les clients
L'abandon progressif de l'externalisation nous a amenés au fait qu'il était temps de mettre en service notre propre entrepôt. En plus de toutes les préparations pour l'automatisation des processus opérationnels dans le nouvel entrepôt, nous nous sommes fixé pour objectif de ne pas réduire la gamme et en aucun cas d'arrêter la vente. Nos experts ont développé une solution basée sur la création d'entrepôts «virtuels» supplémentaires. Ainsi, pendant toute la relocalisation, nous avions trois types d'entrepôts: anciens, nouveaux et en cours de route. Les marchandises étant transportées progressivement par des groupes de camions, le stock qui s'est retrouvé dans le lot suivant a été transféré dans un entrepôt «virtuel». Nous avions un calendrier de chargement et de déchargement, nous savions donc exactement combien de temps le stock serait en transit et orienter les clients vers la date de livraison correcte pour la commande.
Nous avons également conçu et mis en œuvre un algorithme délicat qui nous a permis d'équilibrer la vitesse de déplacement et d'organiser la réception de toutes les marchandises commandées en une seule livraison: lorsqu'une personne a commandé plusieurs marchandises pouvant physiquement se trouver dans différents entrepôts, nous avons essayé d'organiser l'assemblage complet de la commande dans un seul entrepôt, Et l'avantage a été donné à l'entrepôt du partenaire, car le processus d'assemblage y était déjà débogué.
Les travaux de lancement de notre propre entrepôt ont battu leur plein pendant trois mois, au cours desquels aucun client n'a été blessé.
Se préparer pour le Black Friday ou comment nous survivons en période de dépendance au shopping
Il y a quelques années, nous avions peur du Black Friday en tant que monstre effrayant. Nous ne savions pas comment nos systèmes réagiraient à un tel flux de commandes. Mais un travail constant de refactorisation et de développement des infrastructures a stabilisé nos systèmes et les a rendus aussi prévisibles que possible. Le dernier Black Friday a été le jour le plus ennuyeux de l'année. Les spécialistes des systèmes clés et des DevOps se sont simplement assis à la table, ont joué à des jeux vidéo ou regardé des films et ont regardé l'état de notre infrastructure d'un seul œil. Mais les préparatifs de cette journée sont un peu différents.
Nous planifions des tests de résistance en fonction des prévisions commerciales, puis les développeurs et les administrateurs configurent les systèmes pour réussir les tests. Plusieurs mois de tests, de plantages, de corrections, et seulement après cela, nous pensons que nous sommes prêts pour une vague d'utilisateurs et de commandes.

War room - notre centre d'opérations le Black FridayLes décisions que nous prenons pour survivre au Black Friday dépendent des goulots d'étranglement que nous rencontrons lors des tests. Il y a quelques années, nous avons physiquement remplacé les commutateurs réseau pour éliminer les problèmes de bande passante. Une autre action que nous effectuons habituellement pour réduire la charge consiste à désactiver les sous-systèmes qui ne sont pas critiques.
Résumé
Pendant toutes ces années, nous avons essayé d'améliorer et de simplifier constamment notre flux de travail, en recueillant les commentaires des employés de l'entreprise, en créant des canaux ascendants et en soutenant pleinement les idées et les concepts nouveaux.
Quelqu'un dira que Lamoda est un véritable zoo de technologies et de systèmes. Nous plaisantons souvent sur ce sujet nous-mêmes et disons: "Mieux vaut demander ce que nous n'utilisons pas." Mais dans ce domaine, un fait essentiel est que nous faisons constamment évoluer la pile et les technologies, et en même temps il n'y a pas de choix irréfléchi. Cela nous aide à revoir l'architecture de chaque nouveau service et projet, un guide de l'expertise existante des employés, ainsi que la maintenance de
Technology Radar , dont nous serons heureux de dire les détails et les arguments dans le prochain article. Et nous sommes également heureux de célébrer à ce sujet.