Geschrieben von

Server-side Google Tag Manager auf Cloud Run

Webtracking

Das Bereitstellen eines Google Tag Manager Server-Containers ist grundsätzlich über 2 Wege möglich:

  • Tag-Server automatisch bereitstellen
  • Tag-Server manuell bereitstellen

Die automatische Bereitstellung ist einfach und mit wenigen Klicks erledigt, jedoch wird hier der GTM-Server auf einer App Engine Standard-Umgebung deployed. Dies kann zwar für ein Testing eingesetzt werden, für die Prod-Umgebung ist die Standard-Umgebung eher weniger geeignet. Über die manuelle Bereitstellung lässt sich jedoch eine App Engine Flexible-Umgebung deployen, die für den Live-Betrieb besser ist, da performanter. Zudem lässt sich dadurch auch die Region wählen. Wem App Engine nicht ausreicht, kann auch auf Cloud Run ausweichen. Wie das funktioniert erkläre ich in diesem Artikel.

Was ist Cloud Run?

Cloud Run ist eine serverlose Plattform, auf der Containeranwendungen bereitgestellt werden und die vollständig von Google verwaltet wird. Damit kann man jede Art von zustandslosen Containern erstellen, die dann auf HTTP-Requests reagieren. Alles was Cloud Run also braucht ist ein Container. Und den Google Tag Manager Server-Container gibt es als Docker Container Image. Perfekt!

GTM-Server: App Engine vs. Cloud Run

Ob für den serverside Google Tag Manager die App Engine oder Cloud Run eher in Frage kommt, hängt von einigen Faktoren ab. Auf der App Engine-Seite heißt es, dass App Engine insbesondere geeignet ist für “Anwendungen, die konsistenten Traffic empfangen, regelmäßige Trafficschwankungen verzeichnen oder die Parameter für eine schrittweise Hoch- und Herunterskalierung erfüllen.”. Ist hingegen ein schnelles Autoscaling erforderlich, ist Cloud Run die bessere Wahl. Dabei wird die Ressourcenverfügbarkeit automatisch bis zu den Trafficspitzen hochskaliert. Cloud Run kann sogar für einen kurzen Zeitraum etwas mehr als die angegebene Höchstzahl von Containerinstanzen zur Verfügung stellen, um die Trafficspitzen abzufangen. Für die Leistungsfähigkeit der Dienste sind vor allem die maximal verfügbaren Instanzen relevant:

Wenn man jetzt davon ausgeht, dass der serverside Google Tag Manager ca. 20 Requests pro Sekunde und Instanz verarbeiten kann, dann ergibt sich folgende Rechnung:

  • Cloud Run: 20 * 1.000 = 20.000 Requests pro Sekunde, die potentiell verarbeitet werden können.
  • App Engine Flexible: 20 * 25 = 500 Requests pro Sekunde, die potentiell verarbeitet werden können.

Wenn man jetzt nur von Google Analytics 4 ausgeht (in der Regel hat man aber weitere Tags im Einsatz), dann muss man zudem berücksichtigen, dass diese potentiell maximale Anzahl an Requests den Netzwerk-Hits entsprechen, nicht den Tracking-Hits. Grund ist, dass Google Analytics 4 die Events im Batch verarbeitet. Es können also mehrere Tracking-Hits in einem Netzwerk-Hit verschickt werden.

Bevor man sich also für App Engine oder Cloud Run entscheidet lohnt sich zunächst einmal zu analysieren, wie viele Hits in der Vergangenheit pro Sekunde generiert worden sind. Liegt man unter 400 reicht App Engine; bei über 400 (also mit etwas Luft zu den max. 500) sollte man über Cloud Run nachdenken. Solltest du dich für Cloud Run entscheiden, findest du nun nachfolgend eine Anleitung wie du den serverside Google Tag Manager über die Google Cloud UI auf Cloud Run bereitstellen kannst.

Server-side Google Tag Manager auf Cloud Run bereitstellen

Grob gesagt sind folgende Schritte notwendig:

  1. Server-Container erstellen
  2. Cloud Run API aktivieren
  3. Preview Server erstellen
  4. Tagging Server erstellen

Server-Container erstellen

Zunächst wird ein neuer Container im Google Tag Manager erstellt:

Wähle einen Container-Namen und wähle als Zielplattform “Server”. Klicke dann auf “Erstellen”:

Wähle dann “Tagging-Server manuell bereitstellen” und kopiere dir deine Containerkonfiguration:

Cloud Run API aktivieren

Wechsle dann in Anschluss zur Google Cloud. Erstelle ein Projekt (oder wähle ein bestehendes Projekt). Stelle sicher, dass eine Abrechnung aktiviert und aktiv ist. Innerhalb des gewählten Projekts wechselst du nun zu “APIs & Dienste”. Klicke auf “APIS UND DIENSTE AKTVIEREN” im oberen Bereich. Suche nach “Cloud Run API”. Aktiviere die API:

