OTTO’s Weg zur Plattform

Hey, ihr habt’s sicher schon gehört. OTTO möchte sich noch stärker als bisher für Partner öffnen und zur Plattform werden.

Ach ja, Plattform will ja jeder, denkt ihr euch. (Lächeln)  Aber für OTTO ist das Geschäft nicht ganz neu und OTTO hat immerhin bereits mehr 6,6 Millionen Kunden allein in Deutschland und wächst jedes Jahr weiter.

Aber in diesem Blog geht’s ja vor Allem um Softwareentwicklung, daher empfehle ich diese Links für weitere Informationen über das Warum:

https://www.otto.de/unternehmen/de/newsroom/news/2018/OTTO-erfindet-sich-neu-und-waechst-zum-achten-Mal-in-Folge.php

https://neuhandeln.de/weihnachtsgeschaeft-otto-profitiert-von-neuer-plattform-strategie/

Der Wandel des Geschäftsmodels bedingt natürlich auch eine Veränderung der IT-Landschaft. Über diesen Prozess werden wir in diesem und den nächsten Artikeln berichten.

#NoWaterfallProject:

OTTO ist in viele Bereiche aufgeteilt, in denen wiederum diverse agile, cross-funktionale Teams an einzelnen Komponenten, z.B. der Auftragsverarbeitung, arbeiten. Die Herausforderung ist nun, gemeinsam in die gleiche Richtung zu entwickeln. OTTO hat immerhin über tausend Mitarbeiter in der IT und angrenzender Bereiche und besitzt so natürlich auch eine große Schlagkraft, wenn alle am gleichen Strang ziehen.

Das ist natürlich extrem herausfordernd, aber auch sehr spannend.

Das könnte man nun vielleicht nach einem Wasserfall-artigen Projektablauf bearbeiten, bei dem dann einige Jahre lang genau spezifiziert wird, was wir entwickeln wollen. Aber wer schon mal in so einem Projekt mitgearbeitet hat, weiß, dass es lange dauert um Feedback zu bekommen und man am Ende etwas gebaut hat, was man dann gar nicht mehr haben will.

Wir gehen daher agil vor. In vielen kleinen Iterationen wollen wir nach und nach lauffähige Software entwickeln und live nehmen.

Damit wir aber trotzdem parallel in vielen Teams starten können und jedes Team seinen Verantwortlichkeitsbereich kennt, erarbeiten wir vorher ein initiales Produktdesign, welches die Teams dann nach und nach mit Leben füllen werden.

Im Scrum-Scrum-Prozess ist das die initiale Planung:

(Quelle: https://de.wikipedia.org/wiki/Inkrementelles_Vorgehensmodell)

Zuallererst werden wir in Teamübergreifenden Workshops anhand der Customer-Journey grobe Funktionen, Komponenten und Domänenobjekte identifizieren und dabei neue Ideen für das Geschäftsmodell Plattform entwickeln. Für den Bereich Order2Cash (Auftragsabwicklung und Bezahlung) ist das tatsächlich gerade weitgehend abgeschlossen. Dabei haben ca. 30 Personen eine Woche in Workshops und Teilgruppen diese Themen erarbeitet. In ebenso kurzer Zeit wollen wir dann einen Domänenschnitt erarbeiten um daraus die zu entwickelnden Software-Produkte zu identifizieren. Das wird dann die Grundlage, damit die agilen Teams anhand der identifizierten Fach-Domänen an die Arbeit gehen. Und agil bedeutet eben, das wichtigste zuerst und möglichst schnell lauffähige Software entwickeln.

Wie das tatsächlich funktioniert, werden wir in den nächsten Wochen und Monaten erleben.

#ModerneSoftwareArchitektur

Teile der Softwarelandschaft von OTTO bestehen noch aus den gefürchteten Monolithen. Große Applicationserver, in denen eine Anwendung läuft, die von mehreren Teams gemeinsam entwickelt wird. Schon seit Jahren wird so keine Software mehr bei OTTO entwickelt. Wir setzen vielmehr auf verteilte Systeme und Microservice-Architekturen. Insbesondere bei der Neuentwicklung unseres Web-Shops LHOTSE haben wir damit sehr viel Erfolg gehabt. Die Erfahrungen wenden wir nun natürlich im ganzen Unternehmen ein.

An dieser Stelle möchte ich schon mal unser technisches Manifest anteasern. Dort ist beschrieben, welche Architekturrichtlinien wir uns selbst geben. Insbesondere, dass es Macroarchitektur-Richtlinien gibt, die für uns alle gelten, aber eben auch eine Micro-Architektur gibt, welche von den Teams entschieden wird. Z.B. sollen die Teams selbst entscheiden, welche Technologien für ihre fachlichen Probleme am geeignetsten sind. Die Teams haben also viele Freiheiten aber auch Verantwortung. Um eine lose Kopplung zwischen den Systemen zu gewährleisten, setzen wir stark auf asynchrone Datenversorgungspattern wie Atom-Feeds oder Messaging-Systeme wie Kafka oder Kinesis.

Mehr dazu in einem unserer nächsten Blog-Artikel. Hier schonmal ein paar Eindrücke auf twitter.

#Technologie

Seit etwa einem Jahr entwickelt OTTO alle Systeme für die Cloud. Wir setzen dabei vor Allem auf AWS. Der Hauptgrund dafür war die hohe Flexibilität und dass wir uns so auf die Softwareentwicklung konzentrieren können und weniger auf den Betrieb von Hardware. Wie oben schon beschrieben, haben die Teams sehr viel Autonomie, daher erfolgt der Betrieb der Software ebenfalls in den Teams. Damit das handhabbar bleibt, setzen wir auf InfrastructureAsCode und deployen unsere Infrastruktur komplett mit Cloudformation oder Terraform.

Ein Großteil der Teams setzt auf Java. Aber es gibt auch Teams die z.B. Scala, Clojure, Go oder NodeJs verwenden. Als Persistenztechnologien kommen sowohl relationale Datenbanken aber auch z.B. MongoDB, ElasticSearch oder DynamoDB zum Einsatz. Das klingt vielleicht nach einem ganzen Zoo von Technologien und manche Führungskraft mag denken, so könnte ein Entwickler ja nie mehr das Team wechseln, weil er die Technologie nicht beherrschen würde. Vielen meiner Kollegen wäre es aber eher sehr peinlich, wenn sie nicht die Fähigkeit hätten, sich in kurzer Zeit in neue Technologien einzuarbeiten.

In den letzten Jahren ist das Thema Machine-Learning mittels neuronaler Netze sehr weit fortgeschritten. Da hat Otto bereits sehr viel KnowHow aufgebaut und das wird vermutlich neben Serverless die disruptivste Änderung im Techstack für die Software-Entwicklung der nächsten Jahre sein.

Soviel zu diesem ersten Einblick auf unserem Weg zur Plattform. Wie ihr seht, wird es ein spannender Weg.

Stellt gerne Fragen und stay tuned für die nächsten Artikel.