BPA ist ganz einfach ein zentrales Netzwerk, das einen Lieferservice, ein riesiges Lager und ein Auftragsverwaltungssystem mit der Entwicklung und Integration mit Partnern kombiniert. All dies ist mit Berichten und Analysen verbunden. Wir entwerfen und schreiben alle Dienste für das Zusammenspiel dieser Systeme und die Bereitstellung ähnlicher Dienste für Partner.
Unsere IT-Abteilung trifft die reale Welt : Es ist einfach, ein Lieferintervall von 15 Minuten in einem IT-System festzulegen, aber es ist ziemlich schwierig sicherzustellen, dass Tausende von Vertriebsmitarbeitern in Moskau genau in diesem Intervall an die Adresse kommen. Die Hauptaufgabe unserer Abteilung ist die Verknüpfung von Business und Technologie. Die BPA-Abteilung selbst ist jetzt in drei Bereiche unterteilt: Lieferung, Lager und kommerzielle Funktion, einschließlich der Interaktion mit B2B und Marktplatz. Und alles, was wir selbst verwenden und im Freien verkaufen, ist wirklich cool: Unsere Funktionen bringen Geld, sparen Zeit und bieten unseren Kunden einen qualitativ hochwertigen Service.
5 Sprachen und 2 Millionen Codezeilen
BPA ist eine Reihe von Systemen, die miteinander und mit anderen Lamoda-Systemen integriert sind. Für ihre Entwicklung verwenden wir PHP, Java, Kotlin, es gibt ein wenig Go und Typescript - es gibt 5 Sprachen auf unserem technischen Radar. Wir schreiben alle Systeme für die Aufgaben unseres Geschäfts. Jetzt sind es 2 Millionen Codezeilen, 25 Dienste und mehr als hundert wiederverwendbare Bibliotheken.
Die Hauptsprache ist PHP, und mehrere andere große Dienste sind in Java und Kotlin geschrieben. Warum PHP? Erstens implementiert es ein Auftragsabwicklungssystem - einen Monolithen, den wir seit vielen Jahren in Microservices sägen, und zweitens können wir hervorragend mit PHP arbeiten: Wir schreiben schnell darin, wir bedienen es gut, wir haben es mit einer Reihe von Bibliotheken erledigt... Dieser Ansatz ermöglicht es uns, neue Dienste mit allen Infrastrukturverbindungen zu starten: mit allen Protokollen und der Überwachung in nur wenigen Tagen. Wir können sowohl Go als auch Kotlin wie in einem Lager verwenden. Wir verwenden keine doppelten Technologien und alles andere ist nicht verboten, solange es funktioniert.
In Geschäftsprozessen ist die Logik und Nachdenklichkeit jedes Schritts wichtig. Damit es nicht passiert, dass Ihre Bestellung vom Lager nach Wladiwostok ging und dort plötzlich ein unerwarteter Teller im System auftauchte, der Ihnen nicht übergeben wurde.
Wir müssen jeden Schritt mit Tests abdecken, da die Stabilität und Richtigkeit der Ausführung der Systemlogik entscheidend ist. Darüber hinaus nutzen unsere Partner auch unsere Geschäftsprozesse. Daher ist die Priorität des Unternehmens die Stabilität, obwohl die Geschwindigkeit der Einführung neuer Dienste auch für das Geschäft wichtig ist. Um Stabilität zu gewährleisten, investieren wir Zeit in die Entwicklung von Services und Tests. Dies gibt uns die Möglichkeit, das System zu entwickeln, ohne das Risiko einzugehen, alles zu beschädigen.
Es gibt sogar Buchweizen!
Ich bin Anton Dmitrienko, technischer Leiter von WMS - Lamoda Distributionszentrum-Managementsystemen oder einfacher Lager.
Meine Hauptaufgabe besteht darin, mit Unternehmen dieselbe Sprache zu sprechen, ein Domänenmodell zu entwickeln und das System auf Änderungen vorzubereiten. Dazu müssen Sie verstehen, wo sich unsere "Hot Spots" befinden. Es gibt Prozesse, die alle drei Jahre in einer Reihe stehen, und es gibt Prozesse, die sich alle drei Monate ändern - dies sind „Hot Spots“. Sie sind wichtig, wenn Sie ein System entwerfen.
Jetzt habe ich vier Teams - 18 Personen, die mit der Erstellung, Prüfung und Unterstützung des Systems befasst sind. Wir beschleunigen alle Betriebs- und Geschäftsprozesse des Lagers: Ohne uns mit dem aktuellen Geschäftsvolumen von Lamoda würde der Versand einer Kundenbestellung viel Zeit in Anspruch nehmen, unsere Teilnahme reduziert die Bearbeitungszeit einer Bestellung auf 4 Stunden.
Der Maßstab ist natürlich sehr groß: Das Lamoda-Lager ist etwa 40.000 Quadratmeter groß oder es gibt mehrere Fußballfelder auf 5 Etagen, auf denen 10 Millionen Waren gelagert werden. Es funktioniert rund um die Uhr an 364 Tagen im Jahr, mit einem freien Tag einmal im Jahr - dem 1. Januar. Und jeden Tag verlassen mehr als 500 Mitarbeiter eine Schicht, und 200.000 Waren werden über unser System versendet und empfangen. Darüber hinaus ist im Lager ein Netzwerk von mechanisierten Förderbändern und Geräten installiert, mit denen Waren transportiert, Pakete verpackt, Kundenaufträge physisch konsolidiert, Pakete nach Versandrichtungen sortiert und von uns verwaltet werden können.
Lamoda verkauft an Kunden alle Arten von Waren, von übergroßen Regenschirmen und Koffern bis hin zu kleinen Uhren und Schmuck. All dies wird in unserem Lager gelagert und verarbeitet. Jede Kategorie hat ihre eigenen Merkmale. Beispielsweise können übergroße Waren nicht auf automatisierten Geräten verarbeitet werden, Schmuck wird mit zusätzlichen Sicherheitsmaßnahmen gelagert und verarbeitet, und Kosmetika und Parfums erfordern beispielsweise bestimmte Temperaturlagerbedingungen und die Kontrolle über die Haltbarkeit von Waren.
Wir hatten kürzlich ein Projekt namens "Buchweizen". Seit der Einführung des Selbstisolationsregimes hat Lamoda sein Sortiment um beliebte langlebige Lebensmittel erweitert. Übrigens haben wir diese Funktion in wenigen Tagen implementiert. Das Hauptsortiment sind natürlich Kleidung und Schuhe, deren Arbeit auch einige Nuancen aufweist: Für den Verkauf von Waren ist es notwendig, deren Qualität vorzubereiten und zu überprüfen: Es ist schlecht, wenn wir dem Kunden beispielsweise ein Hemd ohne Knöpfe bringen.
Lamoda ist nicht nur ein Online-Shop, sondern eine vollwertige E-Commerce-Plattform, die ihre Infrastruktur und Dienstleistungen (einschließlich eines Lagers) externen Partnern zur Verfügung stellt. Zum Beispiel lagern große internationale Modemarken ihre Waren bei uns. Welchen Unterschied macht es? Kleider, Mäntel und Schuhe von Partnern sind die gleichen wie die, die sich bereits in unserem Lager befinden. Wir alle haben jedoch individuelle Anforderungen an die Prozesse, die wir im Rahmen von Verträgen einhalten müssen. Beispielsweise werden einige Waren von Großkunden in separaten Zonen gelagert, und Dinge vom Markt befinden sich im gesamten Bestand. Diese Merkmale müssen ebenfalls berücksichtigt werden.
Wir prüfen und verarbeiten jedes Produkt in jeder Phase des Prozesses unter Berücksichtigung der Besonderheiten nicht nur in der physischen Welt, sondern auch im IT-System. Darüber hinaus fordert das IT-System den Lagermitarbeiter selbst auf, mit einem bestimmten Produkt umzugehen, da der Betreiber nicht alle Merkmale oder Vereinbarungen kennen kann: Das Produkt sagt nicht, wem es gehört: einem großen internationalen Unternehmen oder einem kleinen Marktpartner.
Das Hauptmerkmal des Systems ist die Interaktion über Scanner und Barcodes: Jedes Produkt verfügt über einen eindeutigen Barcode, der gelesen werden kann, um alle erforderlichen Informationen über das Produkt zu erhalten. Dieser Ansatz minimiert Fehler und ermöglicht es Ihnen, alle Aktionen mit dem Produkt schneller auszuführen, wodurch die Anzahl der Mitarbeiter reduziert wird. Wenn wir 200.000 Waren pro Tag versenden, bedeutet 1 Sekunde Einsparung bei einem Produkt 55 Stunden Arbeitszeit. Für Unternehmen ist es greifbar.
Unter der Haube des Lagers
Unsere Technologien:
Java 8,
PostgreSQL,
Wildfly,
Spring,
Redis,
ActiveMQ,
Hibernate.
Wir haben mit einer vorgefertigten Lösung in Java begonnen, aber seitdem hat sich die Funktionalität des Systems erheblich erweitert und der Code wurde bereits mehrmals komplett überarbeitet und neu geschrieben.
Jetzt haben wir 350.000 Codezeilen - und dies ist nur das Backend der Hauptanwendung. Außerdem gibt es 5 sekundäre Dienste und 2 Benutzeroberflächen: einen Thin Web Client und eine mobile native Anwendung. Wir machen Full-Stack-Entwicklung.
Die Lagermitarbeiter nutzen den mobilen Client. Sie bewegen sich mit unserer eigenen Android-Anwendung im Lager. Dies ist eine modernere und bequemere Technologie, mit der Sie die Funktionen des Geräts selbst nutzen können: Vibrationen, Fehlergeräusche und weniger Akku, wenn die Anwendung nativ und nicht browserbasiert ist. Die Anwendung selbst ist in Kotlin geschrieben, wir haben gute Erfahrungen damit. Wir haben sogar angefangen, ein Backend darauf zu schreiben: Bisher ist dies nur ein Dienst, aber wir finden es gut, dass der Code einfacher und aussagekräftiger als in Java ist und die Leistung gleich ist. Wir haben nicht das Ziel, alles in Kotlin neu zu schreiben, aber wir werden es weiterhin für geeignete Aufgaben verwenden.
Die Interaktion mit anderen Lamoda-Systemen erfolgt über einen in Apache Camel geschriebenen Datenbus mithilfe des ActiveMQ-Nachrichtenbrokers. Dieser Ansatz bietet eine garantierte Zustellung und eine relativ einfache Transformation von Nachrichten für verschiedene Formate sowie die Möglichkeit, Nachrichten an mehrere Verbraucher zu verteilen. Wir waren 2014 die ersten, die Apache Camel verwendeten. Dann wurde diese Integrationsmethode von anderen Teams in unserer Abteilung übernommen.
Die Prinzipien des Aufbaus von Lagersystemen:
· Zuverlässigkeit und Qualität
· Erweiterbarkeit und Flexibilität
· Einfachheit
Das Lager ist das Herzstück der Logistikprozesse von Lamoda, und Fehler und Systemausfälle haben erhebliche Auswirkungen auf das Geschäft. Daher achten wir genau auf die Stabilität und Fehlertoleranz des Systems. Zuverlässigkeit wird durch Duplizieren kritischer System- und Infrastrukturelemente erreicht. Wir haben zwei unabhängige Server, die in virtuelle Maschinen unterteilt sind. Jede Anwendung wird auf zwei Instanzen bereitgestellt, jede Instanz auf einer eigenen virtuellen Maschine. Der Client interagiert mit dem Server über einen Balancer in Form von Haproxy, der Anforderungen an eine der Instanzen weiterleitet. Die Datenbank wird auch mithilfe des Master-Slave-Replikationsschemas gesichert.
Alle unsere Server befinden sich physisch direkt im Lager, was auch die Zuverlässigkeit und Arbeitsgeschwindigkeit erhöht, da alle Elemente des Systems über das lokale Netzwerk interagieren. Selbst wenn das externe Internet ausfällt, werden wir weiterarbeiten und im Falle eines Stromausfalls haben wir unterbrechungsfreie Stromversorgungen und Benzingeneratoren direkt im Lager.
Um die Anzahl der Fehler im Code zu minimieren, schreiben wir automatisierte Tests: Einheit, Integration, Akzeptanz, Laden, und das Testteam überprüft alles von Hand. All dies ist eine obligatorische Praxis und in den Lebenszyklus der Aufgabe integriert. Manchmal treten natürlich Fehler auf, aber wir haben seit mehreren Jahren keine vollständigen Rollbacks von Releases mehr.
Erweiterbarkeit und Flexibilität - für uns ist es in erster Linie eine Frage, wie viel Aufwand und Zeit wir aufwenden müssen, um das System an die neuen Anforderungen von Geschäftsprozessen anzupassen. Daher bietet die Entwicklung die Möglichkeit, den Code in Zukunft schnell und einfach zu ändern. Beispielsweise kann jede Warengruppe für einen bestimmten physischen Lagerort konfiguriert werden. Auf diese Weise können Sie schnell neue Kategorien von Waren zum Verkauf verbinden. Für jede Bestellung wird konfiguriert, in welchem Material sie verpackt und welche Begleitdokumente dafür gedruckt werden. Und das ist nur ein kleiner Teil der Funktionen.
Wir haben einen komplexen Themenbereich mit einer Vielzahl von Geschäftsprozessen und einem verzweigten Domänenmodell. Je einfacher der Code ist, desto besser, da er die Lesbarkeit und Verständlichkeit erhöht und die Fehlerwahrscheinlichkeit verringert. Außerdem können Sie sich mehr darauf konzentrieren, welche Funktion der Code für das Unternehmen erfüllt.
Fehlerversicherung
Mein Name ist Denis Plisko und ich bin der Entwicklungsleiter für Lieferservices bei BPA.
Wir haben das LM Express IT-System erstellt, entwickelt und gewartet. Es dient zur Automatisierung der Arbeit von Transitlagern, Handelsvertretern und Auftragsstellen. Unser System weiß alles über die Ankunft und Abfahrt von Lieferungen, kümmert sich um deren Verarbeitung, verkauft und gibt bereits bezahlte Bestellungen aus, akzeptiert Retouren und viele andere damit verbundene Geschäftsprozesse. Außerdem erfassen und analysieren wir darin die physischen Handlungen unserer Vertriebsmitarbeiter und Lagerarbeiter - wir verfolgen alles, was auf der „letzten Meile“ passiert, bevor die Waren an den Käufer übergeben werden. Die meisten technischen Prozesse, die im Informationsformular des Express-Systems enthalten sind, spiegeln die physischen Aktionen eines Lieferservice-Mitarbeiters wider.
Wie sieht es aus? Zum Beispiel nimmt ein Mitarbeiter eine Lieferung an, nimmt eine Palette heraus - eine Schachtel mit Paketen mit Waren, nimmt Pakete heraus und sortiert sie in Regale: Jede Aktion, die er ausführt, wird von einem Vorgang in unserem System begleitet. Und hier können Fehler auftreten: Sie können nie sicher sein, dass dies auch dann der Fall ist, wenn der Zusteller alles richtig „angeklickt“ hat. Infolgedessen ist das Warnen und Korrigieren von Fehlern einer der größten Teile unserer Prozesslogik: Manchmal kann dies automatisch erfolgen, manchmal durch die Person selbst, manchmal durch den Helpdesk oder Benutzer mit erweiterten Rechten. Ohne diese Funktionen wären unsere Systeme fünfmal kleiner.
Die Prinzipien des Aufbaus von Liefersystemen:
· Stabilität und Verfügbarkeit von Systemen
· Datenkonsistenz
· Unabhängigkeit von externen Systemen und Diensten
Die Aufgabe besteht darin, einen möglichst stabilen Betrieb der Systeme zu gewährleisten, da es direkt davon abhängt, ob die Leute ihre Einkäufe pünktlich erhalten oder nicht. Bei der Implementierung von Funktionen versuchen wir, unabhängig von externen Diensten und Systemen zu sein. Dabei werden viele Interaktionen dupliziert. Angenommen, eine Lieferung ist eingetroffen und es gibt keine Bestelldaten dafür, dann werden wir diese Informationen selbst anfordern, um die Arbeit nicht zu beenden. Es ist auch wichtig, viele Vorgänge idempotent zu machen, um die erforderliche Datenkonsistenz aufrechtzuerhalten, insbesondere beim Austausch mit anderen Diensten.
Darüber hinaus bemühen wir uns, alle erforderlichen Daten so früh wie möglich zu erhalten, damit sich nicht herausstellt, dass eine Person für ein Produkt gekommen ist und diese aufgrund eines Systemausfalls nicht erhalten kann. Wir bemühen uns, die internen Teile des Systems äußerst zuverlässig zu machen, damit die Interaktion des Benutzers mit ihnen nur von unseren eigenen Diensten abhängt. Selbst wenn alle Lamoda-Systeme vorübergehend nicht mehr verfügbar sind, wird die Arbeit der Lager und Abholpunkte nicht unterbrochen und der Hauptbetrieb wird fortgesetzt.
Auf den Straßen Kuriere, Kuriere
Zusätzlich zu seiner eigenen Zustellung kooperiert Lamoda mit Kurierdiensten von Drittanbietern, z. B. Russian Post, Pony Express, DPD und anderen. Dies geschieht, wenn in einer Stadt, Region oder einem Land (z. B. in der Ukraine) unsere Lieferung nur über Partner möglich ist. Wir bieten Informationsaustausch durch Interaktion mit ihren IT-Systemen.
Das Anschließen jedes neuen Kuriers ist ein aufregendes Abenteuer, da die APIs für alle sehr unterschiedlich sind und nicht immer für die Integration angepasst sind. Dies liegt daran, dass einige der Kurierdienste historisch gesehen Offline-Unternehmen sind. Sie versenden seit den Tagen des Papierkram, und das Schreiben einer guten API ist keine leichte Aufgabe.
Wir verwenden ein spezielles System, das auf dem ESB-Framework Apache Camel basiert, um die Integration mit dem neuen Partner zu implementieren. Die Verwendung von Camel erleichtert die Durchführung einer Vielzahl von Datentransformationen und Interaktionen über verschiedene Austauschprotokolle. Normalerweise dauert das Einrichten der Integration mit einem neuen Kurierdienst zwei Wochen bis zu einem Monat.
Die Lieferung ist eine der Dienstleistungen, die wir zusammen mit dem Lager an unsere Partner verkaufen. Wenn Sie ein Produkt in einem Online-Shop einer beliebten Bekleidungsmarke bestellen, die anscheinend nichts mit Lamoda zu tun hat, wird der Kauf von einem Vertriebsmitarbeiter in einem LM-Express geliefert. Wir arbeiten gemeinsam mit dem kommerziellen Funktionsteam an diesen Projekten.
Um Projekte unseres Geschäfts umzusetzen, bestimmen ich und unsere technischen Leiter aus zwei Teams (das dritte stellt jetzt Entwickler und Tester ein), wie alle Änderungen am besten in unsere aktuelle Architektur passen.
Wir arbeiten auf der Grundlage von Rückständen aus der Liste der Projekte. Das Unternehmen bewertet jedes Projekt im Hinblick auf finanzielle und Marketing-Effekte. Wir schätzen die Arbeitskosten und überlegen uns einen technischen Ansatz: Ist es möglich, ein neues Feature schnell und effizient zu erstellen, oder ist es im Gegenteil so teuer und schwierig, dass es den gesamten Geschäftseffekt blockiert? Basierend auf diesen Schätzungen passen wir den Rückstand an und machen Projekte ganz oben auf der Liste. Etwa 30% unserer Entwicklungszeit entfallen auf den technischen Rückstand, sodass aus technischer Sicht keine Zeit für die Umgestaltung und Verbesserung von Systemen benötigt wird. Alles läuft nach Plan.
Die innere Welt der Lieferung
:
· PHP,
· Java,
· Kotlin,
· TypeScript,
· MySQL,
· PostgreSQL,
· RabbitMQ,
· ActiveMQ,
· Apache Kafka,
· Apache Camel,
· Docker, K8S.
Die meisten unserer Dienste basieren auf PHP. Historisch gesehen wurden die Systeme, auf denen Lamoda erstellt wurde, in dieser Sprache geschrieben. Eine der ersten Versionen der Website wurde auf Magento erstellt, dann wurden Rocket-Internet-Systeme als Grundlage für die Lieferung und Auftragsabwicklung herangezogen. Sie haben viele Iterationen der Entwicklung und Überarbeitung durchlaufen, aber PHP liegt immer noch fast allen Diensten zugrunde, einschließlich neuer. Wir haben bereits etwa 200.000 Codezeilen geschrieben, und viele erfahrene PHP-Entwickler (die Lieferrichtung zusammen mit QS-Ingenieuren zählt 20 Personen und wird aktiv erweitert) - aber sie sind nicht auf eine Technologie beschränkt, sondern ausgezeichnete Ingenieure, die das richtige Tool für die Aufgabe auswählen.
Wir werden PHP im Backend nicht aufgeben, da wir eine gut entwickelte Entwicklungskultur haben: Wir verwenden neue Versionen der Sprache und der Frameworks, decken fast den gesamten Code mit Tests ab, führen eine gründliche Codeüberprüfung durch, verfügen über ein gut aufgebautes CI und viele gängige Bibliotheken, die sich beschleunigen Entwicklungsprozess.
Im Gegensatz zum Online-Shop sind mit RPS keine großen Lasten verbunden. Zunächst benötigen wir eine komplexe und flexible Anwendungsarchitektur mit einer großen Anzahl von Abstraktionsebenen (wir versuchen, DDD einzuhalten) für eine komplexe und manchmal verwirrende Geschäftslogik. Wir haben auch eine große Anzahl von synchronen Austauschen (JSON-RPC, SOAP) und asynchronen Austauschen (RabbitMQ, Apache Kafka) mit anderen Systemen.
Insgesamt sind etwa 80-85% der Systeme in PHP geschrieben, obwohl wir manchmal Java verwenden. Es enthält einen Service für die Interaktion mit externen Lieferservices, den wir ständig ändern.
Das Frontend wird durch ein Bündel von VueJS + TypeScript dargestellt. Unsere Admin-Panels für interne Benutzer erfordern kein Super-Layout oder komplexes Design.
Wir haben auch eine mobile native Anwendung für Vertriebsmitarbeiter, die in Kotlin für Android geschrieben ist. Es wurde früher von engagierten mobilen Entwicklern entwickelt, aber jetzt entwickeln wir es sehr erfolgreich selbst.
Für Mitarbeiter, die in Transitlagern arbeiten, von denen aus Bestellungen an alle Lager und Abholstellen in Russland gesendet werden, haben wir eine Webanwendung. Bei diesem Ansatz besteht das Risiko, dass unsere Anwendung nicht verfügbar ist, da das Internet an einem bestimmten Abholpunkt oder in einem Lager getrennt wird. Wir minimieren dies jedoch, indem wir Kommunikationskanäle reservieren.
Zusätzlich zu diesen Liefersystemen (Express und eine mobile Anwendung, ein Bus zur Integration mit externen Kurierdiensten) bieten unser Team derzeit zwei weitere Dienste an : einen Dienst zum Drucken elektronischer Belege und Datamatrix... Letzteres soll die Kennzeichnung von Waren mit eindeutigen Codes gemäß den neuen gesetzlichen Anforderungen sicherstellen. Diese beiden Projekte stehen nicht in direktem Zusammenhang mit der Lieferung, aber über unsere Dienste werden die für sie erforderlichen Daten ausgetauscht.
Der Lieferservice druckt Quittungen aus: Jeder Vertriebsmitarbeiter verfügt über eine Kasse. An jedem unserer Abholpunkte befinden sich Kassen. Daher interagiert der Fiskalisierungsdienst ständig mit unserem System. Datamatrix betrifft fast alle BPA-Systeme (Lager, Versand, Partnerschaften, Buchhaltungssysteme). Unsere Abteilung interagiert auch sehr aktiv mit ihm, so dass wir uns aktiv an seiner Entwicklung beteiligt haben. Derzeit entwickeln wir ein neues System für Anreizrichtlinien für Vertriebsmitarbeiter.
Die kommerzielle Funktion von BPA: Was wir verkaufen
Das Unternehmen hat ein ehrgeiziges Ziel - die beste Modeplattform in der GUS zu sein. Dafür hat Lamoda viel in die Servicequalität investiert und die betrieblichen Prozesse von Grund auf verbessert: Lieferung, Lager, Fotostudio, Arbeit der Contact Center-Betreiber. Alle betrieblichen Prozesse wurden bei unseren Kunden getestet und getestet. Wir haben experimentiert, Kundenfeedback überwacht, Fehler gemacht, Fehler behoben und alles, was im Online-Einkaufserlebnis verbessert werden konnte, kontinuierlich verbessert. Im fünften Lebensjahr des Unternehmens haben wir beschlossen, unsere Ressourcen und unser Know-how mit anderen Marktteilnehmern zu teilen.
Wir haben also die erste B2B-Richtung, die großen Partnern Dienstleistungen für Fotostudios, Lagerung und Lieferung von Waren sowie Kundenanrufe bietet. Bald erschien innerhalb des Unternehmens ein Marktplatz für mittlere und kleine Unternehmen, der ein Lamoda-Schaufenster als zusätzlichen Service zur vorherigen Liste bietet. Beide Richtungen arbeiteten und entwickelten sich praktisch parallel und holten sich im Leistungsspektrum ein und übertrafen sich gegenseitig.
Nach weiteren drei Jahren und nach Auswertung der Ergebnisse wurde beschlossen, B2B und Marketplace zu einer kommerziellen Funktion zu kombinieren, die auf der Grundlage bestehender interner Lamoda-Services Services für externe Partner erstellt, entwickelt und unterstützt.
Jetzt arbeiten wir mit etwa 20 großen Marken zusammen - dies sind alles globale Unternehmen mit einem weltweiten Ruf, die ihre eigenen komplexen Geschäftsprozesse haben. Weitere 1000 unserer Kunden sind mittlere und kleine Unternehmen, die häufig keine entwickelte IT-Infrastruktur haben. Für alle Partner unterhalten wir auf unserer Seite eine separate Integrationsschicht, die für die schnelle und flexible Entwicklung von Funktionen ausgelegt ist, die externe Prozesse in unsere umwandeln.
Ich bin Alexey Felde, ein Lösungsarchitekt, und ich bin verantwortlich für die technische und Produktentwicklung der kommerziellen Funktion bei Lamoda.
Ich beschäftige mich mit der Entwicklung und Unterstützung von Diensten in der Integrationsschicht, und dafür muss ich die Geschäftsprozesse des Unternehmens und unserer Partner gründlich verstehen, um Änderungen an Lamoda-Systemen zu entwerfen.
Wie oben erwähnt, entwickeln wir zwei Hauptbereiche der Interaktion mit Marken: Marktplatz für kleine Marken, für den wir eine SAAS-Lösung in Form einer separaten WEB-Anwendung bereitstellen, und B2B - separate große Projekte für große globale Marken, für die wir entweder unsere operativen Kapazitäten vollständig bereitstellen oder Wir helfen bei der Integration in unsere.
Die B2B-Ausrichtung ist eine der interessantesten im Unternehmen, aber gleichzeitig eine der schwierigsten. Es kommt vor, dass Weltmode-Giganten mit völlig neuen Anforderungen oder Einschränkungen der Integration zu uns kommen. In solchen Fällen interagiert mein Team mit anderen Lamoda-Teams und wir entwerfen Änderungen an allen erforderlichen Unternehmensdiensten. Um einen der führenden Anbieter der globalen Modebranche zusammenzubringen, mussten wir uns auf alle Geschäftsprozesse einlassen, einschließlich Buchhaltung und Betrieb. Im Rahmen des Projekts haben wir 15 unserer internen Prozesse angesprochen: von der Beschreibung der Waren auf der Baustelle bis zur Buchhaltung und Lieferung. Mein Team verfügt über die umfassendste Expertise im Betrieb von Lamoda IT-Systemen und Geschäftsprozessen. Dies erfordert eine sorgfältige Systematisierung und Dokumentation unseres Wissens.
Für kleine Hersteller von Bekleidung, Schuhen und Accessoires, die oft nicht einmal über eine eigene IT-Abteilung verfügen, bieten wir eine Marketplace-Lösung, mit der Sie Verkäufe, Warenbewegungen und Retouren verfolgen können. Es funktioniert vollständig in den Einrichtungen unserer Systeme: Fotos von Waren werden von unserem Studio aufgenommen und bei uns gelagert. Die Waren befinden sich nicht physisch beim Kunden, sondern in unserem Lager und werden vom Lamoda-Lieferservice geliefert.
Ein weiteres Produkt unserer Box mit Quellcode ist ein Fotostudio. Es wurde vor einigen Jahren von einem großen Luxus-Einzelhändler gekauft. Sie hatten sehr unterschiedliche Fotos auf ihrer Website, was die Umsatzumsetzung stark beeinflusste. Unser Studio führte eine große Anzahl von Tests mit Fotos durch: Welche davon verkaufen sich besser (Fotos von Männern ohne Kopf oder mit Kopf, korrekten Beinwinkeln usw.). Der Kunde mochte die Ergebnisse dieser Tests sehr und wollte unsere Erfahrungen in seinem Online-Shop anwenden. Dazu musste er ein ähnliches Studio wie wir bauen, in dem die Leute arbeiten, den Fotografieprozess organisieren und unser IT-System installieren.
Lamoda in Miniatur
Im Gegensatz zu Serviceteams haben wir eine andere Aufgabe - die Entwicklung einer Integrationsschicht, hinter der sich das Unternehmen eines großen Unternehmens verbirgt. Das Hauptprodukt ist eine B2B-Plattform, die auf Codeebene intern in Module unterteilt ist: ein Modul für die Arbeit mit einem Lager, ein Modul für die Arbeit mit der Lieferung usw. Es ist ein großes System, das auf der Ebene dieser kleinen Module bestimmte Dienste verwalten kann. Es stellt sich heraus, dass unsere Plattform ein Miniatur-Lamoda ist. Gleichzeitig sehen die Partner nur eine API - universell und sehr einfach, hinter der sich die gesamte Komplexität von Lamoda verbirgt. Gleichzeitig müssen wir für die Integration so einfach wie möglich sein - unser erstes Prinzip in der Entwicklung, dann Stabilität und Zuverlässigkeit. Wir unterstützen verschiedene SLAs. Eine davon ist beispielsweise eine maximale Systemausfallzeit von 4 Stunden pro Jahr. Wie Kollegen,Wir legen großen Wert auf die Aufgaben Fehlertoleranz, Freigabeprozesse, Codequalität und Abdeckung durch Funktionstests. Unsere B2B-Plattform ist in Bezug auf die Anzahl der Tests fast das erste System auf der Liste. Wir haben über 2.000 Funktionstests und 3.000 Komponententests.
B2B :
·
·
·
·
:
· PHP,
· Java,
· JavaScript,
· GO,
· Symfony,
· Camel,
· PostgreSQL,
· AngularJS,
· Apache Kafka,
· RabbitMQ.
Bevor wir die Marke verbinden, vereinbaren wir mit dem Partner alle Einzelheiten der Beziehung: Reichweite und erwartete Warenmenge, Geografie der Lieferung, Satz der verbundenen Dienstleistungen. Als nächstes kommt die IT-Komponente ins Spiel: Die Integrationsdetails werden mit der Marke besprochen und wir helfen bei der Verbindung zu unserer API. Wenn sich etwas vom Standardintegrationsschema unterscheidet, erhöhen wir zusätzlich Dienste, die Middleware zwischen Partnersystemen und unserer B2B-Plattform sind.
In 90% der Fälle aktualisieren wir unsere Plattform und implementieren neue Geschäftsprozesse. Der letzte der implementierten Geschäftsprozesse arbeitet mit Datamatrix-Codes, die bereits in einem anderen Artikel erörtert wurden , und den oben genannten Kollegen.
Bei unserer Arbeit geht es hauptsächlich darum, ein ausgewogenes Verhältnis der Technologien aufrechtzuerhalten und Werkzeuge für die zu lösenden Aufgaben auszuwählen. Wir jagen ehrlich gesagt keine Mode in der Branche. Unser Stack ist PHP, Java, Javascript und einige Go.
Wie im Artikel erwähnt, hat das Unternehmen in der Vergangenheit viele Systeme in PHP geschrieben. Es ist bequem und schnell, Geschäftsprozesse darauf zu programmieren. Darauf basiert die Basis unserer B2B-Plattform - Autorisierung, Rollenmanagement, alle wichtigen Geschäftsprozesse. Es basiert auf einer hexagonalen Architektur, der aktiven Nutzung von DDD und dem ersten API-Design. Wir unterstützen Single Page Application in Angular 1.5. Es kommuniziert mit unserer B2B-Plattform über API und ist in erster Linie für die Darstellung der Benutzeroberfläche für unsere Mitarbeiter und Partnermitarbeiter verantwortlich.
Wir verwenden auch Java, insbesondere das Camel-Integrationsframework. Marken sind nicht immer bereit, unsere API zu verwenden, und für sehr große Player schreiben wir Middleware, die die Markendomäne in die Lamoda-Domäne umwandelt. Camel spart Zeit bei der Entwicklung von Systemintegrationslösungen und ändert die Einstellung der Mitarbeiter zu guten Engineering-Praktiken mithilfe von Enterprise Integration Patterns (EIP). Wir planen, Camel an Orten zu entwickeln, an denen es bequemer ist, Integrationsmuster zu verwenden, als einen separaten Dienst zu schreiben.
Wir nutzen Kafka aktiv, um Daten zwischen internen Systemen auszutauschen. Dies reduziert die Konnektivität zwischen Systemen erheblich, da wir in den Besonderheiten unserer Arbeit Momentaufnahmen von Daten aller Systeme speichern müssen, die für Partner geschärft wurden. Für alles, was schnell erledigt werden muss und für Büroaufgaben, schreiben wir in Go. Einer unserer Services berechnet Metriken jede Minute basierend auf den gespeicherten Daten. Früher war diese Lösung in eine B2B-Plattform integriert und wurde in PHP geschrieben. Wir haben sie jedoch in flinkes Go umgeschrieben, da sie eine höhere Leistung und einen einfacheren Support bietet, besser skaliert und außerhalb des Veröffentlichungszyklus der B2B-Plattform bereitgestellt werden kann.
Ich freue mich sehr, wenn ich das Ergebnis der Arbeit unserer Plattform auf über 30 Websites von Drittanbietern großer und bekannter Modemarken sehe. Ich sehe, wie eine Bestellung, die von einem anderen Standort in unseren Systemen eingeht, von unserem Contact Center-Betreiber verarbeitet und dann von unserer Lieferung transportiert wird. Niemand weiß, dass all diese Prozesse in Lamoda erstellt und automatisiert werden, aber wir machen das so cool, dass unsere Prozesse von globalen Marken gekauft werden.