Talk I gave on Elastic{ON} in Munich about the development of a search application at HolidayChek and which approches helped us to achieve a good search experience.
7. kurz
▪Schweizer Taschenmesser
▪gutes Werkzeug für viele Entwickler-Probleme
▪breite Kenntnis im Unternehmen
▪verschiedene Versionen nebeneinander zu betreiben ist
problematisch
▪möglichst früh und kontinuierlich updaten
7
Learnings
16. Search-API
▪ Endpoints für Produkte
▪ Mobile
▪iOS App
▪Android App
▪Web-Site
▪ API um Suchanfragen an Elasticsearch zu senden
▪ Query Preprocessing
16
29. zu lange Suchanfrage wird zurückgewiesen
http "http://m.holidaycheck.de/svc/search-api/buckets/x x
x x x x x x x x x x x x x x x x x x"
HTTP/1.1 400 Bad Request
Connection: keep-alive
Content-Length: 62
Content-Type: application/json; charset=UTF-8
Date: Thu, 22 Oct 2015 12:26:58 GMT
X-Trace-Token: fe71180598d3-15723
{
"error": "ValidationRejection(search term is too
long,None)."
}
30. 4.) Hotelketten + Ort
▪ Query: ibis münchen
▪ Anforderung: “<Hotellkette>
<Ort>” führt zu einem Suchergebnis
nur mit Hotels einer bestimmten Kette
▪ Lösung: Query Preprocessing
(Keyword Spotting)
30
31. Learnings
▪ Features in der Suche beeinflussen sich gegenseitig
▪ Gleiches Verhalten in Feature A kann nach Release von Feature B nicht
automatisch angenommen werden
▪ Wie kann man den Funktionalitätsverlust eines Features automatisiert
bemerken ?
▪ Wie kann man die Funktionalität eines Features “schützen” ?
31
Fragen
33. Was bringen Accuracy Tests ?
▪ Zusätzliche Sicherheit:
▪Deploy nothing that will decrease Quality
▪ Änderungen auf verschiedenen Ebenen fallen frühzeitig auf
▪ Querbeziehung/ Einflüsse von Features auf andere Features
frühzeitig erkennen
33
34. Was sind Accuracy Tests ?
▪ ähnlich zu Regressionstests
▪ nicht binär, prozentual
▪ quantitative Tests: Testen einer große Datenmenge vs. ein Beispiel
▪ funktionale / inhaltliche Tests
▪ selbst gesetzte SLAs für die Suchergebnisse
34
35. Voraussetzungen, Grundlagen
▪ die wichtigsten Daten abdecken
▪ “wichtig” definiert durch harte Kriterien (User Interactions)
▪ Quellen: Suche (innen), Google Analytics (außen)
▪ (ständiger Feedbackloop)
35
38. Definition Eines Accuracy Tests
▪ Für alle Suchen nach Destination
sollen bei den am häufigsten
gewählten Ergebnissen
mindestens 90% einen Hit im View-
Window 1-3 erscheinen
▪ X = Queries mit höchster Frequenz
▪ Y = Destination wurden gesucht
▪ Z = View Window 3
▪ Goal 90%
38
40. Einige Mögliche Testszenarien
▪ Auftrittshäufigkeit
▪ Umsatz (€€€)
▪ Frequenz / €€€
▪ Stabilität beim Tippen
▪ Beobachtete Usecases
▪ Gruppiert nach Typ (Hotel, Ort …)
▪ Kombinationen aus oben genanntem
40
41. Visualisierung mehrere Testläufe
▪ Testergebnisse werden nach ES
geschrieben
▪ Visualisierung mit Kibana
▪ Trends und Veränderungen
sichtbar machen
▪ für Stakeholder/ PO
41
43. Trigger / Anwendung
▪ lokale Entwicklung: Dev Done nur wenn alle Tests “grün” sind
▪Zielzustand im Accuracy Test definieren
▪run and code until green
▪ Update der ES-Indices: Deckt Änderungen in den Daten /
Umbenennungen auf (CI)
▪ Teil des Release-Prozesses: Release => test container on CI
with Production Data => deployment nur wenn Accuracy Tests erfüllt
(CI)
43
44. Learnings
▪ Daten aktualisieren
▪ Datenerstellung hat initiale Kosten
▪ Integration in den Development Prozess notwendig
▪ Tests haben meistens Recht : unerwartete Fehler werden aufgedeckt
▪ Tooling / Unterstützung der Entwickler notwendig um Akzeptanz zu erreichen
▪ Visualisierung hilfreich
▪ Gutes Medium um Requirements mit Stakeholdern abzustimmen
▪ => Speedup (PO kommt manchmal mit Stories nicht nach :)
44
46. Fazit
▪ Elasticsearch ist das perfekte Tool um eine Suchanwendung zu bauen
▪ Elasticsearch ist auch das perfekte Tool um Tools zu bauen, die bei der
Entwicklung und Optimierung einer Suchanwendung helfen.
▪ πάντα ῥεῖ
▪ Accuracy Tests and Feature Test:
▪wer nicht checkt, sucht dumm
46
47. get in contact
Mail : andreas.neumann@holidaycheck.com
Twitter handle: @andreas_neumann
48. Danke für die Aufmerksamkeit :) - Schon einen Urlaub gebucht ?