Hightech-Lösungen
Einsatz von Golang für eine Produktsuchmaschine im CPQ-Portal
Erfolgsgeschichte
Im Jahr 2020 wandte sich ein globaler Technologiekonzern an Scalefocus. Das Unternehmen wollte eine Produktsuchmaschine der nächsten Generation konzipieren und implementieren lassen.
Diese Lösung sollte die bestehende Product-Finder-Funktion auf der CPQ-Plattform ersetzen. Die Legacy-Lösung basierte auf einer relationalen Datenbank, einem Java-basierten Backend-Monolithen und einem JSP-Frontend.
Wie zu erwarten, bot sie eine schwache User Experience und unzureichende Suchperformance.
Im Rahmen eines umfassenden CPQ-Transformationsprogramms brachte Scalefocus die Produktsuche auf ein neues Niveau. Ziel war auch, Betriebskosten zu senken und eine lizenzintensive proprietäre Softwarelösung abzulösen.
Dafür setzten wir moderne Cloud-Technologien in einer Microservice-Architektur ein.
25-fach schnellere Antwortzeit bei Suchergebnissen, von 10 Sekunden auf unter 200 Millisekunden
35 % geringere Betriebs- und Wartungskosten für Infrastruktur
40 % bessere Produktdatenbeladung und Datenindexierung
Der Kunde
Ein multinationales Technologieunternehmen mit einem breiten Portfolio an Hardware- und Softwareprodukten sowie Services. Über die Jahre entwickelte es sich zu einem der weltweit führenden Technologieunternehmen.
Das Unternehmen ist bekannt für innovative Produkte, globale Reichweite und sein Engagement für Nachhaltigkeit.
Die Herausforderung
Transformation des Legacy-Systems
Das CPQ-Portal des Technologiekonzerns nutzte eine veraltete Product-Finder-Funktion. Sie erfüllte moderne E-Commerce-Standards nicht mehr.
Die Transformation dieser Legacy-Lösung in eine dynamische, E-Commerce-ähnliche Produktsuchmaschine gehörte zu den anspruchsvollsten Aufgaben.
Funktionsreiche Lösung
Das neue System musste fortgeschrittene Funktionen unterstützen. Dazu gehörten Search-as-you-type, Infinite Scroll, Guided Selling und Auto-Attach für verwandte Produkte.
Diese Funktionen mussten nahtlos integriert werden. Gleichzeitig waren hohe Performance und Reaktionsfähigkeit sicherzustellen.
Performance-Anforderungen
Scalefocus musste sicherstellen, dass die Antwortzeiten der Suchergebnisse unter 200 Millisekunden lagen. Angesichts des Umfangs und der Komplexität des Produktkatalogs war dies besonders anspruchsvoll.
Kostenoptimierung
Der Kunde wollte die Betriebskosten gegenüber der lizenzintensiven proprietären CPQ-Legacy-Lösung optimieren. Dafür war eine kosteneffiziente und skalierbare Lösung auf Basis Cloud-nativer Technologien erforderlich.
Die Lösung
Einsatz der Programmiersprache Go
Wir implementierten Backend-Services mit der Programmiersprache Go, um die beschriebenen Herausforderungen zu adressieren. Das schlanke Nebenläufigkeitsmodell und die effiziente Runtime machten Go besonders geeignet.
So konnten die parallelen und durchsatzstarken Anforderungen der Suchmaschine zuverlässig erfüllt werden.
Integration mit OpenSearch
Das breite Go-Ökosystem und die starke Unterstützung paralleler Programmierung ermöglichten eine nahtlose Integration mit OpenSearch. OpenSearch wurde als Suchmaschinentechnologie gewählt.
Die native Unterstützung gleichzeitiger Operationen ermöglichte parallele Indexierung und Abfragen großer Datensätze. Dadurch verbesserten sich Suchperformance und Antwortzeiten.
Die robuste Standardbibliothek und HTTP-Unterstützung machten Go ideal für die Interaktion mit OpenSearch. So ließen sich Suchanfragen effizient verarbeiten und nahtlos integrieren.
GraphQL und gRPC
GraphQL wurde als API-Layer eingesetzt. gRPC übernahm die interne Kommunikation zwischen Microservices.
Beide Technologien verbesserten Performance und Flexibilität. Die native Unterstützung in Go vereinfachte die Integration und reduzierte den Entwicklungsaufwand.
Optimiertes Cloud-Deployment
AWS-Cloud-Services und eine skalierbare, kosteneffiziente Infrastruktur unterstützten das Deployment der Go-basierten Backend-Services. Die Auto-Scaling-Funktionen von AWS passten Ressourcen dynamisch an die Nachfrage an.
So blieb die Performance auch bei Spitzenlast stabil. Gleichzeitig wurden Betriebskosten in Zeiten geringerer Auslastung reduziert.
Die effiziente Ressourcennutzung und Skalierbarkeit von Go senkten die Betriebskosten zusätzlich.
React für das Frontend
React ermöglichte die Entwicklung einer dynamischen und reaktionsschnellen Benutzeroberfläche. Sie ergänzte die fortgeschrittenen Suchfunktionen der neuen Plattform.
Terraform für AWS-Automatisierung
Terraform vereinfachte Deployment und Management der AWS-Cloud-Infrastruktur. Dadurch wurden Skalierbarkeit, Zuverlässigkeit und Kosteneffizienz unterstützt.
Das Projekt
Nach der ersten Analysephase untersuchte unser Team die Legacy-Lösung und klärte alle initialen Anforderungen. Anschließend erarbeiteten unsere Experten einen vollständigen Vorschlag für die Lösungsarchitektur.
Die funktionalen Datenflüsse wurden in Search und Product Data Ingestion aufgeteilt. Der Suchfluss umfasst eine moderne Benutzeroberfläche mit Responsive Design und React-basierter User Experience.
Für die Umsetzung nutzten wir die MUI-Library. Die Benutzeroberfläche kommuniziert mit einer GraphQL-Middleware-API.
Über diese API werden die produktbezogenen Search-Microservices im Backend angesprochen, die in Go implementiert wurden. Die Go-Microservices greifen direkt auf den AWS-gehosteten OpenSearch-Cluster zu.
Dadurch werden besonders schnelle Produktsuchanfragen möglich. Auch die Microservices für Product Data Ingestion wurden in Go umgesetzt.
Produktdaten werden aus drei unterschiedlichen Quellen aufgenommen. Anschließend werden sie in den OpenSearch-Cluster übertragen.
Das zugrunde liegende Datenmodell wurde für optimale Produktdatenanalyse und Indexierung entwickelt. Die primäre Quelle ist eine relationale Datenbank.
Sie dient als Single Source of Truth für Produktdetails und Produktbeziehungen. Eine zweite Datenquelle liefert regelmäßige Preisinformationen über eine SQS Queue.
Die dritte Quelle stellt Daten zur Produktverfügbarkeit über einen File Share bereit.
Scalefocus wählte Go für die Serverseite wegen seiner Geschwindigkeit. Ein weiterer Vorteil war die Ausführung auf Betriebssystemebene, ohne virtuelle Maschine oder Interpreter.
Den Großteil der Nebenläufigkeitslogik entwickelten wir in Go. Ausschlaggebend waren die Einfachheit der Sprache und ihr natürlicher Ansatz für Parallelisierung.
GraphQL wurde als Frontend-API-Technologie gewählt, da es die Zahl der HTTP-Requests deutlich reduziert. Gleichzeitig löst es typische Probleme mit Over-Fetching und Under-Fetching.
gRPC wurde gegenüber einem REST-Server-Layer bevorzugt, da es deutlich kompakter ist. Für bestimmte Payloads ist gRPC beim Datenempfang etwa siebenmal schneller.
Beim Senden von Daten ist gRPC etwa zehnmal schneller. Zudem vereinfachte die native Go-Unterstützung für GraphQL und gRPC die Integration erheblich.
Dadurch sank auch der Entwicklungsaufwand deutlich.
Geschäftsergebnisse
25-fach höhere Performance und Reaktionsfähigkeit
Durch Go-Concurrency und optimiertes Deployment in der AWS Cloud erzielte die Suchmaschine erhebliche Performance-Gewinne.
Die Antwortzeit der Suchergebnisse lag konstant unter 200 Millisekunden. Zuvor betrug sie zwischen 5 und 10 Sekunden.
Das war entscheidend, um die strengen Performance-Anforderungen zu erfüllen. Gleichzeitig entstand eine nahtlose Browsing Experience für die Nutzer.
Auch die Performance der Produktdatenbeladung und Datenindexierung verbesserte sich um 40 %.
35 % geringere Betriebskosten
Die effiziente Nutzung von AWS-Cloud-Ressourcen und die schlanke Go-Runtime senkten die Betriebskosten deutlich. Infrastruktur- und Wartungskosten wurden um 35 % reduziert.
Die Auto-Scaling-Funktionen von AWS sorgten dafür, dass Ressourcen je nach Nachfrage skaliert werden konnten. So wurde Kosteneffizienz optimiert, ohne Performance einzubüßen.
Verbesserte User Experience
Die E-Commerce-ähnliche Produktsuchmaschine verbesserte das Nutzererlebnis des CPQ-Portals deutlich.
Fortgeschrittene Funktionen wie Search-as-you-type und Guided Selling halfen Nutzern, Produkte intuitiver und effizienter zu finden. Das steigerte Zufriedenheit und Engagement.