Voor een bedrijf als Uber is real-time data de levensader van zowel hun klantgerichte als interne diensten. Klanten vertrouwen op real-time data om reizen te regelen en eten te bestellen op hun gemak. Interne teams zijn ook afhankelijk van actuele data om de infrastructuur achter hun klantgerichte applicaties te ondersteunen, zoals voor hun eigen huisapplicatie die mobiele app-crash-analyses monitort.
Uber is overgestapt op Apache Pinot om deze eigen huisapplicatie te ondersteunen en heeft aanzienlijke verbeteringen gezien in vergelijking met hun vorige analytics-engine (Elasticsearch). Door over te stappen op Pinot, een echt real-time analytics-platform, heeft Uber voordelen gezien, waaronder:
- 70% kostenbesparing op infrastructuur (een besparing van meer dan $2M per jaar)
- 80% vermindering van CPU-kernen
- 66% verkleining van het databeleid
- 64% vermindering van de paginalaadtijden (van 14 seconden naar minder dan 5 seconden)
- Verlaging van de opnamevertraging naar <10 milliseconden
- Afname van query-timeouts en eliminatie van het gegevensverliesprobleem
Bekijk nu
De inhoud van deze blog is gebaseerd op een in persoon gehouden bijeenkomst met verhalen van Apache Pinot-gebruikers. We verwijzen ook naar een blog van Uber’s engineering team waarin wordt beschreven hoe ze Pinot gebruiken om real-time analytics te leveren voor mobiele app-crashes. Bekijk de bijeenkomst hier:
Of lees verder om te ontdekken hoe Uber deze resultaten heeft behaald met Apache Pinot.
Hoe Uber Real-Time Analytics levert op Mobiele App Crashes
Uber heeft een geautomatiseerde innamepijplijn die app-crashes volgt en onderzoeksgegevens verzamelt. Een deel van deze gegevens wordt in Apache Flink ingevoerd voor transformaties, die vervolgens weer in Kafka-onderwerpen worden geplaatst voor downstreamverbruik. Deze rauwe en bewerkte gebeurtenissen in Kafka worden vervolgens door Apache Pinot geconsumeerd, waarna analytische query’s worden uitgevoerd waarvan de resultaten worden geleverd aan interne gebruikers via Grafana en interne visualisatietools. Hun pijplijn neemt zowel realtime- als offlinegegevens (niet weergegeven) op om een volledig beeld van gebruikers te creëren, bekend als hybride tabellen in Apache Pinot.
Real-Time App Crash Analytics With Apache Pinot
Uber implementeert ongeveer 11.000 nieuwe code- en infrastructuurwijzigingen per week en vertrouwt op een eigen ontwikkelde tool (Healthline) om crashproblemen te detecteren en op te lossen. Healthline stelt Uber in staat beter te meten en te voldoen aan de Mean Time To Detect (MTTD). Bijvoorbeeld, ze kunnen een nieuw functie lanceren die onverwachte app-crashes veroorzaakt en snel de bron van de crashes moeten kunnen aanpakken door in de crashgegevens te graven.
Het dashboard hieronder toont een week aan crashgegevens voor één mobiele app en één versie van het besturingssysteem. In dit voorbeeld vinden sessiegebeurtenissen tot wel honderdduizenden keren per seconde plaats en de crashes meten tussen de 15.000 en 20.000 gebeurtenissen per seconde. Uber combineert deze metrieken om de fatalfreeratio te berekenen, die aangeeft hoe gezond de applicatie is (het doel is zo dicht mogelijk bij 100% te zijn).
Met Elasticsearch, een algemeen zoekmachine, zorgden pieken in crash-snelheden voor vertraging in opname en vertraagden het team’s reactie op het identificeren van problemen. Door over te stappen op Apache Pinot, dat specifiek is ontworpen voor realtime analyse op een enorm schaal, heeft het team een afname gezien in zowel het aantal als de ernst van opnamevertragingen.
Diepgaand Crashenalyse
Naast het overzicht van crashgegevens biedt Uber ook diepgaande analyse op crashniveau. Ze verzamelen crashmetrieken over verschillende dimensies zoals het aantal crashes per besturingssysteem en per versie, en de verdeling van crashes per versie. Deze use case maakt gebruik van verschillende Pinot-indexen (range, omgekeerd en tekst) om te delen wanneer een bepaald type crash heeft plaatsgevonden, welke versies zijn beïnvloed, het aantal voorkomens en het aantal gebruikers en apparaten dat is aangetast.
Voor de diepgaande analyse was het cruciaal dat Uber tekstzoekmogelijkheden had om crashfoutberichten te lezen. De tekstindex van Pinot is gebouwd op basis van Lucene en geeft hen de mogelijkheid om crashes te zoeken op basis van crashbericht, classnaam, stacktrace en meer.
Sessies op schaal meten
Uber gebruikt ook Pinot om unieke sessies per apparaat, versie, besturingssysteem en uur op schaal te meten. Pinot biedt realtime verwerking met hoge doorvoer, in staat om Uber’s 300.000 analytische gebeurtenissen per seconde op te nemen. Het team heeft een hybride setup die bestaat uit een realtime tabel met 10-minuten granulariteit en 3-daagse gegevensretentie, evenals een offline tabel met uur- en dagelijkse granulariteit en 45-daagse gegevensretentie.
Inzet van Apache Pinot’s HyperLogLog heeft het team in staat gesteld het aantal opgeslagen gebeurtenissen te verminderen en minder unieke aggregaties over gebeurtenissen uit te voeren. Pinot bood ook zeer lage latenties – onder 100 milliseconden voor p99.5 latentie.
Kostenbesparingen in infrastructuur
Volgens Uber’s berekeningen hebben ze meer dan $2 miljoen aan jaarlijkse infrastructuurkosten bespaard door over te stappen op Pinot. Hun Pinot-opstelling leidde tot een daling van 70% in infrastructuurkosten in vergelijking met Elasticsearch. Ze zagen ook een reductie van 80% in CPU-kernen en een afname van 66% in hun gegevensvoetafdruk.
Met Elasticsearch gebruikte Uber 22.000 CPU-kernen. Met Pinot hebben ze dat aantal met 80% verminderd. Hier is een overzicht van hun Pinot-opstelling:
Verbeterde queryprestaties en gebruikerservaring
Met Apache Pinot kan Uber een betere gebruikerservaring bieden met snellere pagina-laden en verbeterde betrouwbaarheid. De overstap naar Pinot verlaagde de paginaladen tijden met 64%, van 14 seconden naar minder dan 5 seconden. Pinot heeft ook een betere tolerantie voor pieken in belasting, wat leidt tot snellere herstel van vertraging. Zelfs als het team een innamevertraging ziet, kan Pinot snel herstellen binnen een paar minuten.
In vergelijking met Elasticsearch heeft Pinot ook aanzienlijke verbeteringen laten zien op het gebied van query-time-outs en gegevensverlies. Als er een ramp zou plaatsvinden in een mobiele applicatie die gebruik maakt van Elasticsearch, zouden queries met betrekking tot die index time-out. Uber loste dit probleem op met Pinot door de segmentgrootte te regelen. Het team heeft ook geen gegevensverliesproblemen met Pinot, in tegenstelling tot frequente gegevensproblemen bij Elasticsearch bij toegenomen inname doorvoer.
De volgende iteratie van Uber’s Pinot-opstelling
Hiernaast plant Uber om over te stappen op native tekstindexering voor hun mobiele crashgegevens. Hun mobiele crashgegevens bevatten veel gestructureerde gegevens, waardoor het haalbaar is voor het team om alle gebruiksgevallen over te zetten naar native tekstindexen. Deze overgang zal kostenbesparingen opleveren op het gebied van gegevensopslag en de tijd die wordt besteed aan het opvragen van gegevens verminderen.
Uber is niet de enige organisatie die succes boekt door van Elasticsearch naar Pinot te migreren
Uniqode (voorheen Beaconstac) zag een verbetering van 10x in de totale queryprestaties door over te schakelen van Elasticsearch naar Pinot. Cisco Webex heeft ook hun realtime analytics en waarnemingsvermogen naar Pinot gemigreerd na het ondervinden van hoge latenties. Het Webex-team ontdekte dat Apache Pinot 5x tot 150x lagere latenties bood dan Elasticsearch.
Source:
https://dzone.com/articles/real-time-app-crash-analytics-with-apache-pinot