Back to top

Amazon CloudSearch oder Solr Cloud

GASTBLOG: Vor kurzem bot sich überraschend die Gelegenheit, einen der führenden Consultants für AWS zu einem Interview zu gewinnen. Also haben wir diese Gelegenheit ergriffen und ihn zu einem Thema befragt, das für viele unserer Kunden von großem Interesse ist:

Wie schneidet Amazon CloudSearch im Vergleich zu Solr Cloud auf EC2-Servern ab, und wie auf der eigenen In-House-Infrastruktur?

Von unserer Sicht hier bei Search Technologies aus ist das eine Entscheidung, die für jeden Kunden einzeln getroffen werden muss, immer ganz nach seinen Geschäftszielen, der vorhandenen Contentumgebung und ähnlichen Umständen. Unser Search Assessment Service ist eine gute Möglichkeit, diese Faktoren zu untersuchen und dokumentieren.

Im Folgenden nun also die Mitschrift des Interviews, als Blogartikel formatiert - aus Sicht des AWS-Consultants geschrieben, nicht von unserem gewohnt unabhängigen Standpunkt aus. Seine Einblicke bieten aber nützliche Informationen für jeden, der die Möglichkeiten von Solr mit denen vergleichen will, die bei CloudSearch geboten werden.

 

EINFÜHRUNG

Im Folgenden soll ein schneller Vergleich zwischen Amazon CloudSearch und Apache Solr Cloud vorgenommen werden, damit der Kunde bei der Auswahl eine informierte Entscheidung treffen kann.  Beiden Produkten liegt dieselbe Suchmaschine zugrunde, aber während Amazon Cloud Search einen vollständig verwalteten Dienst darstellt, muss der Betreiber bei der Alternative Solr Entwicklung, Verwaltung und Wartung selbst übernehmen,

 

Hintergrund

Es gibt verschiedene Möglichkeiten, um die cloudbasierte Suche in Anwendungen zu integrieren. Amazon CloudSearch bietet einen vollständig verwalteten Dienst in der AWS Cloud und damit einfache und kosteneffektive Einrichtung, Verwaltung und Skalierung für Websites und Anwendungen. Apache Solr ist eine Open-Source-Suchplattform, die Möglichkeiten der Skalierung über mehrere Knoten bietet, was man dann Solr Cloud nennt.

Mit Amazon CloudSearch können Sie Ihrer Website oder Anwendung schnell neue Suchfunktionen hinzufügen, ohne über fortgeschrittene Kenntnisse der Suche verfügen zu müssen und ohne Gedanken an Hardwarebereitstellung, Einrichtung und Wartung verschwenden zu müssen. Mit nur wenigen Klicks in der AWS Management-Konsole können Sie eine Suchdomäne erstellen und die Daten hochladen, die durchsuchbar gemacht werden sollen. Amazon CloudSearch stellt automatisch die erforderlichen Ressourcen bereit und erstellt einen hochgradig angepassten Suchindex.

Apache Solr Cloud bietet mehr oder weniger dieselben Suchfunktionen wie Amazon CloudSearch, allerdings muss mehr Arbeit für die Verwaltung der Ressourcen erbracht und mehr Code geschrieben werden, um die anvisierten Ziele zu erreichen.

Sowohl Amazon CloudSearch als auch Solr Cloud spielen Updates automatisch an korrekter Stelle ein, verteilen die Suchen über die verschiedenen Suchinstanzen und kümmern sich um Replikation und Wiederherstellung. Unterschiede gibt es erst bei der Frage, wie man zu dem gewünschten Zustand gelangt und wie man diesen dann verwalten und aufrechterhalten kann.

 

Ressourcen verwalten

