SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
mairdumont.com
ADAC Kartografie
Baedeker
DuMont
Falk
Kompass
Marco Polo
4trips.de
Baedeker.com
Discover-Outdoor.com
DuMontReise.de
Falk.de
Lonelyplanet.de
Kompass.de
Marcopolo.de
Stefan-Loose.de
Falk Mobile
Marco Polo Mobile
iPad Apps
iPhone Apps
Switch to Elastic Search
Mairdumont Digital 2014
mairdumont.com
Content
User
Technology
 Points of Interests (POI)
 Destinations
 Travel Content
 Photos / Videos
 Traveling Tours / Tracks
 Events
 Central Authentication Service
 User Profile
 User generated content
 Data Management
 High Performance SearchServices
mairdumont.com
Points of Interest
 Mehr als 5.5 Mio Master Records
 Mehr als 70 Mio related Records
von Partnern und Usern
 Contributions
 Kommentare
 Likes
 Votes
 Bilder
 Video
 Mehr als 1.8 Mio Bilder zu POIs
mairdumont.com
Reiseinformationen
 Mehr als 520,000 Destinationen weltweit,
organisiert im Destination Tree
 Typen von Destinationen:
■ Weltregionen (9),
■ Länder (218), Admin 1 Regionen (2943),
■ Orte (518,000)
■ Reisedestinationen (2300)
(z.B. Bodensee, Schwarzwald, Masuren, …)
 Travelcontent mit
mehr als 4,000 Destinationen mit
Beschreibungstexten und Tipps
aus den bekannten
Marco Polo Reiseführern
 Mehr als 48.000 Bilder zu Destinationen
 Mehr als 65,000 Events
wie Konzerte, Ausstellungen, Festivals etc.
mairdumont.com
Touren und Tracks
 ~ 1 Mio Tracks weltweit
 Geografische Suche
 Kategorien
■ Hiking, City Tours,
■ Mountainbike, Streetbike,
■ Inline Skating,
■ Jogging,
■ Motorbike, Auto
mairdumont.com
Partner Channel Customers
Lunchtime
mairdumont.com
Technologie
mairdumont.com
MD Content API Architektur mit Hibernate Search
 Glassfish 3.0.1
 Hibernate 3.6.0
 Hibernate-Search 3.3
 Lucene 3.0.2 (patched)
 13 Slaves, 1 Master
 Index Update ~ 1h
 POI Index: ~ 8 - 12 G
■ Optimize Index Process
■ High Network Traffic
mairdumont.com
MD Content API Architektur mit Hibernate Search
 Architekturelle Nachteile
■ Hibernate-Search führt zu einer engen Kopplung
von Programmcode und Indizierung
■ Optimierung von Suchen
ist aufwändig
mairdumont.com
Architectural Feeling
mairdumont.com
Architectural Feeling
Stable!
Yes, but…
Proven!
Scalable?
It depends on…
Really fast?
Yes, but…
Flexibility?
mairdumont.com
Ziele der Umstellung auf Elastic Search (ES)
Schnellere Suche
Optimale Verfügbarkeit (Indexverteilung)
Höhere Flexibilität und Skalierbarkeit
Höhere Ausfallsicherheit
mairdumont.com
Vorteile Elastic Search (ES)
 ES bietet einen einfacheren Betrieb des Clusters
mairdumont.com
Vorteile Elastic Search (ES)
 Flexibles Master-Slave Verhalten des ES Clusters
(Jeder Knoten kann die Master-Rolle übernehmen)
mairdumont.com
Vorteile Elastic Search (ES)
 Das Verteilen von Indexteilen (Shards) auf mehrere
Knoten übernimmt das Search-Framework
selbständig
mairdumont.com
Vorteile Elastic Search (ES)
 Einfache Erweiterung des Clusters um neue Knoten
mairdumont.com
Vorteile Elastic Search (ES)
 Alle Objektinformationen werden im Search-
Framework vorgehalten,
 Suchergebnisse (POI, Destination, Event, etc.) können
ohne Datenbank-Zugriff ausgeliefert werden
 ES sorgt für die Trennung von Mapping-
Informationen / Entitäten
 ES bietet eine Pluginschnittstelle an
z.B. für die direkte Anbindung an eine
relationale Datenquelle
mairdumont.com
Der Plan
 Beibehaltung der Schichten Web-
