{"id":8830,"date":"2026-08-17T19:07:00","date_gmt":"2026-08-17T17:07:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=8830"},"modified":"2026-10-05T11:34:02","modified_gmt":"2026-10-05T09:34:02","slug":"server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/","title":{"rendered":"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w"},"content":{"rendered":"\r\n<h2 class=\"wp-block-heading\">Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Automatyczne udost\u0119pnianie serwera Server-Side Google Tag Managera (ssGTM) od jesieni 2023 roku tworzy us\u0142ug\u0119 Google Cloud Run \u2013 Google App Engine nie jest ju\u017c \u015brodowiskiem domy\u015blnym. Powstaje przy tym jednak konfiguracja minimalna, przeznaczona do test\u00f3w, a nie do obs\u0142ugi ruchu produkcyjnego. Sam Cloud Run zapewnia w pe\u0142ni zarz\u0105dzane, bezstanowe \u015brodowisko kontenerowe o szybkim skalowaniu automatycznym, precyzyjnej alokacji zasob\u00f3w i przewidywalnym modelu kosztowym; pe\u0142ne wykorzystanie tego potencja\u0142u wymaga \u015bwiadomego utwardzenia wygenerowanego wdro\u017cenia.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">1. Utwardzanie automatycznie utworzonej us\u0142ugi Cloud Run<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Wcze\u015bniejsza konfiguracja App Engine Flexible dla ssGTM nierzadko prowadzi\u0142a do nadmiarowej alokacji zasob\u00f3w przy niskim ruchu i zbyt wolnego skalowania podczas nag\u0142ych skok\u00f3w obci\u0105\u017cenia \u2013 to jeden z powod\u00f3w, dla kt\u00f3rych Cloud Run zast\u0105pi\u0142 j\u0105 jako rozwi\u0105zanie domy\u015blne. Cloud Run operuje na standardowych obrazach Docker OCI (Open Container Initiative), uruchamiaj\u0105c kontener ssGTM (<code>gcr.io\/cloud-tagging-10302018\/gtm-cloud-image:stable<\/code>) w modelu serverless. Automatyczne udost\u0119pnianie pozostawia jednak us\u0142ug\u0119 z ustawieniami wystarczaj\u0105cymi do test\u00f3w, lecz nie do ruchu produkcyjnego. Opisane dalej parametry zamieniaj\u0105 ten punkt wyj\u015bcia we wdro\u017cenie, kt\u00f3re poch\u0142ania skoki obci\u0105\u017cenia w kilka sekund, zamiast gubi\u0107 hity.<\/p>\r\n\r\n\r\n\r\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-8828-sgtm-cloud-run-pl.png?v=20261005\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"U g\u00f3ry hit z przegl\u0105darki trafia do us\u0142ugi Cloud Run sgtm-production z ciep\u0142ymi instancjami 512Mi i 1 vCPU na maksymalnie 80 \u017c\u0105da\u0144, dostaje 200 OK, a us\u0142uga wywo\u0142uje potem GA4, Meta Conversions API i TikTok Events. Poni\u017cej pi\u0119\u0107 kart obja\u015bnia min-instances, max-instances, pami\u0119\u0107 i CPU, no-cpu-throttling oraz concurrency 80.\">\n<figcaption>Droga \u017c\u0105dania przez Server-Side GTM na Cloud Run oraz pi\u0119\u0107 flag wdro\u017ceniowych, kt\u00f3re przygotowuj\u0105 us\u0142ug\u0119 do ruchu produkcyjnego.<\/figcaption>\n<\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">2. Konfiguracja min-instances oraz max-instances<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Kluczem do optymalnej wydajno\u015bci w Cloud Run jest precyzyjny dob\u00f3r granic skalowania instancji. B\u0142\u0119dna konfiguracja tych parametr\u00f3w skutkuje albo gubieniem hit\u00f3w e-commerce z powodu op\u00f3\u017anie\u0144, albo gwa\u0142townym wzrostem rachunk\u00f3w chmurowych.<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>min-instances (Eliminacja \u201ecold start\u00f3w\u201d):<\/strong> W czystym modelu serverless kontener wy\u0142\u0105cza si\u0119 przy braku ruchu. Pierwsze przychodz\u0105ce \u017c\u0105danie wymusza start nowej instancji, co generuje op\u00f3\u017anienie typu \u201ecold start\u201d rz\u0119du 2 do 5 sekund. W \u015brodowiskach produkcyjnych ustawienie parametru <code>--min-instances=1<\/code> (lub wy\u017cej dla ruchu enterprise) gwarantuje sta\u0142\u0105 obecno\u015b\u0107 gotowej instancji, redukuj\u0105c latencj\u0119 do poziomu poni\u017cej 50 milisekund.<\/li>\r\n\r\n\r\n\r\n<li><strong>max-instances (Ochrona bud\u017cetu):<\/strong> Brak g\u00f3rnego limitu skalowania potrafi doprowadzi\u0107 do wyczerpania bud\u017cetu podczas atak\u00f3w DDoS lub p\u0119tli przekierowa\u0144 w systemach analitycznych. Okre\u015blenie sztywnej granicy (np. <code>--max-instances=10<\/code>) zabezpiecza limity Google Cloud Platform (GCP), jednocze\u015bnie swobodnie obs\u0142uguj\u0105c szczyty sprzeda\u017cowe podczas akcji Black Friday.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">3. Zarz\u0105dzanie pami\u0119ci\u0105, CPU Throttling i wsp\u00f3\u0142bie\u017cno\u015b\u0107 (Concurrency)<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Optymalizacja wydajno\u015bci wymaga dopasowania specyfikacji obliczeniowej do asynchronicznej natury \u015brodowiska Node.js, na kt\u00f3rym opiera si\u0119 serwerowy kontener GTM:<\/p>\r\n\r\n\r\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"bash\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Shell<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-bash\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-comment\"># Rekomendowane polecenie wdro\u017ceniowe Cloud Run dla produkcyjnego ssGTM:<\/span>\n<\/span><span class=\"cbb-line\">gcloud run deploy sgtm-production \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--image<\/span>=gcr.io\/cloud-tagging-10302018\/gtm-cloud-image:stable \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--region<\/span>=europe-west1 \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--platform<\/span>=managed \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--allow-unauthenticated<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--min-instances<\/span>=<span class=\"cbb-number\">2<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--max-instances<\/span>=<span class=\"cbb-number\">20<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--memory<\/span>=512Mi \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--cpu<\/span>=<span class=\"cbb-number\">1<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--concurrency<\/span>=<span class=\"cbb-number\">80<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--no-cpu-throttling<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--set-env-vars<\/span>=<span class=\"cbb-string\">\"CONTAINER_CONFIG=aW52YWxpZF9iYXNlNjRfZXhhbXBsZQ==\"<\/span><\/span><\/code><\/pre><\/figure>\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>Alokacja pami\u0119ci i CPU:<\/strong> Typowa instancja ssGTM obs\u0142uguj\u0105ca GA4, Meta Conversions API i TikTok Events potrzebuje <code>512Mi<\/code> pami\u0119ci RAM oraz <code>1 vCPU<\/code>. Przypisywanie wi\u0119kszej liczby rdzeni do jednego kontenera rzadko przynosi korzy\u015bci, poniewa\u017c skalowanie poziome radzi sobie ze wzrostem wolumenu efektywniej ni\u017c rozbudowa pionowa.<\/li>\r\n\r\n\r\n\r\n<li><strong>CPU Throttling (&#8211;no-cpu-throttling):<\/strong> Domy\u015blnie Cloud Run d\u0142awi dost\u0119p do CPU natychmiast po zako\u0144czeniu aktywnej obs\u0142ugi \u017c\u0105dania. Poniewa\u017c ssGTM wykorzystuje operacje w tle i asynchroniczne wysy\u0142anie zapyta\u0144 (np. przekazanie danych do Meta CAPI ju\u017c po odes\u0142aniu kodu 200 OK do przegl\u0105darki), wy\u0142\u0105czenie d\u0142awienia CPU jest warunkiem koniecznym, aby unikn\u0105\u0107 przerywanych po\u0142\u0105cze\u0144 sieciowych.<\/li>\r\n\r\n\r\n\r\n<li><strong>Ustawienia wsp\u00f3\u0142bie\u017cno\u015bci (Concurrency):<\/strong> Cloud Run potrafi obs\u0142ugiwa\u0107 wiele r\u00f3wnoleg\u0142ych zapyta\u0144 w obr\u0119bie jednej instancji kontenera. Warto\u015b\u0107 <code>--concurrency=80<\/code> pozwala instancji z 512Mi pami\u0119ci przetwarza\u0107 do 80 jednoczesnych \u017c\u0105da\u0144 analitycznych przed uruchomieniem kolejnej repliki, co radykalnie obni\u017ca koszty operacyjne.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Podsumowanie<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Wdro\u017cenie Server-Side GTM na platformie GCP Cloud Run tworzy stabiln\u0105 i skalowaln\u0105 bram\u0119 analityczn\u0105. Prawid\u0142owa konfiguracja minimalnych instancji eliminuje op\u00f3\u017anienia zwi\u0105zane z \u201ecold startami\u201d, a wy\u0142\u0105czenie d\u0142awienia procesora oraz optymalizacja wsp\u00f3\u0142bie\u017cno\u015bci zapewniaj\u0105 niezawodne przetwarzanie milion\u00f3w zdarze\u0144 e-commerce przy przewidywalnych kosztach infrastruktury.<\/p>\r\n\n\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n\n<h3>Co przy &#8211;concurrency=80, 512Mi i jednym vCPU wyczerpuje si\u0119 pierwsze pod realnym obci\u0105\u017ceniem: pami\u0119\u0107 czy CPU?<\/h3>\n<p>W tej konfiguracji zwykle pami\u0119\u0107, a jej brak jest mniej widoczny ni\u017c brak CPU.<\/p>\n<p>Wsp\u00f3\u0142bie\u017cno\u015b\u0107 i moc obliczeniowa to r\u00f3\u017cne d\u017awignie: wsp\u00f3\u0142bie\u017cno\u015b\u0107 decyduje, ile zapyta\u0144 trafia do jednej instancji, CPU \u2013 jak szybko ka\u017cde z nich zostaje obs\u0142u\u017cone. Pod presj\u0105 brak CPU objawia si\u0119 op\u00f3\u017anieniem, kt\u00f3re da si\u0119 zmierzy\u0107 i kt\u00f3re w ko\u0144cu uruchamia kolejn\u0105 instancj\u0119. Brak pami\u0119ci ko\u0144czy instancj\u0119, a ka\u017cde zapytanie, kt\u00f3re jeszcze obs\u0142ugiwa\u0142a \u2013 \u0142\u0105cznie z wywo\u0142aniami do dostawc\u00f3w wys\u0142anymi po odpowiedzi 200 \u2013 znika razem z ni\u0105. Raporty o tym milcz\u0105; trafie\u0144 po prostu nie ma.<\/p>\n<p>Przy trzech celach na zdarzenie, jak w przyk\u0142adzie z artyku\u0142u z GA4, Meta Conversions API i TikTok Events, ka\u017cde z 80 jednoczesnych zapyta\u0144 trzyma w tym samym czasie sw\u00f3j \u0142adunek i oczekuj\u0105ce wywo\u0142ania wychodz\u0105ce, i w\u0142a\u015bnie tam 512Mi robi si\u0119 ciasno. Dwie liczby czyni\u0105 sytuacj\u0119 czyteln\u0105: liczba instancji w stosunku do liczby zapyta\u0144 oraz wykorzystanie pami\u0119ci kontenera w szczycie. Gdy pami\u0119\u0107 jest blisko limitu, a CPU ma zapas, wi\u0119cej daje ni\u017csza wsp\u00f3\u0142bie\u017cno\u015b\u0107 ni\u017c wi\u0119ksza instancja \u2013 mniejsze porcje pracy na kontener, roz\u0142o\u017cone na wi\u0119cej kontener\u00f3w.<\/p>\n\n<h3>Czy istnieje z\u0142oty \u015brodek mi\u0119dzy \u201ecold startami\u201d a sta\u0142ym kosztem &#8211;min-instances=2, naliczanym w nocy tak samo jak w po\u0142udnie?<\/h3>\n<p>Tak, w trzech krokach, a trzeci to ten, w kt\u00f3rym naprawd\u0119 powstaje rachunek.<\/p>\n<p>Po pierwsze liczba ta nie jest stanem trwa\u0142ym: harmonogram, kt\u00f3ry w nocy obni\u017ca j\u0105 przez <code>gcloud run services update<\/code> do jednej instancji, a rano zn\u00f3w podnosi, to jeden wpis cron i prawie \u017cadna dodatkowa z\u0142o\u017cono\u015b\u0107. Po drugie \u201ecold start\u201d dotyka tylko pierwszych trafie\u0144 po okresie bezczynno\u015bci; przy danych pomiarowych jest to do przyj\u0119cia, przy konwersjach nie. Decyzja zale\u017cy wi\u0119c od rodzaju dnia, a nie od kontenera.<\/p>\n<p>Po trzecie, i to wa\u017cy wi\u0119cej ni\u017c oba poprzednie punkty: przy <code>--no-cpu-throttling<\/code> rozliczenie odbywa si\u0119 za instancj\u0119, czyli za ca\u0142y czas jej dzia\u0142ania, a nie tylko za czas obs\u0142ugi zapyta\u0144. Dwie minimalne instancje bez d\u0142awienia oznaczaj\u0105 wi\u0119c dwa vCPU op\u0142acane bez przerwy, niezale\u017cnie od ruchu. Oszcz\u0119dzanie na rachunku zaczyna si\u0119 od sprawdzenia tej kombinacji, a nie liczby trafie\u0144.<\/p>\n\n<h3>Co poza op\u00f3\u017anieniem powinno decydowa\u0107 o wyborze regionu Cloud Run dla serwerowego kontenera GTM?<\/h3>\n<p>Poza op\u00f3\u017anieniem licz\u0105 si\u0119 trzy rzeczy, a samo op\u00f3\u017anienie jest zwykle najmniej istotne, bo r\u00f3\u017cnice mi\u0119dzy europejskimi regionami liczy si\u0119 w milisekundach.<\/p>\n<p>Pierwsza to miejsce przetwarzania. Kontener odbiera pe\u0142ne \u017c\u0105dania odwiedzaj\u0105cych, wi\u0119c pytania o lokalizacj\u0119 przetwarzania dotycz\u0105 w\u0142a\u015bnie jego, a nie tylko dostawcy analityki. Druga to koszt ruchu mi\u0119dzy regionami: eksport do BigQuery albo zapytania do Firestore w innym regionie s\u0105 p\u0142atne, a przy du\u017cym wolumenie ta pozycja przestaje by\u0107 pomijalna. Trzecia to dost\u0119pno\u015b\u0107 us\u0142ug, bo nie ka\u017cdy region oferuje ten sam zestaw i te same limity.<\/p>\n<p>Praktyczna zasada: ten sam region co zbi\u00f3r danych, z kt\u00f3rym kontener rozmawia najcz\u0119\u015bciej, i mo\u017cliwie blisko odbiorc\u00f3w. Zmiana regionu po wdro\u017ceniu oznacza now\u0105 us\u0142ug\u0119 z nowym adresem, a wi\u0119c zmian\u0119 w DNS w\u0142asnej domeny albo w konfiguracji tag\u00f3w po stronie przegl\u0105darki \u2013 dlatego warto zdecydowa\u0107 raz, przed pierwsz\u0105 publikacj\u0105.<\/p>\n<\/div>\n\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/tag-manager\/server-side\" target=\"_blank\" rel=\"noopener noreferrer\">Server-side tagging overview<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/run\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">Cloud Run documentation<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Przewodnik techniczny po migracji Server-Side GTM z App Engine do GCP Cloud Run, konfiguracji min\/max instancji, pami\u0119ci, wsp\u00f3\u0142bie\u017cno\u015bci i unikania cold start\u00f3w.<\/p>\n","protected":false},"author":1,"featured_media":13784,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[92103,92133,92136,92044,92238,92116],"class_list":["post-8830","post","type-post","status-publish","format-standard","hentry","category-digital-analytics-pl","tag-google-cloud-pl","tag-google-tag-manager-pl","tag-server-side-gtm-pl","tag-tracking-pl","tag-tutorial-pl","tag-web-analytics-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Server-Side GTM na Cloud Run: limity instancji, pami\u0119\u0107, CPU, wsp\u00f3\u0142bie\u017cno\u015b\u0107 i cold starts w kontek\u015bcie koszt\u00f3w dzia\u0142ania.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Server-Side GTM na Cloud Run: limity instancji, pami\u0119\u0107, CPU, wsp\u00f3\u0142bie\u017cno\u015b\u0107 i cold starts w kontek\u015bcie koszt\u00f3w dzia\u0142ania.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-17T17:07:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-05T09:34:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8830-server-side-gtm-gcp-cloud-run-archit-g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w\",\"datePublished\":\"2026-08-17T17:07:00+00:00\",\"dateModified\":\"2026-10-05T09:34:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/\"},\"wordCount\":1219,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8830-server-side-gtm-gcp-cloud-run-archit-g.png\",\"keywords\":[\"Google Cloud\",\"Google Tag Manager\",\"Server-Side GTM\",\"Tracking\",\"Tutorial\",\"Web Analytics\"],\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/\",\"name\":\"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8830-server-side-gtm-gcp-cloud-run-archit-g.png\",\"datePublished\":\"2026-08-17T17:07:00+00:00\",\"dateModified\":\"2026-10-05T09:34:02+00:00\",\"description\":\"Server-Side GTM na Cloud Run: limity instancji, pami\u0119\u0107, CPU, wsp\u00f3\u0142bie\u017cno\u015b\u0107 i cold starts w kontek\u015bcie koszt\u00f3w dzia\u0142ania.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8830-server-side-gtm-gcp-cloud-run-archit-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-8830-server-side-gtm-gcp-cloud-run-archit-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w | Lukas Wojcik","description":"Server-Side GTM na Cloud Run: limity instancji, pami\u0119\u0107, CPU, wsp\u00f3\u0142bie\u017cno\u015b\u0107 i cold starts w kontek\u015bcie koszt\u00f3w dzia\u0142ania.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/","og_locale":"en_US","og_type":"article","og_title":"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w | Lukas Wojcik","og_description":"Server-Side GTM na Cloud Run: limity instancji, pami\u0119\u0107, CPU, wsp\u00f3\u0142bie\u017cno\u015b\u0107 i cold starts w kontek\u015bcie koszt\u00f3w dzia\u0142ania.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-17T17:07:00+00:00","article_modified_time":"2026-10-05T09:34:02+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8830-server-side-gtm-gcp-cloud-run-archit-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w","datePublished":"2026-08-17T17:07:00+00:00","dateModified":"2026-10-05T09:34:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/"},"wordCount":1219,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8830-server-side-gtm-gcp-cloud-run-archit-g.png","keywords":["Google Cloud","Google Tag Manager","Server-Side GTM","Tracking","Tutorial","Web Analytics"],"articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/","name":"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8830-server-side-gtm-gcp-cloud-run-archit-g.png","datePublished":"2026-08-17T17:07:00+00:00","dateModified":"2026-10-05T09:34:02+00:00","description":"Server-Side GTM na Cloud Run: limity instancji, pami\u0119\u0107, CPU, wsp\u00f3\u0142bie\u017cno\u015b\u0107 i cold starts w kontek\u015bcie koszt\u00f3w dzia\u0142ania.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8830-server-side-gtm-gcp-cloud-run-archit-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-8830-server-side-gtm-gcp-cloud-run-archit-g.png","width":1200,"height":630,"caption":"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/server-side-gtm-na-gcp-cloud-run-architektura-auto-scaling-i-optymalizacja\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Server-Side GTM na GCP Cloud Run: Architektura, Auto-Scaling i optymalizacja koszt\u00f3w"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8830","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=8830"}],"version-history":[{"count":5,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8830\/revisions"}],"predecessor-version":[{"id":18110,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8830\/revisions\/18110"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13784"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=8830"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=8830"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=8830"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}