Wenn in Amazon CloudSearch eine Domäne erstellt wird, übernimmt diese die Verarbeitung aller Ressourcen, die für Einsatz und Skalierung der Lösung benötigt werden. CloudSearch verwaltet die dauerhafte Aufbewahrung des Contents, die Hardware, die für den Suchtraffic erforderlich ist, die Hardware, über die der jeweilige Suchindex erstellt wird, den Lastausgleich für den Traffic, die Replikation mit hoher Verfügbarkeit, Wiederherstellung von Knoten, Sicherung des Suchdienstes und Softwareupgrades. Bei CloudSearch bekommt man über ein einzelnes Konto Zugriff auf all diese Ressourcen. Die Rechnung wird also vereinfacht, nur ein Kostenpunkt, über den alle Ausgaben für die Suche zusammengefasst werden.

Wenn man hingegen einen eigenen Apache Solr Cluster mit Solr Cloud verwaltet, muss man sich selbst um die Bereitstellung kümmern und alle Ressourcen selbst konfigurieren. Um dies auf AWS vorzunehmen braucht man Zugriffsdienste wie Amazon S3, Amazon EC2 und Amazon Elastic Load Balancing. Jetzt würde die Rechnung also schon mehrere Elemente umfassen, für jeden Dienst eins. Man kann also immer noch die Kosten überblicken und nachvollziehen, aber es wird schon weniger transparent.  Wenn man jetzt eine komplett eigene Plattform einrichtet, muss man auch die benötigte Rechenleistung und Speicherkapazität selbst bereitstellen und konfigurieren.  Außerdem wird ohne die elastischen Fähigkeiten von AWS die Bereitstellung zusätzlicher Ressourcen für die Skalierung der Lösung zu einem Problem, das man selbst lösen muss. Das korrekte Einschätzen der Spitzenlast bei Suchanwendungen war schon immer eine schwere Aufgabe. Oft sind hohe Auslastungen ein Zeichen für ein erfolgreiches Geschäftskonzept, vor allem bei weborientierten Anwendungen. Gerade in solchen Situationen ist es besonders peinlich, wenn die Infrastruktur nicht mehr mithalten kann und den Benutzern nur noch eingeschränkte Dienste zur Verfügung stehen.

 

Skalierung verwalten

Amazon CloudSearch ist ein RESTful Service: Man sendet Dokumente an einen Dokument-Endpunkt und Suchanfragen an einen Such-Endpunkt, all das über HTTP durch DNS-Einträge. Wenn Dokumente gesendet werden, fügt CloudSearch diese dem Index in Echtzeit hinzu und stellt automatisch Hardware mit ausreichenden Kapazitäten bereit. Wenn die Daten von mehreren Hosts geteilt werden müssen, baut CloudSearch automatisch die Shards auf und weist diese den Hosts zu, ohne die Abfrageverarbeitung dadurch zu unterbrechen.

Während der Suchtraffic zur Domäne gelangt verwaltet CloudSearch die Ressourcen, die für diesen Traffic erforderlich sind. CloudSearch überwacht dabei die CPU-Nutzung für alle Knoten im Cluster und fügt wenn nötig weitere Replikationen hinzu, um das Volumen des Traffics zu bedienen. Wenn der Traffic wieder fällt, wird CloudSearch automatisch nach unten skalieren und überflüssige Kapazitäten entfernen. Die automatische Skalierung in CloudSearch erfolgt nahtlos und erfordert keinerlei Aktion von Ihrer Seite. Sie senden einfach die Dokumente und Suchanfragen, CloudSearch verwaltet die erforderlichen Ressourcen.

Bei Apache Solr Cloud verwalten Sie Ihre eigenen Knoten, normalerweise mit einem zweiten Software-System wie Apache Zookeeper. Hierzu müssen Sie zuerst bestimmen, wie viele Knoten Sie benötigen, davon abhängig, wie viele Daten Sie haben und wie groß der jeweils für diese Daten erforderliche Index sein muss. Dann bestimmen Sie, wie viel Traffic bedient werden muss und schätzen die Kapazität, die jeder Knoten hierfür bietet. Die Knoten stellen Sie dann über XML-Dateien mit Hilfe von Apache Zookeeper bereit. In diesen XML-Dateien geben Sie an, wo die Daten aufbewahrt werden, wer den Traffic der Suchanfragen bedient und wie die Master- und Replikationsknoten konfiguriert werden sollen. Mit wachsendem Datenvolumen muss die Konfiguration des Clusters manuell angepasst werden, wiederum über XML. Dabei muss dann jeder Index muss neu erstellt und neu bereitgestellt werden. Jede Änderung an der Anzahl der Knoten im Cluster erfordert einen manuellen Eingriff und erneute Konfiguration.