Services und Service-Facade
 Anpassung der Service-Objekte
 Beibehaltung PostgreSQL
 Über River werden Änderungen
(CRUD) in der Datenbank ermittelt
und in die ES-Indizes übernommen.
 Entkopplung der Objekte POI und
Destination, lose Kopplung über
geografische Informationen (Umkreis,
BoundingBox, Polygon)
 Aufbau eines Messframeworks und
spezifischer Messpunkte in der
Applikation über UDP-Unicast
 Polygon-Berechnung für alle
bestehende City-Destinationen aus
POI-Informationen
mairdumont.com
How the development team feels.
mairdumont.com
Lesson 1 – Focus the most critical parts first
 Das SQL-Statement (mit vielen JOINs) erwies sich bei der Ausführung als zu langsam
 komplexe SQL-Statements sind zudem fehleranfällig und unübersichtlich
 Die Indexbeladung erfolgt direkt aus der Applikation heraus.
 Dazu verwenden wir POJOs, die in ihrer Struktur den Indizes entsprechen, und wandeln
diese mit GSON für die Indizierung über den BulkProcessor nach JSON um.
mairdumont.com
Lesson 2 – Sizing mit realen Daten
 Hat ElasticSearch nicht genug Hauptspeicher, so werden Abfragen signifikant
verlangsamt
 „It is what it is: a in-memory-database“
 Facetten, gecachte Filter, usw. brauchen zusätzlichen Speicher zur Laufzeit.
 Beispiel Elastic Search Cluster:
Hardware
8 ES-Server
32 GB RAM
8 Kerne
POI Index
22 GB
74 Mio Dokumente
4 Replica pro Shard (88 GB)
8 Shards (~ 3GB)
Cache
Filter (~ 3 GB)
Field (~ 1 GB)
mairdumont.com
mairdumont.com
Lesson 3 – Inspect and adapt
Nested
 Pro:
■ Nested Docs werden im selben
Lucene Block abgelegt
■ Lese / Query Performance besser
als bei Parent / Child
 Con:
■ Update erfolgt auf dem gesamten
Objekt (parent und nested
children)
■ Daten sollten sich nicht oft ändern
Parent / Child
 Pro:
■ Child-Docs werden separat vom
parent gespeichert (selber Shard)
■ Updates auf Einzeldokumenten
■ “Joins” sind möglich
 Con:
■ Schlechtere Lese / Query
Performance
■ Memory overhead (Join list)
■ Sorting / Scoring ist schwieriger
(hängt vom Anwendungsfall ab)
http://www.elasticsearch.org/blog/managing-relations-inside-elasticsearch/
mairdumont.com
Lesson 3 – Inspect and adapt
 „Folge dem Plan“ hat seine Grenzen
 „It works!“ beats „graceful architecture“
 Komplexe Datenstrukturen & komplexe Sichtbarkeiten
■ Parent-Child beste Struktur für „Joins“
■ erwies sich als deutlich zu langsam.
■ Speicherverbrauch und CPU-Last waren deutlich höher als vergleichbare Ansätze
mit Nested documents.
 Entscheidung:
■ Umstellung von Parent-Child auf Nested Documents
■ Nachteil: Gesamtes Nested Objekt wird geladen
▪ separate Prüfung von Channel und Visibility in der Applikation
■ Teilweiser Verzicht auf Nested  Verlust der Eindeutigkeit in den Treffern
 Performancegewinn: Faktor 8-10
mairdumont.com
Lesson 4 – Use Filter (if possible)
Einschränkung über ein Feld
{
"query":{
"term:{
{field-name}: {value}
}
}
}
High performance equivalent using filters
{
"query”{
"filtered": {
"query": {"match_all": {}},
"filter": {
"term": {
{field-name}: {value}
}
}
}
}
}
}
Pro:
 Deutlich schneller als Field Queries
durch Filter-Cache
 Add more RAM
Con:
 Kein Scoring
mairdumont.com
Bigdesk – Live View
mairdumont.com
mairdumont.com
Lesson 4 – Create a update strategy for your application
 Eine neue Version der Such-Applikation
■ anzupassende Indexstruktur,
■ im laufenden Betrieb – kein Maintenance Mode möglich
 Lösung:
■ Zugriff auf unsere Indizes (POI, Destination, Media, …) über Aliase regeln.
■ Vorteil:
▪ Bei Indexänderungen kann der neue Index im Hintergrund beladen werden
▪ Anschließend das entsprechende Alias vom alten zum neuen Index umhängen
mairdumont.com
Lesson 4: Use Index-Aliases
mairdumont.com
Lesson 5 – Visualisiere Ergebnisse
 Erstelle ein einfach zu benutzendes GUI
■ Höhere Benutzungshäufigkeit
■ „Gefühlte“ Performance ist im Fokus
■ Wenn hier langsam, sind Performance-Tests auch langsam
mairdumont.com
Lesson 6 – Give performance a value
 Versuche nicht, auf größtmögliche Performance zu optimieren
 Klare Wertvorgaben geben den handelnden Personen ein Ziel
 Beispiel:
■ Ziel:
BoundingBox Suche mit 80 POI-Ergebnissen < 500ms
■ Noch akzeptabel:
BoundingBox Suche mit 80 POI-Ergebnissen < 800ms
mairdumont.com
mairdumont.com
mairdumont.com
Lesson 7 – Keep it simple (KIS)
Erkenntnis
■ Datengrundlage für diesen
Zweck nicht ausreichend
Lösung:
■ Destination ohne Polygon
 Umkreissuche
■ Keine komplexen
Algorithmen
Plan: Ständig besser werden
mairdumont.com
Lesson 8 – Optimizing last
Beispiel Polygonsuchen
 2 Standardverfahren
■ geo polygon filter
■ geo shape type +
geo_shape Filter oder
geo_shape Query
 Erkenntnis
■ Filter zur Polygonsuche werden
wohl nicht gecached
■ GeoShape-Suchen haben
leicht schlechtere Performance
 Verfolge den Standard
 Evaluiere Alternativen
 Optimiere den am besten funktionierenden Standard
mairdumont.com
Lesson 8 – Optimizing last
Beispiel Polygonsuchen
 Optimierung Geo-Polygon-Filter
■ Verzichte auf Genauigkeit
(wenn möglich im km-Bereich)
■ Einfügen eines BoundingBox-
Filters vor dem Polygon-Filter
hilft
■ Der Polygon-Filter sollte immer
am Ende der Filterkette
angefügt werden
 Verfolge den Standard
 Evaluiere Alternativen
 Optimiere den am besten funktionierenden Standard
mairdumont.com
Node-Client
 Pro:
■ deutlich schneller
(Ø ca. 60 ms pro Anfrage)
■ Zusammenführen im Node-Client
Weniger Kommunikationsschritte
 Con:
■ Bidirektionale Verbindungen müssen in
Firewalls beachtet werden
■ Höherer Verwaltungsaufwand im Cluster
Lesson 8 – Optimizing last / Example II
Transport-Client
 Pro:
 Kein Rückkanal
 Client ist nicht Teil des Clusters
 Con:
 Zusammenführen im Cluster
 CPU Last im Cluster höher
 Zusätzlicher Kommunikationsschritt
mairdumont.com
Lesson 9: ZDF
mairdumont.com
Lesson 9: ZDF
mairdumont.com
Lesson 9: ZDF
mairdumont.com
Lesson 10 – stay up-to-date
 Beobachte Framework Lifecycle
 Update von Elastic Search 0.20 auf 0.90 führte zu Verbesserung
■ Speicherverbrauch von ES wurde deutlich verringert
■ Profitieren von neuen Features (sort auf Feldern eines nested object)
 Update von Elastic Search 0.90 auf 0.90.5
■ Bugfix in Elastic Search
 Glassfish 3.0.1 auf Glassfish 3.1.2.x
■ Aktuellere abhängige Komponenten
■ Stabilität, Performance
■ Aktuell: Analyse Glassfish 4
 Buche ein Elastic Search Training
 Hol dir Unterstützung von Experten
 Behalte deine Kunden im Auge
mairdumont.com
One More Thing
mairdumont.com
Lesson 11 – Do some cool stuff
mairdumont.com
Lesson 11 – One More Thing
mairdumont.com
mairdumont.com
ADAC Kartografie
Baedeker
DuMont
Falk
Kompass
Marco Polo
4trips.de
Baedeker.com
Discover-Outdoor.com
DuMontReise.de
Falk.de
Lonelyplanet.de
Kompass.de
Marcopolo.de
Stefan-Loose.de
Falk Mobile
Marco Polo Mobile
iPad Apps
iPhone Apps
Credits:
Ralf Beutler
r.beutler@mairdumont.com
https://www.xing.com/profile/Ralf_Beutler
https://www.google.com/+RalfBeutler
https://confluence.mairdumont.com/confluence/display/
ON/Online-Dokumentation
http://www.widas.de/
http://www.elasticsearch.org/

