Privatracker Tech Stack.

Privatracker Tech Stack

Intro

Die Achtung der Privatsphäre der Nutzer war schon immer wichtig. Und mit der DSGVO, dem CCPA und anderen Gesetzen wurde es für uns alle verpflichtend. Während Datenschutz wichtig ist, ist es auch ein vitales Interesse von Online-Unternehmen zu wissen, wie Nutzer ihre Apps und Websites verwenden. Dies ermöglicht es Unternehmen, Schwachstellen in der Benutzerfreundlichkeit zu finden und die Website zu optimieren, um die beste Erfahrung für ihre Kunden zu bieten.

Aber wie können Sie Nutzer tracken, ohne ihre Privatsphäre zu verletzen?

Mit Privatracker bieten wir eine Lösung. Privatracker ist ein SaaS-Tool, das als datenschutzfreundliche Alternative zu traditionellen Web-Analytics-Plattformen wie Google Analytics dient. Es ist ein Tool, das Nutzer anonym trackt. Es ist nicht möglich, Einzelpersonen zu verfolgen. Aber es ist möglich zu sehen, was auf der Website passiert. Welche Seiten populär sind. Woher die Nutzer kommen (Land usw.) und wer die Nutzer auf Ihre Seite schickt (Google, LinkedIn usw.).

Im Gegensatz zu Google Analytics ermöglicht Privatracker Unternehmen, Web-Aktivitäten ohne aufdringliche Cookie-Banner(!) zu tracken, und bietet ein nahtloses Nutzererlebnis bei gleichzeitiger Einhaltung von Datenschutzvorschriften.

Aber in diesem Beitrag geht es nicht um Datenschutz. Dieser Beitrag handelt davon, wie man einen solchen Service architektonisch aufbaut. Ein paar Klicks zu speichern und Daten zu aggregieren sollte nicht zu schwer sein. Und das stimmt. Aber mit den falschen Tools wird es schiefgehen - und eine traditionelle Speicherschicht wie PostgreSQL wird NICHT funktionieren.

Schauen wir uns den Stack an, den wir verwendet haben, und diskutieren die Technologien.

Die Herausforderung

Unser Ziel war es, ein Tool zu entwickeln, das sowohl einfach als auch skalierbar ist und alles von kleinen Startups bis hin zu großen Enterprise-Kunden abdeckt. Eine weitere Anforderung war es, Enterprise-Kunden ein sicheres Login zu ermöglichen, was eine zusätzliche Komplexitätsebene zu unserem Projekt hinzufügte. Wir brauchten einen robusten Tech Stack, der diese Anforderungen bewältigen konnte und dabei leichtgewichtig und effizient blieb.

Der Tech Stack

Um diese Herausforderungen zu meistern, verwenden wir derzeit den folgenden Tech Stack.

Privatracker Tech Stack

Speicherschicht für Zeitreihendaten

PostgreSQL bietet die Zuverlässigkeit und Leistung, die für die Verwaltung komplexer Datenstrukturen benötigt wird. Es ist eine bewährte Lösung mit starker Community-Unterstützung und umfangreichen Features, die eine breite Palette von Datenbankanforderungen abdecken.

Während PostgreSQL für traditionelle Daten wie Benutzer und Gruppen gut funktioniert, funktioniert es NICHT gut, wenn Sie große Datenmengen über Zeiträume hinweg aggregieren müssen.

Deshalb verwenden wir TimescaleDB für die Verarbeitung von Zeitreihendaten. Da TimescaleDB als Erweiterung auf PostgreSQL läuft, müssen wir keine neue Abfragesprache oder andere Tools zum Sichern der Daten oder zum Betreiben unserer Server lernen. TimescaleDB ermöglicht es uns, große Mengen von Zeitreihendaten effizient zu speichern und abzufragen, was es ideal für unsere Analytics-Anforderungen macht.

Authentifizierung

