Migros Rezepte — eine schnelle API & Rezeptsuche für alle

Für die neue Migusto-Plattform der Migros haben wir eine Rezepte-API entwickelt.
Unsere Lösung bietet einen zentralen Zugriff auf die Migros Rezeptdatenbank mit Rezepten von Migusto, Famigros und iMpuls.
Sie bildet das Rückgrat der Migusto Webseite für alle rezeptspezifischen Suchabfragen, das Autocomplete und die Rezeptdaten für die Detailseite - in Echtzeit.

Von der Konzeption über die Entwicklung bis zur Evaluation und Optimierung

Wir konzipierten und entwickelten die zentrale Schnittstelle mit Datenimport, Datenhaltung und Anreicherung inklusive Volltextsuche, Aggregationen und Filterung.
Die Volltextsuche wurde anhand von live Analytics Daten zusätzlich evaluiert und optimiert, sodass ein insgesamt um 20% besseres Ranking der Suchresultate erreicht werden konnte.
Die Migusto Webseite greift in Echtzeit auf die Rezept API zu. Um die Skalierbarkeit sicherzustellen wählten wir ein Microservice Setup mit redundanter Architektur. Zusätzlich wurde mit Lasttests die Performance geprüft und optimiert sodass die API auch Peaks im minimalen Setup von nur zwei Nodes problemlos standhalten können.

Resilienter Datenimport

Die Kulinarik-Redaktion erfasst Rezepte sowohl für Online- als auch Printkanäle in einem zentralen Redaktionssystem. Da die Schnittstellen des Redaktionssystems nicht für Echtzeitabfragen ausgelegt ist, werden die Rezepte regelmässig von unserem Importer (ein Extract, Transform, Load Prozess entwickelt mit RxJS) ausgelesen, mit weiteren Daten wie z.B. Bewertungen angereichert und in einem Elasticsearch Suchindex abgespeichert. Der Importer kann auch mit langsamen und fehlerhaften Antworten umgehen.

Die Rezept-API bildet die Basis für eine flexible sowie nachhaltige Nutzung der Rezept-Daten. Die performante API ermöglicht eine plattformunabhängige Nutzung der Rezepte und bietet dem Benutzer eine State-of-the-Art Suche an. Im Backend steht ein Playground für laufende Analysen und Optimierungen des Algorithmus der Volltextsuche zur Verfügung.

Desirée Poffet, Projektleiterin Digital Platforms & Product Owner migusto.ch, Migros-Genossenschafts-Bund

Schnelle Resultate auch bei komplexen Abfragen

Wie beim Filialfinder oder der Migros-Suche setzen wir auch bei der Rezepte-API auf Elasticsearch für die Volltextsuche und Filterung von Resultaten. Somit können wir eine grosse Anzahl von Rezepte effizient nach Suchbegriffen durchsuchen oder nach Kategorien wie z.B. vegan und dessert filtern.

Die Schnittstelle bietet die Möglichkeit, Rezepte nach ihrer saisonalen Relevanz auszuliefern. Sucht man z.B. im Frühling nach einem Risotto, wird ein Bärlauch-Risotto vorgeschlagen, wohingegen im Herbst ein Steinpilz-Risotto höher gewichtet wird.

Mit Elasticsearch liefert die Suche auch für äusserst komplexe Suchabfragen relevante Resultate - dank Autocorrect, Bigram Matching, Stemming, Synonymen, und vielen mehr.

Spitzenwerte der Rezepte-API

20'000rpm

Durchschnittliche Response Time

34ms

Bessere Suchresultate

20%

Hochperformante GraphQL API

Die Rezepte werden über eine Node.js API mit GraphQL ausgespielt. Dafür setzen wir, wie schon bei Reactions, auf Apollo Server. GraphQL erlaubt es den API-Konsumenten genau zu definieren, welche Daten sie erhalten wollen. So kann auf einer Übersichtsseite nur Bild und Titel abgefragt werden, auf einer Detailseite aber sämtliche Rezeptinhalte.

Die GraphQL API, welche auf Cloud Foundry betrieben wird, hielt bei durchgeführten Lasttests auch 20'000 Anfragen pro Minute problemlos stand.

Rezepte bewerten mit Reactions

Bewertungen und Kommentare zu Rezepten werden auf der neuen Migusto-Plattform durch Reactions zur Verfügung gestellt, wie das auch schon bei Migipedia oder den Migros Fachmärkten der Fall ist. Somit stehen Kommentare und Bewertungen den Migros-Usern auch in ihrem Community-Profil zur Verfügung.

Mittels einer Message Queue (RabbitMQ) informiert Reactions den Migusto Importer über Änderungen in den Rezeptebewertungen, damit diese in beinahe Echtzeit in den Suchindex einfliessen. Mit dieser Information können Rezepte nach ihrer Bewertung sortiert werden.

smartive leistet super Arbeit in hoher Qualität. Die Zusammenarbeit ist dabei stets angenehm.

Lukas Stalder, Technischer Product Owner, Migros-Genossenschafts-Bund

DevOps & Monitoring

Wir setzen auf Conitnuous Integration: Mit Unit und Integration Tests sowie automatisierten Deployments können wir innert kürzester Zeit reagieren und praktisch jederzeit Deployen - ohne jemals den Live Betrieb zu unterbrechen.

Durch das Deployment in der internen Cloud sowie Logging und Monitoring mit Alerting stehen uns alle Werkzeuge zur Verfügung Fehlerminimierung zur Verfügung. Die Erreichbarkeit der Continerized API und Importer wird von der Cloud automatisch sichergestellt. Sollte es dennoch zu unvorhersehbaren Fehlern kommen hilft das Logging und Monitoring mit Graylog und NewRelic die Fehler schnell zu lokalisieren.

Verknüpfung von Zutaten mit Produkten

Aufgrund der Zutaten eines Rezepts können personalisierte Produktempfehlungen gemacht werden. Dem Bündner wird Heidimilch, dem Luzerner Lozärnermilch angeboten.

Unser Experte: Robert VogtHaben Sie Fragen oder ein eigenes Vorhaben? Wir ❤️ digitale Produkte und beraten Sie gerne. Unverbindlich und kostenlos, Kaffee inklusive.

Termin vereinbarenrobert@smartive.ch+41 44 552 55 99