Mais conteúdo relacionado

Destaque

AgLdrTechGPSReceiver
AgLdrTechGPSReceiverAgLdrTechGPSReceiver
AgLdrTechGPSReceiverJan Leslie
 
BODEGA SINFIN ARTE
BODEGA SINFIN ARTEBODEGA SINFIN ARTE
BODEGA SINFIN ARTEmellicapo
 
Was Wertschätzung mit Shitstorms zu tun haben
Was Wertschätzung mit Shitstorms zu tun habenWas Wertschätzung mit Shitstorms zu tun haben
Was Wertschätzung mit Shitstorms zu tun habenScribbleLive
 
Ap unternehmensdarstellung quer_2014_web
Ap unternehmensdarstellung quer_2014_webAp unternehmensdarstellung quer_2014_web
Ap unternehmensdarstellung quer_2014_webMichael Apenberg
 
ZEHA Berlin und friendticker auf dem 19. Twittwoch zu Berlin
ZEHA Berlin und friendticker auf dem 19. Twittwoch zu BerlinZEHA Berlin und friendticker auf dem 19. Twittwoch zu Berlin
ZEHA Berlin und friendticker auf dem 19. Twittwoch zu BerlinTwittwoch e.V.
 
DIGITAL SKETCHFOLIO Tim Van Ransbeeck - Antwerp Factory
DIGITAL SKETCHFOLIO Tim Van Ransbeeck - Antwerp FactoryDIGITAL SKETCHFOLIO Tim Van Ransbeeck - Antwerp Factory
DIGITAL SKETCHFOLIO Tim Van Ransbeeck - Antwerp FactoryTim Van Ransbeeck
 
Agile, Mobile und UX - Die Win3 Konstellation
Agile, Mobile und UX - Die Win3 KonstellationAgile, Mobile und UX - Die Win3 Konstellation
Agile, Mobile und UX - Die Win3 KonstellationFabian Hennecke
 

Destaque (19)

AgLdrTechGPSReceiver
AgLdrTechGPSReceiverAgLdrTechGPSReceiver
AgLdrTechGPSReceiver
 
Informationskompetenz
InformationskompetenzInformationskompetenz
Informationskompetenz
 
Deberes 2014
Deberes 2014Deberes 2014
Deberes 2014
 
BODEGA SINFIN ARTE
BODEGA SINFIN ARTEBODEGA SINFIN ARTE
BODEGA SINFIN ARTE
 
Lisbon
LisbonLisbon
Lisbon
 
Hyper-Chronoskop
Hyper-ChronoskopHyper-Chronoskop
Hyper-Chronoskop
 
Tagging - ein sozialer Tag-Traum?
Tagging - ein sozialer Tag-Traum?Tagging - ein sozialer Tag-Traum?
Tagging - ein sozialer Tag-Traum?
 
Was Wertschätzung mit Shitstorms zu tun haben
Was Wertschätzung mit Shitstorms zu tun habenWas Wertschätzung mit Shitstorms zu tun haben
Was Wertschätzung mit Shitstorms zu tun haben
 
Ap unternehmensdarstellung quer_2014_web
Ap unternehmensdarstellung quer_2014_webAp unternehmensdarstellung quer_2014_web
Ap unternehmensdarstellung quer_2014_web
 
ZEHA Berlin und friendticker auf dem 19. Twittwoch zu Berlin
ZEHA Berlin und friendticker auf dem 19. Twittwoch zu BerlinZEHA Berlin und friendticker auf dem 19. Twittwoch zu Berlin
ZEHA Berlin und friendticker auf dem 19. Twittwoch zu Berlin
 
Christian stärkle
Christian stärkleChristian stärkle
Christian stärkle
 
ELMER B
ELMER BELMER B
ELMER B
 
DIGITAL SKETCHFOLIO Tim Van Ransbeeck - Antwerp Factory
DIGITAL SKETCHFOLIO Tim Van Ransbeeck - Antwerp FactoryDIGITAL SKETCHFOLIO Tim Van Ransbeeck - Antwerp Factory
DIGITAL SKETCHFOLIO Tim Van Ransbeeck - Antwerp Factory
 
SPOONFED
SPOONFEDSPOONFED
SPOONFED
 
