Admittedly, I was mildly shocked and a bit scared when stumbling over @ZackMaril’s recent tweet claiming Clojure was a dying language. A huge discussion was sparked and a lot has been written since. A summary can be found in Arne Brasseur’s post which also offers some good insight into the community behind Clojure. Eric Normand added another layer of abstraction today and collected some more links in this week’s Drama edition of the purelyfunctional.tv newsletter.

I share Dan Lebrero’s sentiment on Clojure. Clojure taught me lessons and introduced concepts to me  that I do not want to miss any more. First and foremost I love the built-in immutable collections. Immutability as default is a milestone in my life as a developer. I compare it to git, pair-programming, continuous integration and IntelliJ IDEA (with Cursive now, of course). There was a time when I did not even know about each of these. Now I cannot imagine to ever work without any of them.

In this post I want to emphasize another not less important aspect: Productivity. With Clojure we get a whole lot of stuff done. Seriously.

In einem fachbereichsübergreifenden Projekt wollte OTTO Insights zum Thema Customer-Journey generieren und als Basis für Maßnahmen (z.B. Verbesserung der Customer Experience) nutzen. Dabei sollte eine Analysebasis geschaffen werden, die Potenziale sichtbar macht und einen Mehrwert für OTTO bietet.

An dem Projekt waren die Bereiche Business Intelligence (BI) und Kundenservice und Logistik (KL) beteiligt.

BI ist ein zentraler Treiber für die Entwicklung der „data driven company“.

Beim Export von Shopdaten an Preissuchmaschinen machen die Betreiber genaue Vorgaben, in welchem Format die Produktdaten eingereicht werden müssen. Ein Betreiber möchte z.B. den Artikelpreis als Zahl in Cent, der andere als String mit Komma und Eurozeichen. Auch für die Angabe von Lieferbarkeit, Versandkosten oder Bildern sind sehr unterschiedliche Vorgaben zu beachten.
Die Software, die bei OTTO die Transformation und Datenbelieferung übernimmt, heißt ProPHET (Produktdaten Partnerfeed Handling & Export Tool). Dieser Artikel zeigt die Vorteile der Umstellung auf eine domänenspezifische Sprache (DSL) zur Beschreibung der Transformation dieser Daten.

Aktuelle E-Commerce-Systeme bestehen häufig aus mehreren Servern, die mit dem Browser der Benutzer über SSL-gesicherte Leitungen kommunizieren. Allerdings sind die Rechner der Kunden nicht die einzigen, mit denen ein Shop Daten austauschen muss: fast immer ist es notwendig, dass die einzelnen Server des Systems auch untereinander kommunizieren müssen. Dabei ist es unerheblich, ob es sich um eine Microservice– oder eine Vertikalen-Architektur handelt. Sogar die in die Tage gekommenen Monolithen nutzen bei einem Multi-Tier-Ansatz gerne mehrere Server.

Gemein ist diesen Backend-Requests (im Gegensatz zu dem Netzwerkverkehr zwischen Kunden-Browser und otto.de), dass hier im Allgemeinen keine vertraulichen Daten über die Leitung gehen, sondern beispielsweise die Aktualisierung einer Produktverfügbarkeit oder Konfigurations-Requests. Diese Inhalte müssen also nicht geheim gehalten werden, was uns den Aufwand und die Komplexität erspart, sie zu verschlüsseln.

Trotzdem darf natürlich nicht jeder die Texte im Shop ändern oder Produktinformationen anpassen, daher benötigen wir eine Methode zur Authentifizierung und Autorisierung der Requests.