Hinter den Kulissen eines Hit Counters

Allgemeines

Viele großer Webprojekte setzen im Hintergrund ausgeklügelte Techniken und Technologien ein, von denen der Nutzer des Dienstes in der Regel nichts mitbekommt. Daher möchte ich die Chance nutzen und dem technisch interessierten Leser hier einen kleinen Einblick geben, wie VCounter hinter den Kulissen aussieht.

Die Technik lässt sich grob in drei Hauptkomponenten aufteilen: den primären Webserver, die VCounter Anwendung inklusive Webcontainer und den Datenbankserver.

Der primäre Webserver

Apache Logo Mit dem Webserver hast du als erstes Kontakt wenn du die VCounter Seite aufrufst, dir deine Statistiken ansiehst oder wenn dein Counterbild vom Server geladen wird. Der Webserver nimmt Anfragen entgegen und beantwortet Sie entweder selbst oder leitet sie an die richtigen Komponenten weiter. Er übernimmt hier folgende Aufgaben:

  1. Auslieferung statischer Inhalte:
    Statische Inhalte wie z.B. Bilder und Grafiken werden direkt vom Webserver ausgeliefert. Hier ist es nicht nötig die anderen Komponenten mit einzubeziehen. Dadurch erreicht man eine schnelle Reaktionszeit der Anwendung.
  2. Erreichbarkeit unter einer einfachen Domain:
    Die VCounter Anwendung stellt die Oberfläche des VCounters unter einer lokal erreichbaren Projekt-URL zur Verfügung. Diese wird vom vorgeschalteten primären Webserver "maskiert". Daher nimmt der Webserver Anfragen direkt unter der Adresse https://vcounter.de entgegen und reicht sie intern an die lokale Projekt-URL der VCounter Anwendung weiter. Dieser Rolle wird auch als Reverse Proxy bezeichnet. In den von der VCounter Anwendung ausgelieferten Seiten wird die Projekt-URL wieder zurück in den kurzen Domainnamen umgewandelt. Das Prinzip arbeitet also in beide Richtungen.

Ich setze hier den Apache 2 Webserver der Apache Foundation ein, einen der beliebtesten Webserver im Internet.

Die VCounter Anwendung inklusive Webcontainer

Glassfish Logo Die VCounter Anwendung wurde mit Hilfe des Spring Boot Frameworks angelehnt an den Vorgaben der 12-Faktor-App umgesetzt. Durch das Framework erhält die Anwendung einfachen Zugriff auf

  • einen Webcontainer (Embedded Tomcat)
  • persistenten Speicher (JPA = Java Persistence API, Hibernate)
  • Transaktionsmanagement (JTA = Java Transaction API)
  • ...
Die Anwendungsentwicklung erfolgt typischerweise in einer lokal eingerichteten Entwicklungsumgebung auf dem heimischen PC. Nachdem eine neue Komponente für den Besucherzähler fertiggestellt ist, werden die Quellcode Dateien kompiliert und zusammen mit weiteren benötigten Daten und Abhängigkeiten zu einem JAR-File (Java Archive File) gepackt. Dieses JAR-File enthält alle Komponenten der Anwendung, die für deren reibungslose Ausführung nötig sind und wird anschließend auf dem Produktivserver deployed. Die VCounter Anwendung hat zwei wesentliche Aufgaben:
  • Erfassung der Counterdaten:
    Immer wenn ein Besucher eine Seite mit einem VCounter Code aufruft, wird das VCounter Bild vom Server abgerufen. Die Daten des Aufrufs werden zusammen mit der Counter-Id in eine an den Applicationserver angebundene Datenbank protokolliert. Welche Daten erfasst werden, kannst du im Artikel "Wie funktioniert ein Besucherzähler" nachlesen.
  • Generierung der Statistiken:
    Die erfassten Daten werden in aufbereiteter Form in den Statistiken wiedergegeben. Dazu wird beim Aufruf der Übersichtsstatistik bzw der Detailstatistik die Counter-Id an die Webseite übergeben. Anhand dieser Id kann die VCounter Anwendung nun die zugehörigen Daten aus der Datenbank auslesen und für die Anzeige aufbereiten. Um unnötige Berechnungen zu vermeiden liegen die Statistiken zum Teil auch schon in aufbereiteter/vorberechneter Form in der Datenbank vor.

Für dieses Projekt kommt das SpringBoot Framework in Version 1.4.2 zum Einsatz.

Der Datenbankserver

MySQL Logo Zum Datenbankserver gibt es leider nicht viel interessantes zu berichten, obwohl er die wichtigste Aufgabe im Projekt hat: Er muss die beim Abruf des Counter-Codes anfallenden Besucherdaten schnell und effektiv aufnehmen und in strukturierter Form abspeichern können. Beim Generieren der Statistikseiten wird auf diese Daten zurückgegriffen. Die Aufbereitung der Daten wird dabei zum Teil vom Datenbankserver als auch von der VCounter Anwendung übernommen. Die Verbindung zwischen der Applikation und der Datenbank erfolgt über das Hibernate Framework.

Diese Aufgabe des Datenbankservers übernimmt in diesem Projekt ein MySQL Server in Version 5.5.

Weitere Hintergrundinformationen:
Was ist ein Besucherzähler
Wie funktioniert ein Besucherzähler