Pemerintah kab. wajo
Pemerintah kab. wajoPemerintah kab. wajo
Pemerintah kab. wajo
 
Agile, Mobile und UX - Die Win3 Konstellation
Agile, Mobile und UX - Die Win3 KonstellationAgile, Mobile und UX - Die Win3 Konstellation
Agile, Mobile und UX - Die Win3 Konstellation
 
Stephan huber
Stephan huberStephan huber
Stephan huber
 
Pemerintah kab. bone
Pemerintah kab. bonePemerintah kab. bone
Pemerintah kab. bone
 
Dorothea Utzt
Dorothea UtztDorothea Utzt
Dorothea Utzt
 

Semelhante a MairDumont Switch to Elasticsearch

Personalisierung
PersonalisierungPersonalisierung
PersonalisierungUdo Ornik
 
Google Analytics & Seo @seosixt wiesn 2014
Google Analytics & Seo @seosixt wiesn 2014Google Analytics & Seo @seosixt wiesn 2014
Google Analytics & Seo @seosixt wiesn 2014121WATT GmbH
 
Pandas und matplotlib im praktischen Einsatz
Pandas und matplotlib im praktischen EinsatzPandas und matplotlib im praktischen Einsatz
Pandas und matplotlib im praktischen EinsatzThomas Koch
 
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenDBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenGunther Pippèrr
 
OMWest Barcamp 2018: Onpage SEO im Griff: Alerting und Monitoring für SEOs
OMWest Barcamp 2018: Onpage SEO im Griff: Alerting und Monitoring für SEOsOMWest Barcamp 2018: Onpage SEO im Griff: Alerting und Monitoring für SEOs
OMWest Barcamp 2018: Onpage SEO im Griff: Alerting und Monitoring für SEOsget traction GmbH
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsUlrich Schmidt
 
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...OPITZ CONSULTING Deutschland
 
Infopark CMS Fiona mit Ruby on Rails
Infopark CMS Fiona mit Ruby on RailsInfopark CMS Fiona mit Ruby on Rails
Infopark CMS Fiona mit Ruby on RailsJustRelate
 
Datenqualität von Datenportalen
Datenqualität von DatenportalenDatenqualität von Datenportalen
Datenqualität von DatenportalenJohann Höchtl
 
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...e-dialog GmbH
 
Mobile Quality Night Vienna 2015 - Usecon mobile experience
 Mobile Quality Night Vienna 2015 -   Usecon mobile experience Mobile Quality Night Vienna 2015 -   Usecon mobile experience
Mobile Quality Night Vienna 2015 - Usecon mobile experienceRudolf Grötz
 
Legacy Code refaktorisieren
Legacy Code refaktorisierenLegacy Code refaktorisieren
Legacy Code refaktorisierenHendrik Lösch
 
OPAL - Open Data Portal Germany
OPAL - Open Data Portal GermanyOPAL - Open Data Portal Germany
OPAL - Open Data Portal Germanyadrianwilke
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Marc Müller
 
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Markus Flechtner
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurtdasjo
 

Semelhante a MairDumont Switch to Elasticsearch (20)

Personalisierung
PersonalisierungPersonalisierung
Personalisierung
 
Google Analytics & Seo @seosixt wiesn 2014
Google Analytics & Seo @seosixt wiesn 2014Google Analytics & Seo @seosixt wiesn 2014
Google Analytics & Seo @seosixt wiesn 2014
 
UBA Data Cube
UBA Data CubeUBA Data Cube
UBA Data Cube
 
Pandas und matplotlib im praktischen Einsatz
Pandas und matplotlib im praktischen EinsatzPandas und matplotlib im praktischen Einsatz
Pandas und matplotlib im praktischen Einsatz
 
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysierenDBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
DBSAT – Die Oracle DATENBANK bzgl. PII Daten analysieren
 
OMWest Barcamp 2018: Onpage SEO im Griff: Alerting und Monitoring für SEOs
OMWest Barcamp 2018: Onpage SEO im Griff: Alerting und Monitoring für SEOsOMWest Barcamp 2018: Onpage SEO im Griff: Alerting und Monitoring für SEOs
OMWest Barcamp 2018: Onpage SEO im Griff: Alerting und Monitoring für SEOs
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
 
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
 