Bei Solr Cloud ist man also selbst dafür verantwortlich, die Lösung zu überwachen, um sicherzustellen, dass a) ausreichend Ressourcen vorhanden sind und b) nicht zu viel Ressourcen verbraucht werden.  Gestützt auf die Überwachungsergebnisse muss man daher manuell sicherstellen, dass die Bereitstellung der Ressourcen korrekt ausbalanciert ist.

Der Hauptunterschied zwischen den beiden Ansätzen liegt also bei schnell skalierenden Anforderungen der Suchumgebung, oder bei schwer berechenbarer Suchlast, wie etwa bei großen E-Commerce-Websites, bei denen der Traffic je nach Tageszeit/Jahreszeit/aktuellen Kampagnen stark schwanken kann.  In solchen Fällen zeigt die automatische Skalierung bei Amazon CloudSearch ihren wahren Wert.  Für eine statische Website-Suche mit berechenbarem Traffic würde kein großer Unterschied zwischen den beiden Lösungen bestehen, sobald diese erst einmal konfiguriert sind.

 

Hohe Verfügbarkeit

Amazon CloudSearch bietet mehrere Funktionen, die Ihre Suchlösung vor Ausfällen schützen. Mit einer einzelnen AWS Verfügbarkeitszone (Availability Zone, AZ) kann CloudSearch Ausfälle einzelner oder mehrerer Knoten erkennen und die Ressourcen entsprechend wiederherstellen. Wenn ein Knoten ausfällt, kann CloudSearch den Index und die Updates für diesen Knoten automatisch wiederherstellen, da diese Indexe und Updates dauerhaft gespeichert vorliegen. 

Für noch höhere Verfügbarkeit bietet Amazon CloudSearch eine Multi-AZ-Funktion, die Ihre Domäne in zwei verschiedenen AZs repliziert. CloudSearch kümmert sich um Bereitstellung und Wartung der Hardware, Einsatz der Indexe, Verwaltung der Replikation von Updates, Lastausgleich für den Traffic und Ausfallsicherung für den Fall, dass ein einzelner Knoten oder eine Zone offline sein sollte.

Bei Solr Cloud sichert man die hohe Verfügbarkeit, indem man selbst manuell zusätzliche Knoten hinzufügt und verwaltet. Die Replikation der Updates wird durch die Konfiguration vorgenommen, die durch Zookeeper verwaltet wird.  Man sollte dabei aber beachten, dass, wenn die Anforderungen an die Suchressourcen sich ändern, auch die hohe Verfügbarkeit bei diesen Änderungen bedacht werden muss.

Weiterhin wird bei Solr Cloud ein integrierter Zookeeper mitgeliefert, was sich aber als Problem herausstellen kann, wenn eine Solr Cloud Lösung mit hoher Verfügbarkeit entwickelt werden soll, da dieser interne Zookeeper nicht so redundant sein wird wie die Lösung.  Daher ist es für Implementierungen von Solr Cloud mit hoher Verfügbarkeit empfohlen, einen externen Zookeeper einzurichten. Das ist in etwa so, wie wenn man mehrere Instanzen startet, aber so konfiguriert, dass sie einander kennen und miteinander kommunizieren, so dass im Falle eines Ausfalls die benötigte Mindestzahl Instanzen erhalten bleibt.

 

Suchfunktionen

