{"id":496,"date":"2026-09-25T13:40:00","date_gmt":"2026-09-25T11:40:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?p=496"},"modified":"2026-09-25T10:49:12","modified_gmt":"2026-09-25T08:49:12","slug":"serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/","title":{"rendered":"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions"},"content":{"rendered":"\r\n<p class=\"wp-block-paragraph\">Der Betrieb von Microservices auf statischen virtuellen Maschinen oder dauerhaft laufenden Kubernetes-Clustern verursacht kontinuierliche Basis-Infrastrukturkosten, selbst in langen Phasen v\u00f6lliger Inaktivit\u00e4t. Die Bereitstellung zustandsloser (stateless) Container-Web-APIs auf Google Cloud Run erm\u00f6glicht eine vollst\u00e4ndig verwaltete, serverlose Architektur, die au\u00dferhalb der Gesch\u00e4ftszeiten automatisch auf null Instanzen skaliert und bei pl\u00f6tzlichen Lastspitzen sofort Tausende von Containern parallel bereitstellt. Die Verkn\u00fcpfung dieses Deployment-Modells mit GitHub Actions und Workload Identity Federation etabliert eine wartungsfreie, hochsichere CI\/CD-Pipeline, ohne dass langlebige Service-Account-JSON-Schl\u00fcssel in externen Repositories gespeichert werden m\u00fcssen.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">1. Architektur-Grundlagen: Scale-to-Zero &amp; schl\u00fcsselloses CI\/CD<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Eine professionelle serverlose Bereitstellungsarchitektur auf der Google Cloud basiert auf drei entkoppelten Komponenten:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>Google Cloud Run Container-Ausf\u00fchrung:<\/strong> Zustandslose Container werden ausschlie\u00dflich bei eingehenden HTTP-Anfragen gestartet. Konkurrenz-Einstellungen (Concurrency) erlauben es einer einzigen Container-Instanz, bis zu 80 gleichzeitige Requests (Voreinstellung, einstellbar bis 1000) zu verarbeiten, bevor die horizontale Skalierung weitere Instanzen startet.<\/li>\r\n<li><strong>Workload Identity Federation (WIF):<\/strong> Ersetzt statische, exportierbare Service-Account-JSON-Schl\u00fcssel durch einen OpenID-Connect-Tokenaustausch (OIDC) zwischen GitHub und Google Cloud IAM, was Sicherheitsrisiken durch geleakte Credentials eliminiert.<\/li>\r\n<li><strong>GitHub Actions Pipeline:<\/strong> Ein automatisierter Workflow baut das Anwendungs-Docker-Image, \u00fcbertr\u00e4gt es in die Google Artifact Registry und aktualisiert die Cloud-Run-Revision ohne Ausfallzeit.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/hand-cloudrun-de.png\" width=\"1120\" height=\"640\" alt=\"Zwei nummerierte Phasen: Vertrauensaufbau \u00fcber Workload Identity Federation, dann Bauen und Ausliefern nach Cloud Run, mit durchgestrichenem hinterlegtem JSON-Schl\u00fcssel\">\n<figcaption>Die Pipeline h\u00e4lt zu keinem Zeitpunkt ein dauerhaftes Geheimnis: GitHub weist nach, wer es ist, Google gibt ein Token f\u00fcr Minuten zur\u00fcck, und erst danach wird \u00fcberhaupt gebaut oder ausgeliefert.<\/figcaption>\n<\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">2. Schritt-f\u00fcr-Schritt-Einrichtung von Workload Identity Federation<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Um eine schl\u00fcssellose Authentifizierung f\u00fcr GitHub Actions einzurichten, wird \u00fcber die Google Cloud CLI ein Workload Identity Pool samt Provider bereitgestellt:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code class=\"language-bash\"># 1. Workload Identity Pool anlegen\ngcloud iam workload-identity-pools create \"github-actions-pool\" \\\n  --project=\"enterprise-ai-project\" \\\n  --location=\"global\" \\\n  --display-name=\"GitHub Actions Pool\"\n\n# 2. OIDC Identity Provider f\u00fcr GitHub erstellen\ngcloud iam workload-identity-pools providers create-oidc \"github-provider\" \\\n  --project=\"enterprise-ai-project\" \\\n  --location=\"global\" \\\n  --workload-identity-pool=\"github-actions-pool\" \\\n  --display-name=\"GitHub Provider\" \\\n  --attribute-mapping=\"google.subject=assertion.sub,attribute.actor=assertion.actor,attribute.repository=assertion.repository\" \\\n  --attribute-condition=\"assertion.repository_owner == 'enterprise-org'\" \\\n  --issuer-uri=\"https:\/\/token.actions.githubusercontent.com\"\n\n# 3. Service Account mit dem GitHub-Repository verkn\u00fcpfen\ngcloud iam service-accounts add-iam-policy-binding \"ci-cd-deployer@enterprise-ai-project.iam.gserviceaccount.com\" \\\n  --project=\"enterprise-ai-project\" \\\n  --role=\"roles\/iam.workloadIdentityUser\" \\\n  --member=\"principalSet:\/\/iam.googleapis.com\/projects\/1234567890\/locations\/global\/workloadIdentityPools\/github-actions-pool\/attribute.repository\/enterprise-org\/microservice-repo\"<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">3. Schritt-f\u00fcr-Schritt-Konfiguration der GitHub-Actions-Workflow-YAML<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Die automatisierte Deployment-Pipeline erfordert eine strukturierte YAML-Konfiguration im Pfad <code>.github\/workflows\/deploy.yml<\/code>. Dieser Workflow authentifiziert sich per OIDC, erstellt das Container-Image und f\u00fchrt das Deployment in Cloud Run mit expliziten Skalierungs- und Concurrency-Parametern aus:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code class=\"language-yaml\">name: Deploy to Google Cloud Run\n\non:\n  push:\n    branches:\n      - main\n\npermissions:\n  contents: 'read'\n  id-token: 'write'\n\njobs:\n  build-and-deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout Code\n        uses: actions\/checkout@v4\n\n      - name: Authenticate to Google Cloud\n        uses: google-github-actions\/auth@v2\n        with:\n          workload_identity_provider: 'projects\/1234567890\/locations\/global\/workloadIdentityPools\/github-actions-pool\/providers\/github-provider'\n          service_account: 'ci-cd-deployer@enterprise-ai-project.iam.gserviceaccount.com'\n\n      - name: Set up Cloud SDK\n        uses: google-github-actions\/setup-gcloud@v2\n\n      - name: Configure Docker for Artifact Registry\n        run: gcloud auth configure-docker us-central1-docker.pkg.dev\n\n      - name: Build and Push Docker Image\n        run: |\n          docker build -t us-central1-docker.pkg.dev\/enterprise-ai-project\/services\/api-service:${{ github.sha }} .\n          docker push us-central1-docker.pkg.dev\/enterprise-ai-project\/services\/api-service:${{ github.sha }}\n\n      - name: Deploy to Cloud Run\n        run: |\n          gcloud run deploy api-service \\\n            --image us-central1-docker.pkg.dev\/enterprise-ai-project\/services\/api-service:${{ github.sha }} \\\n            --region us-central1 \\\n            --platform managed \\\n            --allow-unauthenticated \\\n            --min-instances 0 \\\n            --max-instances 50 \\\n            --concurrency 80 \\\n            --memory 512Mi \\\n            --cpu 1<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">4. Schritt-f\u00fcr-Schritt-Skalierungs- &amp; Concurrency-Engineering<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Um eine optimale Ressourcenauslastung zu gew\u00e4hrleisten und Kaltstart-Latenzen (Cold Starts) zu minimieren, m\u00fcssen die Cloud-Run-Laufzeitparameter pr\u00e4zise konfiguriert werden:<\/p>\r\n\r\n\r\n\r\n<ol class=\"wp-block-list\">\r\n<li><strong>Scale-to-Zero-Verifizierung (<code>--min-instances=0<\/code>):<\/strong> Erlaubt Cloud Run, den Dienst ohne Verkehr auf null Instanzen herunterzufahren; ungenutzte Instanzen k\u00f6nnen bis zu 15 Minuten vorgehalten werden, werden bei der voreingestellten anfragebasierten Abrechnung aber nicht berechnet, wodurch die Laufzeitkosten in Ruhephasen exakt auf 0,00 Euro sinken.<\/li>\r\n<li><strong>Concurrency-Tuning (<code>--concurrency=80<\/code>):<\/strong> Erm\u00f6glicht es einer einzelnen Container-CPU, bis zu 80 Anfragen gleichzeitig zu bearbeiten, was den Speicherbedarf und das permanente Starten neuer Container im Vergleich zu Single-Concurrency-Modellen drastisch senkt.<\/li>\r\n<li><strong>CPU-Drosselungs-Allokation:<\/strong> Standardm\u00e4\u00dfig wird die CPU au\u00dferhalb aktiver HTTP-Requests gedrosselt. Falls Hintergrundprozesse nach einer HTTP-Antwort weiterlaufen m\u00fcssen, ist der Parameter `&#8211;no-cpu-throttling` in Kombination mit `&#8211;min-instances=1` zu setzen.<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">5. Zusammenfassung &amp; Mehrwert<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Was sich damit erreichen l\u00e4sst:<\/strong> Die erfolgreiche Bereitstellung einer vollautomatisierten, schl\u00fcssellosen CI\/CD-Deployment-Pipeline f\u00fcr Container-Microservices auf Google Cloud Run unter Nutzung von GitHub Actions und Workload Identity Federation.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\"><strong>Resultierender Mehrwert:<\/strong> Die Hosting-Kosten werden minimiert, da die Serverausgaben in Inaktivit\u00e4tszeiten komplett entfallen, w\u00e4hrend die Architektur bei Verkehrsspitzen innerhalb von Sekunden automatisch skaliert. Der Verzicht auf statische JSON-Schl\u00fcssel eliminiert Sicherheitsrisiken durch geleakte Zugangsdaten, und die pr\u00e4zise Concurrency-Konfiguration maximiert die Containereffizienz f\u00fcr einen komplett wartungsfreien Backend-Betrieb.<\/p>\r\n\n\n<div class=\"lw-faq\">\n<h2>Fragen und Antworten<\/h2>\n\n<h3>Kostet ein Dienst, der auf null Instanzen skaliert, wirklich nichts?<\/h3>\n<p>Die Laufzeit kostet nichts, der Rest der Kette schon. Jeder Lauf der Pipeline legt ein neues Image mit dem Commit-Hash als Tag in der Artifact Registry ab, und dieser Speicher wird nach Menge berechnet, ob der Dienst l\u00e4uft oder nicht. Eine Bereinigungsregel in der Artifact Registry, die alte Images l\u00f6scht und einige neuere beh\u00e4lt, damit der R\u00fccksprung auf eine fr\u00fchere Revision m\u00f6glich bleibt, h\u00e4lt diesen Posten klein.<\/p>\n\n<h3>Welche Rollen braucht der Service Account ci-cd-deployer au\u00dfer der Workload-Identity-Bindung?<\/h3>\n<p>Die Bindung mit <code>roles\/iam.workloadIdentityUser<\/code> erlaubt GitHub nur, sich als dieses Konto auszuweisen. Was das Konto danach tun darf, legen weitere Rollen fest, und der Workflow braucht drei davon:<\/p>\n<ol>\n<li>Schreibzugriff auf das Repository der Artifact Registry, \u00fcblicherweise <code>roles\/artifactregistry.writer<\/code>; ohne ihn scheitert <code>docker push<\/code>.<\/li>\n<li>Eine Cloud-Run-Rolle zum Bereitstellen. <code>roles\/run.developer<\/code> gen\u00fcgt f\u00fcr <code>gcloud run deploy<\/code>, nicht aber f\u00fcr <code>--allow-unauthenticated<\/code>: Dieser Schalter \u00e4ndert die IAM-Richtlinie des Dienstes, und das darf erst <code>roles\/run.admin<\/code>.<\/li>\n<li><code>roles\/iam.serviceAccountUser<\/code> auf dem Service Account, unter dem der Dienst l\u00e4uft; ohne eigene Angabe ist das das Compute-Engine-Standardkonto des Projekts. Ohne diese Rolle darf der Deployer keine Revision anlegen, die unter einer anderen Identit\u00e4t l\u00e4uft.<\/li>\n<\/ol>\n<p>Sinnvoll ist, diese Rollen so eng wie m\u00f6glich zu vergeben, also auf das eine Repository und den einen Dienst statt auf das ganze Projekt. Ein geleakter Schl\u00fcssel ist ausgeschlossen, ein fehlerhafter Workflow nicht, und die Rollen bestimmen, wie weit sein Schaden reicht.<\/p>\n\n<h3>Gen\u00fcgt die Bindung an das Repository, oder kann jeder Branch bereitstellen?<\/h3>\n<p>Die Bindung gilt f\u00fcr das ganze Repository. Der Workflow startet zwar nur bei einem Push auf main, aber jede andere Workflow-Datei im selben Repository, auch auf einem anderen Branch, kann mit <code>id-token: write<\/code> ein Token anfordern, und Google nimmt es an, weil das Attribut <code>repository<\/code> passt.<\/p>\n<p>Enger wird es \u00fcber den Branch, den das OIDC-Token von GitHub im Feld <code>ref<\/code> tr\u00e4gt. Eine Bedingung am Provider wie <code>assertion.ref == 'refs\/heads\/main'<\/code> (per <code>&amp;&amp;<\/code> an <code>--attribute-condition<\/code> angeh\u00e4ngt) oder ein zus\u00e4tzlich abgebildetes Attribut, an das der Service Account gebunden wird, l\u00e4sst nur noch L\u00e4ufe von main durch. Die in Abschnitt 2 gesetzte Bedingung auf <code>assertion.repository_owner<\/code> sorgt au\u00dferdem daf\u00fcr, dass der Pool Tokens fremder Organisationen gar nicht erst annimmt.<\/p>\n\n<h3>Was kostet die Kombination aus &#8211;no-cpu-throttling und &#8211;min-instances=1?<\/h3>\n<p>Den Vorteil, mit dem der Artikel beginnt. Eine Mindestinstanz mit dauerhaft zugeteilter CPU l\u00e4uft rund um die Uhr und wird auch dann berechnet, wenn keine Anfrage kommt; die Laufzeitkosten fallen in Ruhephasen also nicht mehr auf null. F\u00fcr Arbeit nach der Antwort ist deshalb oft eine eigene Warteschlange oder ein Cloud Run Job die g\u00fcnstigere Wahl, sodass der Webdienst selbst weiter auf null skalieren kann.<\/p>\n<\/div>\n\n<div class=\"lw-quellen\">\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.cloud.google.com\/run\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">Cloud Run documentation<\/a><\/li>\n<li><a href=\"https:\/\/docs.docker.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker documentation<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Eine technische Schritt-f\u00fcr-Schritt-Anleitung zur Bereitstellung und Skalierung serverloser Microservices auf Google Cloud Run mit GitHub Actions und WIF.<\/p>\n","protected":false},"author":1,"featured_media":14056,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92638],"tags":[92055,92214,92217,92094,92235],"class_list":["post-496","post","type-post","status-publish","format-standard","hentry","category-tutorials-de-cloud-ai-de","tag-automation-de","tag-devops-de","tag-docker-de","tag-google-cloud-de","tag-tutorial-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions - Lukas Wojcik - Blog<\/title>\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\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Eine technische Schritt-f\u00fcr-Schritt-Anleitung zur Bereitstellung und Skalierung serverloser Microservices auf Google Cloud Run mit GitHub Actions und WIF.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-25T11:40:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-496-serverless-microservices-skalierung--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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions\",\"datePublished\":\"2026-09-25T11:40:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/\"},\"wordCount\":954,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-496-serverless-microservices-skalierung--g.png\",\"keywords\":[\"Automation\",\"DevOps\",\"Docker\",\"Google Cloud\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/\",\"name\":\"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-496-serverless-microservices-skalierung--g.png\",\"datePublished\":\"2026-09-25T11:40:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-496-serverless-microservices-skalierung--g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-496-serverless-microservices-skalierung--g.png\",\"width\":1200,\"height\":630,\"caption\":\"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/cloud-ai-de\\\/tutorials-de-cloud-ai-de\\\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions\"}]},{\"@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":"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions - Lukas Wojcik - Blog","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\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/","og_locale":"en_US","og_type":"article","og_title":"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions - Lukas Wojcik - Blog","og_description":"Eine technische Schritt-f\u00fcr-Schritt-Anleitung zur Bereitstellung und Skalierung serverloser Microservices auf Google Cloud Run mit GitHub Actions und WIF.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-25T11:40:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-496-serverless-microservices-skalierung--g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions","datePublished":"2026-09-25T11:40:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/"},"wordCount":954,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-496-serverless-microservices-skalierung--g.png","keywords":["Automation","DevOps","Docker","Google Cloud","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/","name":"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-496-serverless-microservices-skalierung--g.png","datePublished":"2026-09-25T11:40:00+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-496-serverless-microservices-skalierung--g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-496-serverless-microservices-skalierung--g.png","width":1200,"height":630,"caption":"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/cloud-ai-de\/tutorials-de-cloud-ai-de\/serverless-microservices-skalierung-in-google-cloud-run-mit-github-actions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Serverless Microservices: Skalierung in Google Cloud Run mit GitHub Actions"}]},{"@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\/496","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=496"}],"version-history":[{"count":6,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/496\/revisions"}],"predecessor-version":[{"id":20602,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/496\/revisions\/20602"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/14056"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}