Preview Server erstellen

Jetzt erstellen wir zunächst den Preview Server für den Google Tag Manager. Gehe zu Cloud Run. Klicke auf “Dienst erstellen”:

Unter den Diensteinstellungen wählst du nun “Überarbeitung aus dem vorhandenen Container-Image bereitstellen” und gibst diese URL an:

gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable

Als Dienstname z.B. “preview” angeben. Wähle dann eine Region – im besten Fall die Region wo der Unternehmenssitz ist und von wo deine Nutzer kommen.

Unter “CPU-Zuweisung und -Preise” kannst du selbst bestimmen, wie du es haben willst. In der Regel ist es empfehlenswert “CPU wird nur während der Anfrageverarbeitung zugewiesen” zu wählen zwecks Kosten. Die maximale Anzahl an Instanzen sollte beim Preview Server auf 1 gesetzt werden (da hier in der Regel nur Hits anfallen wenn getestet wird).

Im nächsten Schritt klickst du auf “Erweiterte Einstellungen” und dann auf den Tab “Variablen und Secrets”. Nun musst du 2 Variablen hinzufügen:

  • CONTAINER_CONFIG: Die vorher kopierte Containerkonfiguration aus dem Google Tag Manager.
  • RUN_AS_PREVIEW_SERVER: Auf true setzen.

Klicke auf “Weiter”. Jetzt wird konfiguriert, wann der Dienst auslösen soll. Wähle folgende Einstellungen:

Danach dauert es einige Zeit bis der Dienst bereitgestellt wird. Nach der erfolgreichen Bereitstellung siehst dann auf der Seite die gewählte Region und die zur Verfügung gestellte URL, unter die der Dienst aufrufbar ist:

Hinweis!
Für den Live-Betrieb ist es unbedingt zu empfehlen eine eigene Domain als Endpoint für die Tracking-Hits zu definieren. Oder andersrum: Der GTM-Server soll auf einer eigenen Domain liegen, damit die Hits in einem First-Party-Kontext gesammelt werden können. Wie man eine eigene Domain für die App Engine anlegt, habe ich in meinem Beitrag “GTM-Server: Eigene Subdomain als Endpoint” beschrieben. Möchte man eine eigene Domain für die Cloud Run-Dienste bereitstellen, ist der Prozess etwas anders. Grundsätzlich benötigt man dabei 2 Domains:

  • Eine Domain für den Preview Server
  • Eine Domain für den Tagging Server

In meinem Fall könnte ich z.B. die Subdomain collect.demirjasarevic.com als Tagging Server definieren. Der Preview Server könnte wieder eine Subdomain des Tagging Servers – erreichbar unter preview.collect.demirjasarevic.com – sein. Um eine benutzerdefinierte Domain für die Cloud Run-Dienste zu definieren, muss das in der Google Cloud Console unter “Domainzuordnungen” erfolgen. Folge dort einfach den Schritten, um deine Domain zu bestätigen und anzulegen.

Beachte jedoch, dass bei gewissen Regionen ein Domain Mapping nicht möglich ist (darunter fallen auch einige EU-Regionen). In diesem Fall musst du eine eigene Domain über einen Load Balancer einrichten. Da eine Anleitung dieser Konfiguration hier den Rahmen sprengen würde, gehe ich nicht weiter darauf ein, sondern zeige wie man den GTM-Server auf Cloud Run mit den von Cloud Run zur Verfügung gestellten Domains bereitstellt. Falls du Bedarf an dieser Anleitung hast, dann schreibe mir unter jasarevic.demir@gmail.com. Bei mehreren Anfragen folgt eine Anleitung. 😉

Tagging Server erstellen

Im nächsten Schritt wird der Tagging Server erstellt. Folge einfach nochmal den obigen Schritten zur Erstellung des Preview Servers mit einigen Unterschieden:

  • Wähle als Dienstname zur Unterscheidung z.B. “tagging”
  • Die maximale Anzahl an Instanzen sollte sich an deinen Hits, die der Server verarbeiten soll, orientieren
  • Unter den Variablen setzt du wie beim Preview Server die Variable “CONTAINER_CONFIG” und weist ihr den Wert der Containerkonfiguration zu
  • Als zweite Variable setzt du “PREVIEW_SERVER_URL” gleich der URL des Preview Servers

Auch hier erhältst du nach Abschluss deine Cloud Run URL, auf die der GTM-Tagging-Server liegt.

Google Tag Manager Einstellungen anpassen

Kopiere die URL des Tagging Servers, navigiere zu der Google Tag Manager Verwaltung. Unter “Containereinstellungen” gibst du hier die Tagging Server URL an:

Wenn du nun in den Vorschaumodus wechselst, wirst du feststellen, dass der Google Tag Manager auf der von Cloud Run bereitgestellten URL läuft.

Last modified: 18. November 2021