Infopark CMS Fiona mit Ruby on Rails
Infopark CMS Fiona mit Ruby on RailsInfopark CMS Fiona mit Ruby on Rails
Infopark CMS Fiona mit Ruby on Rails
 
ZPS nach 16 Sprints
ZPS nach 16 SprintsZPS nach 16 Sprints
ZPS nach 16 Sprints
 
Datenqualität von Datenportalen
Datenqualität von DatenportalenDatenqualität von Datenportalen
Datenqualität von Datenportalen
 
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
 
Mobile Quality Night Vienna 2015 - Usecon mobile experience
 Mobile Quality Night Vienna 2015 -   Usecon mobile experience Mobile Quality Night Vienna 2015 -   Usecon mobile experience
Mobile Quality Night Vienna 2015 - Usecon mobile experience
 
Legacy Code refaktorisieren
Legacy Code refaktorisierenLegacy Code refaktorisieren
Legacy Code refaktorisieren
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
OPAL - Open Data Portal Germany
OPAL - Open Data Portal GermanyOPAL - Open Data Portal Germany
OPAL - Open Data Portal Germany
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
 
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
Die Datenbank ist nicht immer Schuld - Gründe warum Datenbank-Migration schei...
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurt
 

MairDumont Switch to Elasticsearch

  • 2. mairdumont.com Content User Technology  Points of Interests (POI)  Destinations  Travel Content  Photos / Videos  Traveling Tours / Tracks  Events  Central Authentication Service  User Profile  User generated content  Data Management  High Performance SearchServices
  • 3. mairdumont.com Points of Interest  Mehr als 5.5 Mio Master Records  Mehr als 70 Mio related Records von Partnern und Usern  Contributions  Kommentare  Likes  Votes  Bilder  Video  Mehr als 1.8 Mio Bilder zu POIs
  • 4. mairdumont.com Reiseinformationen  Mehr als 520,000 Destinationen weltweit, organisiert im Destination Tree  Typen von Destinationen: ■ Weltregionen (9), ■ Länder (218), Admin 1 Regionen (2943), ■ Orte (518,000) ■ Reisedestinationen (2300) (z.B. Bodensee, Schwarzwald, Masuren, …)  Travelcontent mit mehr als 4,000 Destinationen mit Beschreibungstexten und Tipps aus den bekannten Marco Polo Reiseführern  Mehr als 48.000 Bilder zu Destinationen  Mehr als 65,000 Events wie Konzerte, Ausstellungen, Festivals etc.
  • 5. mairdumont.com Touren und Tracks  ~ 1 Mio Tracks weltweit  Geografische Suche  Kategorien ■ Hiking, City Tours, ■ Mountainbike, Streetbike, ■ Inline Skating, ■ Jogging, ■ Motorbike, Auto
  • 8. mairdumont.com MD Content API Architektur mit Hibernate Search  Glassfish 3.0.1  Hibernate 3.6.0  Hibernate-Search 3.3  Lucene 3.0.2 (patched)  13 Slaves, 1 Master  Index Update ~ 1h  POI Index: ~ 8 - 12 G ■ Optimize Index Process ■ High Network Traffic
  • 9. mairdumont.com MD Content API Architektur mit Hibernate Search  Architekturelle Nachteile ■ Hibernate-Search führt zu einer engen Kopplung von Programmcode und Indizierung ■ Optimierung von Suchen ist aufwändig
  • 11. mairdumont.com Architectural Feeling Stable! Yes, but… Proven! Scalable? It depends on… Really fast? Yes, but… Flexibility?
  • 12. mairdumont.com Ziele der Umstellung auf Elastic Search (ES) Schnellere Suche Optimale Verfügbarkeit (Indexverteilung) Höhere Flexibilität und Skalierbarkeit Höhere Ausfallsicherheit
  • 13. mairdumont.com Vorteile Elastic Search (ES)  ES bietet einen einfacheren Betrieb des Clusters
  • 14. mairdumont.com Vorteile Elastic Search (ES)  Flexibles Master-Slave Verhalten des ES Clusters (Jeder Knoten kann die Master-Rolle übernehmen)
  • 15. mairdumont.com Vorteile Elastic Search (ES)  Das Verteilen von Indexteilen (Shards) auf mehrere Knoten übernimmt das Search-Framework selbständig
  • 16. mairdumont.com Vorteile Elastic Search (ES)  Einfache Erweiterung des Clusters um neue Knoten
  • 17. mairdumont.com Vorteile Elastic Search (ES)  Alle Objektinformationen werden im Search- Framework vorgehalten,  Suchergebnisse (POI, Destination, Event, etc.) können ohne Datenbank-Zugriff ausgeliefert werden  ES sorgt für die Trennung von Mapping- Informationen / Entitäten  ES bietet eine Pluginschnittstelle an z.B. für die direkte Anbindung an eine relationale Datenquelle
  • 18. mairdumont.com Der Plan  Beibehaltung der Schichten Web- Services und Service-Facade  Anpassung der Service-Objekte  Beibehaltung PostgreSQL  Über River werden Änderungen (CRUD) in der Datenbank ermittelt und in die ES-Indizes übernommen.  Entkopplung der Objekte POI und Destination, lose Kopplung über geografische Informationen (Umkreis, BoundingBox, Polygon)  Aufbau eines Messframeworks und spezifischer Messpunkte in der Applikation über UDP-Unicast  Polygon-Berechnung für alle bestehende City-Destinationen aus POI-Informationen
  • 20. mairdumont.com Lesson 1 – Focus the most critical parts first  Das SQL-Statement (mit vielen JOINs) erwies sich bei der Ausführung als zu langsam  komplexe SQL-Statements sind zudem fehleranfällig und unübersichtlich  Die Indexbeladung erfolgt direkt aus der Applikation heraus.  Dazu verwenden wir POJOs, die in ihrer Struktur den Indizes entsprechen, und wandeln diese mit GSON für die Indizierung über den BulkProcessor nach JSON um.
  • 21. mairdumont.com Lesson 2 – Sizing mit realen Daten  Hat ElasticSearch nicht genug Hauptspeicher, so werden Abfragen signifikant verlangsamt  „It is what it is: a in-memory-database“  Facetten, gecachte Filter, usw. brauchen zusätzlichen Speicher zur Laufzeit.  Beispiel Elastic Search Cluster: Hardware 8 ES-Server 32 GB RAM 8 Kerne POI Index 22 GB 74 Mio Dokumente 4 Replica pro Shard (88 GB) 8 Shards (~ 3GB) Cache Filter (~ 3 GB) Field (~ 1 GB)
  • 23. mairdumont.com Lesson 3 – Inspect and adapt Nested  Pro: ■ Nested Docs werden im selben Lucene Block abgelegt ■ Lese / Query Performance besser als bei Parent / Child  Con: ■ Update erfolgt auf dem gesamten Objekt (parent und nested children) ■ Daten sollten sich nicht oft ändern Parent / Child  Pro: ■ Child-Docs werden separat vom parent gespeichert (selber Shard) ■ Updates auf Einzeldokumenten ■ “Joins” sind möglich  Con: ■ Schlechtere Lese / Query Performance ■ Memory overhead (Join list) ■ Sorting / Scoring ist schwieriger (hängt vom Anwendungsfall ab) http://www.elasticsearch.org/blog/managing-relations-inside-elasticsearch/
  • 24. mairdumont.com Lesson 3 – Inspect and adapt  „Folge dem Plan“ hat seine Grenzen  „It works!“ beats „graceful architecture“  Komplexe Datenstrukturen & komplexe Sichtbarkeiten ■ Parent-Child beste Struktur für „Joins“ ■ erwies sich als deutlich zu langsam. ■ Speicherverbrauch und CPU-Last waren deutlich höher als vergleichbare Ansätze mit Nested documents.  Entscheidung: ■ Umstellung von Parent-Child auf Nested Documents ■ Nachteil: Gesamtes Nested Objekt wird geladen ▪ separate Prüfung von Channel und Visibility in der Applikation ■ Teilweiser Verzicht auf Nested  Verlust der Eindeutigkeit in den Treffern  Performancegewinn: Faktor 8-10
  • 25. mairdumont.com Lesson 4 – Use Filter (if possible) Einschränkung über ein Feld { "query":{ "term:{ {field-name}: {value} } } } High performance equivalent using filters { "query”{ "filtered": { "query": {"match_all": {}}, "filter": { "term": { {field-name}: {value} } } } } } } Pro:  Deutlich schneller als Field Queries durch Filter-Cache  Add more RAM Con:  Kein Scoring
  • 28. mairdumont.com Lesson 4 – Create a update strategy for your application  Eine neue Version der Such-Applikation ■ anzupassende Indexstruktur, ■ im laufenden Betrieb – kein Maintenance Mode möglich  Lösung: ■ Zugriff auf unsere Indizes (POI, Destination, Media, …) über Aliase regeln. ■ Vorteil: ▪ Bei Indexänderungen kann der neue Index im Hintergrund beladen werden ▪ Anschließend das entsprechende Alias vom alten zum neuen Index umhängen
  • 30. mairdumont.com Lesson 5 – Visualisiere Ergebnisse  Erstelle ein einfach zu benutzendes GUI ■ Höhere Benutzungshäufigkeit ■ „Gefühlte“ Performance ist im Fokus ■ Wenn hier langsam, sind Performance-Tests auch langsam
  • 31. mairdumont.com Lesson 6 – Give performance a value  Versuche nicht, auf größtmögliche Performance zu optimieren  Klare Wertvorgaben geben den handelnden Personen ein Ziel  Beispiel: ■ Ziel: BoundingBox Suche mit 80 POI-Ergebnissen < 500ms ■ Noch akzeptabel: BoundingBox Suche mit 80 POI-Ergebnissen < 800ms
  • 34. mairdumont.com Lesson 7 – Keep it simple (KIS) Erkenntnis ■ Datengrundlage für diesen Zweck nicht ausreichend Lösung: ■ Destination ohne Polygon  Umkreissuche ■ Keine komplexen Algorithmen Plan: Ständig besser werden
  • 35. mairdumont.com Lesson 8 – Optimizing last Beispiel Polygonsuchen  2 Standardverfahren ■ geo polygon filter ■ geo shape type + geo_shape Filter oder geo_shape Query  Erkenntnis ■ Filter zur Polygonsuche werden wohl nicht gecached ■ GeoShape-Suchen haben leicht schlechtere Performance  Verfolge den Standard  Evaluiere Alternativen  Optimiere den am besten funktionierenden Standard
  • 36. mairdumont.com Lesson 8 – Optimizing last Beispiel Polygonsuchen  Optimierung Geo-Polygon-Filter ■ Verzichte auf Genauigkeit (wenn möglich im km-Bereich) ■ Einfügen eines BoundingBox- Filters vor dem Polygon-Filter hilft ■ Der Polygon-Filter sollte immer am Ende der Filterkette angefügt werden  Verfolge den Standard  Evaluiere Alternativen  Optimiere den am besten funktionierenden Standard
  • 37. mairdumont.com Node-Client  Pro: ■ deutlich schneller (Ø ca. 60 ms pro Anfrage) ■ Zusammenführen im Node-Client Weniger Kommunikationsschritte  Con: ■ Bidirektionale Verbindungen müssen in Firewalls beachtet werden ■ Höherer Verwaltungsaufwand im Cluster Lesson 8 – Optimizing last / Example II Transport-Client  Pro:  Kein Rückkanal  Client ist nicht Teil des Clusters  Con:  Zusammenführen im Cluster  CPU Last im Cluster höher  Zusätzlicher Kommunikationsschritt
  • 41. mairdumont.com Lesson 10 – stay up-to-date  Beobachte Framework Lifecycle  Update von Elastic Search 0.20 auf 0.90 führte zu Verbesserung ■ Speicherverbrauch von ES wurde deutlich verringert ■ Profitieren von neuen Features (sort auf Feldern eines nested object)  Update von Elastic Search 0.90 auf 0.90.5 ■ Bugfix in Elastic Search  Glassfish 3.0.1 auf Glassfish 3.1.2.x ■ Aktuellere abhängige Komponenten ■ Stabilität, Performance ■ Aktuell: Analyse Glassfish 4  Buche ein Elastic Search Training  Hol dir Unterstützung von Experten  Behalte deine Kunden im Auge
  • 43. mairdumont.com Lesson 11 – Do some cool stuff
  • 46. mairdumont.com ADAC Kartografie Baedeker DuMont Falk Kompass Marco Polo 4trips.de Baedeker.com Discover-Outdoor.com DuMontReise.de Falk.de Lonelyplanet.de Kompass.de Marcopolo.de Stefan-Loose.de Falk Mobile Marco Polo Mobile iPad Apps iPhone Apps Credits: Ralf Beutler r.beutler@mairdumont.com https://www.xing.com/profile/Ralf_Beutler https://www.google.com/+RalfBeutler https://confluence.mairdumont.com/confluence/display/ ON/Online-Dokumentation http://www.widas.de/ http://www.elasticsearch.org/