Sowohl Amazon CloudSearch als auch Apache Solr bieten umfassende Suchfunktionen, wie etwa strukturierte Suche und Freitext-Suche, Facettenbildung, Hervorheben von Ergebnissen, Vorschläge für die Suche, benutzerdefinierbare Relevanz, Suche nach komplexen Ausdrücken, Abgleich schwammiger Phrasen, native Unterstützung mehrerer Sprachen und Hervorhebung von Begriffen. Das verwundert nicht, da sie beide auf der gleichen grundlegenden Suchtechnologie aufbauen, wobei CloudSearch jedoch über einige zusätzliche Funktionen verfügt, um die Kompatibilität zur vorangehenden A9-Suchmaschine zu gewährleisten.

 

Wartung & Support

Als vollständig verwalteter Dienst bietet CloudSearch eine automatische Softwareverwaltung. Ihre Suchdomäne ist immer auf dem neusten Stand hinsichtlich Bug Fixes und neuen Funktionen. Amazon bietet einen weltbekannten Support mit mehreren Stufen: Basic, Developer, Business und Enterprise.

Bei Solr Cloud ist alles ein selbstverwalteter Prozess. Als Open-Source-Produkt obliegt es dem Betreiber selbst, ob die aktuellsten Updates der Software eingeholt und eingesetzt werden. Man muss auch selbst herausfinden, ob nach diesen Änderungen eine Rückwärtskompatibilität noch gegeben ist.  Auch der Support obliegt dem Betreiber selbst, wenn Probleme auftreten muss man die Lösung selbst finden, wobei man auf die Hilfe durch die Open-Source-Community hoffen kann.

 

Wirtschaftlichkeit

Bei Amazon CloudSearch gibt es keine vorherigen Verpflichtungen und keine Einrichtungsgebühr. Die Lösung wird automatisch auf den benötigten Umfang angepasst, so dass die Kunden nur für die Nutzung der folgenden Punkte bezahlen:

  • Suchinstanzen
  • Hochladen von Dokumenten-Batches
  • Anfragen nach Dokumenten im Index
  • Datentransfer

Damit die Kunden ihre Kosten besser einschätzen können, bietet AWS einen einfachen Kostenrechner.

Auch bei Solr Cloud fallen keine Kosten für die Beschaffung der Software an, da diese Open-Source ist. Allerdings muss man die Zeit bedenken, die es kostet, die Lösung mit Solr Cloud zu konfigurieren und implementieren. Dieser Zeitbedarf wird voraussichtlich deutlich höher sein als bei CloudSearch, vor allem bei Lösungen mit hoher Verfügbarkeit und / oder großen Ansprüchen an die Skalierbarkeit.  Darüber hinaus wird auch die Bereitstellung der Ressourcen für Rechenleistung, Speicherplatz und Lastausgleich gewisse Investitionen erfordern, sofern Sie diese Leistungen nicht aus der Cloud beziehen.  Unabhängig davon, wie die Ressourcen bereitgestellt werden, werden auch potenziell zugängliche Kosten entstehen, wenn die Lösung nicht auf der angemessenen Größe gehalten wird, sowohl durch schlechte Reaktionszeiten, falls zu wenig Ressourcen vorhanden sind, als auch durch zusätzliche Kosten für unnötige Ressourcen bei einer Überversorgung.

 

Dokumentation

Für beide Produkte ist umfassende Dokumentation im Internet verfügbar, die URL für beide Produkte wird unten genannt.

 

Zusammenfassung

Amazon CloudSearch und Apache Solr Cloud bieten beide umfassende Funktionen und können eine herausragende Suche für Ihre Anwendung liefern. 

Bei CloudSearch haben Sie weniger verstückelte Software, die Sie separat verwalten und manuell konfigurieren müssen oder für die Sie eine Strategie für Replikation und hohe Verfügbarkeit entwickeln, Hardware bereitstellen, die Suchmaschine skalieren und ausgefallene Knoten wiederherstellen müssen. Bei Solr Cloud liegen alle diese Aufgaben in ihrer eigenen Verantwortung.

Außerdem wird die Umgebung in CloudSearch automatisch aktuell gehalten, Sie haben auch Zugang zu AWS Support auf Weltklasseniveau. Bei Solr Cloud müssen Sie Updates, Wartung und Support der Lösung selbst übernehmen.

0