Für föderiertes Login nutzen wir Keycloak. Es vereinfacht die Authentifizierung und Autorisierung für Benutzer und bietet Features wie Single Sign-On und Identity Brokering. Es ist jedoch ein weiteres System, das gewartet werden muss, und wir überlegen, ob es für unsere Bedürfnisse essenziell ist.

Backend

Unser Backend wird von einem einfachen Node.js Express Server betrieben. Wir verwenden Javascript und größtenteils TypeScript. Javascript (und TypeScript) sind großartig, weil sie es ermöglichen, die gleichen Tools im Frontend und Backend zu verwenden. Hervorragend für den Wissensaustausch zwischen Teams. Hervorragend für Code-Sharing.

Frontend

Das Frontend wird mit React entwickelt. Funktioniert wunderbar. Wir verwenden einfaches CSS, um die Komponenten zu stylen. Tests werden mit Jest durchgeführt.

Deployment

Wir deployen Privatracker als einzelne Einheit mit Dokku, einem minimalistischen PaaS, das uns eine “Push-to-Deploy”-Strategie ermöglicht. Dies vereinfacht unseren Deployment-Prozess und stellt eine konsistente Umgebung über alle Instanzen unserer Anwendung sicher. Die gesamte Anwendung ist als 12 Factor App geschrieben. Das bedeutet, wir könnten problemlos von Dokku weg migrieren und einen Hyperscaler wie AWS / GCP oder sogar eine große Hetzner-Box verwenden.

Diskussion

TypeScript/JavaScript

Obwohl sie die De-facto-Sprachen für Webentwicklung sind, haben wir einige Nachteile festgestellt. TypeScript ist in Ordnung, aber es ist “nur” eine Dekoration auf JavaScript. Es ist zu einfach, den Code zu vermasseln, weil der Type-Checker von TypeScript schlicht nicht alles versteht. Unerwartete Werte können unserer Meinung nach zu leicht durchschlüpfen.

Das JavaScript-Ökosystem entwickelt sich sehr schnell weiter - was großartig ist. Aber das bedeutet auch, dass Bibliotheken oft Breaking Changes haben und man sehr wachsam sein muss, um seine Codebasis zu aktualisieren und möglicherweise umzuschreiben (das gilt auch für das Frontend). Wir diskutieren gerade einen Rewrite in Go, weil wir die gesamte Anwendung ohne Abhängigkeiten in Go umschreiben könnten. Potenziell noch einfacher und schneller.

Die Komplexität von React

React ist unbestreitbar leistungsfähig, aber seine Komplexität kann eine Last sein. Das Gefühl ist, dass React vor einiger Zeit noch gut war, aber mit dem Push, von Class Components zu “reinen” Funktionen zu wechseln, fühlt es sich nicht mehr leichtgewichtig an. Überraschenderweise brauchen auch reine Funktionen einen State (!) und es gibt jetzt so viele Workarounds aka Hooks (useEffect, useState usw.), dass der Code schwerer zu verstehen und zu testen geworden ist. useEffect kann zeitweise fehleranfällig sein (warum wurde meine Komponente zweimal gerendert?).

Wir erwägen einen Wechsel zu lit (Wrapper um Web Components) oder sogar reinen Web Components und No-Build-JS.

Fazit

Privatracker zu bauen war eine schöne Reise der Balance zwischen Einfachheit und Funktionalität. Unser Engagement für Datenschutz und Nutzererlebnis treibt uns an, unseren Tech Stack kontinuierlich zu verfeinern und neue Lösungen zu erkunden. Wir glauben, dass die Achtung der Privatsphäre der Nutzer mühelos sein sollte, und widmen uns der Bereitstellung eines Tools, das datenschutzfreundliche Web-Analytics für alle Unternehmen zugänglich macht.

Für weitere Informationen über Privatracker und wie es Ihrem Unternehmen helfen kann, die Privatsphäre der Nutzer zu respektieren, besuchen Sie privatracker.com.

Related posts