Naar hoofdinhoud springen
Clinford Jordano Valencia
Alle projecten
PlatformWebMobiel

Een realtime telemetrieplatform voor de frontend

Een getypeerde frontend-SDK en eventpipeline die stapsgewijze gebruikersstromen realtime zichtbaar maakten en de detectie van storingen terugbrachten van dagen naar minuten.

Stack
TypeScript · BFF · Event streaming · Columnar storage · Dashboards

Het probleem

Sommige gebruikers haakten stilletjes af in een lange stroom met veel stappen. Als een koppeling met een derde partij kapotging, zag niemand het: diagnose betekende versnipperde serverlogs met de hand doorlezen en duurde dagen. Elke dag daarvan zijn echte gebruikers die niet klaar konden komen.

De aanpak

  • Een kleine, getypeerde SDK. Eén TypeScript-tracker verzamelde op elk scherm en elk platform dezelfde gebruikersactiegegevens, zodat een event overal hetzelfde betekende.
  • Throttling met een veiligheidsklep. De SDK bundelt events en verstuurt ze na een korte timer of bij een groottelimiet, wat het eerst komt. Eén request per klik leegt de netwerkthreads van de browser; events langer vasthouden riskeert verlies als het tabblad sluit, dus bij het verlaten van de pagina wordt navigator.sendBeacon gebruikt.
  • Een BFF die valideert. Bundels komen binnen bij een Backend for Frontend dat het schema controleert tegen de TypeScript-definities, tijdstempels op plausibiliteit toetst, onverwachte velden en persoonsgegevens verwijdert en sessiemetadata toevoegt. Het oordeel van de backend vergelijken met wat de interface toonde, bracht statusverschillen tussen die twee aan het licht.
  • Een streamingpipeline naar kolomgeoriënteerde opslag. Streaming vangt verkeerspieken op, en kolomgeoriënteerde opslag beantwoordt aggregaties over zeer grote eventsets met hoge cardinaliteit in milliseconden, waar rijgebaseerde opslag kruipt.
  • Stille foutafhandeling. Als de pipeline uitvalt, bewaart de SDK lokaal een kleine buffer en pauzeert een passieve circuit breaker het verzenden. De SDK pingt de server niet om de gezondheid te controleren; hij wacht op de volgende geslaagde respons.

Het resultaat

De tijd om een storing te detecteren daalde van dagen naar minder dan 5 minuten. Als één kapotte stap veel mislukte pogingen betekent, is dat het verschil tussen een notitie in een postmortem en een fix dezelfde ochtend.