Webentwicklung |

Nachhaltige Vercel-Deployments: Developer-Guide zur CO₂-Reduktion

Michael

20. Oktober 2025

tl;dr quick summary
Vercel Functions laufen standardmäßig in Washington D.C. auf einem der schmutzigsten Stromnetze (400g CO₂/kWh, 8% Erneuerbare). Mit einem einfachen Wechsel zu Stockholm oder Frankfurt reduzierst du Emissionen um 95%, verbesserst oft die Latenz für EU-User und bleibst GDPR-konform. Dieser Developer-Guide zeigt dir Schritt für Schritt, wie du deine Vercel-Apps grüner machst – mit Code-Beispielen, Regional-Analyse und Best Practices für Co-location.

TL;DR

  • Das Problem: Vercel Functions laufen standardmäßig in Washington D.C. (400g CO₂/kWh, 8% Erneuerbare)
  • Quick fix: Regionen ändern zu Stockholm (20g CO₂/kWh, 60% Erneuerbare) oder Portland (194g CO₂/kWh, 66% Erneuerbare) via vercel.json
  • Impact: 95% weniger Emissionen, oft bessere Latenz für EU-User, GDPR-Compliance-Vorteile
  • Trade-off: Achte auf die Locations deiner Datenquellen(n), um Extra-Roundtrips zu vermeiden
  • Bonus: Richtiges Caching eliminiert die Function-Execution komplett (null zusätzliche Emissionen durch Compute)

Einführung

Wir sind große Fans von Next.js und Vercel - die Developer Experience ist einfach sehr gut: CI/CD, Preview Deployments, Zero-Config Hosting. Nachdem wir das Green Software Manifesto unterzeichnet und uns als B Corp dem Bundesverband Green Software angeschlossen haben, stellten wir uns die Frage: Können wir unsere Vercel Workloads auf saubereren Stromnetzen betreiben, ohne Performance oder Kosten zu gefährden?

Kurze Antwort: Ja. Die Wahl der richtigen Regionen hat unsere Apps grüner, oft schneller und manchmal sogar günstiger gemacht. Wie wir das im Detail gemacht haben, lest ihr hier:

Das Problem: Die Standard-Konfiguration läuft auf High-Carbon Grids

Standardmäßig werden alle Vercel Node.js Functions in Washington D.C. (iad1) ausgeführt, das auf einem der schmutzigsten Stromnetze im Netzwerk läuft:

  • 400g CO₂/kWh
  • 8% erneuerbare Energie
  • 🙀 Hauptsächlich Kohle, Gas und Atomkraft

Strommix: Washington DC (2024, electritymaps.com)

Electricity Mix: Washington DC

Jede API Route, jedes Server-Side Rendering und jede Datenbank-Query läuft dort, es sei denn, du konfigurierst es anders. Das ist besonders relevant für User Bases außerhalb der USA. Als europäisches Unternehmen mit 80% der Visits aus Deutschland bedeutet das, dass Serverless Functions standardmäßig in den USA ausgeführt werden - was einen 12.000 km Roundtrip pro Function Call bedeutet.

hosting-map

Glücklicherweise bietet Vercel Optionen, um die Standard-Region(en) zu ändern.

Understanding Deciphering Vercel's Architektur

Die Terminologie von Vercel kann verwirrend sein. Lass uns klären, was Edge POPs und Function Regions tatsächlich bedeuten:

vercel cdn

Quelle: https://vercel.com/docs/cdn

POP vs Edge

Die 126 POPs (Points of Presence) sind eigentlich das, was ich als Edge Endpoints bezeichnen würde, da sie global verteilt sind, der erste Touchpoint eines Requests und damit am nächsten am User.

Die 19 Edge Regions sind die einzigen Compute-fähigen Regionen "where your code runs close to your data", weshalb ich vorschlagen würde, sie eher Function Regions statt Edge Regions zu nennen.

Siehe Region List und Runtimes für mehr Hintergrund.

Das bedeutet...

POPs

  • (CDN) Cache: Static Assets, cached Responses
  • Edge Functions: Kann Edge Functions mit einer limited Runtime ausführen (ähnlich wie Cloudflare Workers)

Edge Function Region

  • Serverless Functions: Hier werden Serverless Functions (Node.js, Go, Python, Ruby) ausgeführt
  • Data Cache: HTTP Calls, die innerhalb deiner Function gemacht werden, werden genau in dieser Region gecacht

Caches

vercel-cache

Edge Cache (liegt in der POP Region)

Requests kommen am nächsten POP (Edge) an und hier liegen die gecachten Daten:

Vercel's Cache is used for caching entire static assets at the edge, such as images, fonts, and JavaScript bundles.

Vercel stellt klar, dass "Static files are automatically cached at the edge on Vercel's CDN for the lifetime of the deployment after the first request."

Damit es nicht zu einfach wird, gibt es noch drei weitere Begriffe, die mit dem Edge Cache zusammenhängen:

  • Fast Origin Transfer: Der Data Transfer zwischen Vercels CDN (POP) und Vercel Compute (Function Region)
  • Fast Data Transfer: Der Data Transfer zwischen Vercels CDN (POP) und den End Users deiner Site (Browser)
  • ISR: Incremental Static Regeneration: (ISR) erlaubt es dir, Content auf deiner Site zu erstellen oder zu updaten, ohne ein Redeployment zu machen, der dann am Edge (POP) gecacht wird

Du kannst die Response Headers checken, um zu sehen, ob ein Request aus dem Cache kam und welcher POP für die Auslieferung zuständig war:

HeaderValueBeschreibung
x-vercel-cacheHITZeigt Cache Hit an
x-vercel-idfra1::fm62r-1758702865455-d92e4103debcZeigt POP Location

In diesem Fall ist "fra1" Frankfurt, Deutschland. Siehe Region List

Data Cache (liegt in der Function Region)

Der Data Cache befindet sich in der Function Region, die du definiert hast. Alle fetch Calls werden zum Beispiel an der gleichen Location wie deine Function gecacht. Jede Region hat allerdings ihren eigenen Cache. Ein gecachter Fetch Call in Frankfurt ist nicht in Stockholm verfügbar.

Du kannst das selbst auf Vercel nachschauen: Observability > Data Cache

Functions / Compute - Das Herzstück der Carbon Optimization

Jetzt kommen wir zum Kern dieses Guides: wo dein Compute tatsächlich läuft. Hier hast du die meiste Kontrolle über deinen Carbon Footprint und hier machen regionale Entscheidungen den größten Unterschied.

vercel compute

Vercel hat drei Arten von Compute, jede mit unterschiedlichen Carbon-Implikationen:

Der Routing Flow:

  • Request trifft nächsten PoP (von 126 weltweit)
  • Static Content wird aus dem Cache ausgeliefert, falls verfügbar
  • Edge Functions laufen am PoP
  • Node.js Functions routen zu deiner konfigurierten Region (Function Region)

☝️ Vercel sagt: "We recommend migrating from edge to Node.js for improved performance and reliability." (https://vercel.com/docs/functions/runtimes)

Steps 3 & 4 sind das, was du kontrollierst. Mit Vercels Empfehlung zur Migration von Edge zu Node.js Runtime wird die regionale Optimierung noch wichtiger.

Debugging Request Flow:

To see how your requests flow through the Vercel Edge Network, you can check the x-vercel-id header in your HTTP responses. This header reveals the edge region that handled the request and the region where any functions (Edge or serverless) were executed.

vercel debug request

Du kannst auch im Vercel Dashboard nachschauen: Observability → Data Cache und Regions, um dein Setup zu verifizieren.

💡 Wer noch tiefer abtauchen möchte, dem empfehle ich diese Blogpost-Serie von Vercel:

🗺️ Regions-Analyse: Carbon Intensity Daten

Wir haben EU- und US-Vercel Compute Regions analysiert und dabei 2024 Annual Average Data von ElectricityMaps verwendet (abgerufen September 2025).

Europa: Die klaren Gewinner

RegionLocationCO₂ (g/kWh)% Renewables
arn1Stockholm, Schweden2060%
cdg1Paris, Frankreich5821%
dub1Dublin, Irland34246%
fra1Frankfurt, Deutschland38243%
lhr1London, UK28039%

Stockholm (arn1) ist der absolute Champion mit 95% weniger Emissionen als Washington D.C. und einer der saubersten Compute-Regions weltweit.

USA: Große Unterschiede

RegionLocationCO₂ (g/kWh)% Renewables
pdx1Portland, USA19466%
sfo1San Francisco, USA25761%
iad1Washington D.C., USA (DEFAULT)4008%
cle1Cleveland, USA4767%

Portland (pdx1) reduziert Emissionen um 51% verglichen mit dem Washington-Default, während du in den USA bleibst.

Globale Optionen

RegionLocationCO₂ (g/kWh)% Renewables
gru1São Paulo, Brasilien9380%
sin1Singapur4024%
syd1Sydney, Australien58829%
hnd1Tokio, Japan46115%

🛠️ Umsetzung: Deine Function Region ändern

Es gibt drei Wege, deine Function Region(s) zu konfigurieren:

1. Serverless Functions (Node.js, Go, Python, Ruby)

Method 1: vercel.json (empfohlen)

Method 2: CLI Command

Method 3: Dashboard Configuration

vercel region config

Project Settings → Functions → Function Regions → Select Regions

2. Edge Functions

Per-Route Configuration

Note: Per-route preferredRegion ist limitiert auf Edge Functions. Siehe Vercel Edge Runtime - Regions

Wo ist der Haken? Stichwort "Co-location"

Es reicht nicht die sauberste Region zu wählen - berücksichtige deine Datenquellen und User Location

By default, Vercel Functions execute in Washington, D.C., USA (iad1) for all new projects to ensure they are located close to most external data sources, which are hosted on the East Coast of the USA.

In: https://vercel.com/docs/functions/configuring-functions/region

Während dieser Default für US-zentrische Anwendungen Sinn macht, ist er möglicherweise nicht optimal für Unternehmen mit anderen User-Verteilungen oder Data Residency Anforderungen (Stichwort DSGVO!).

Die Distanz zwischen deinen Usern, Function Regions und Datenquellen hat erheblichen Impact sowohl auf Carbon Emissions als auch auf Latenz.

Um die richtige Region(en) auszuwählen, musst du zwei Fragen beantworten:

A quick reference guide for calculating the impact of colocation:

Latency

~5-7ms per 1,000 km

Carbon

~0.05 Wh/GB/km (0.00005 kWh/GB/km) for network transmission in fiber networks

Rule of thumb

Real-world fiber paths are typically 1.5× great-circle distance due to routing

1. Wo befinden sich deine User?

Schau dir deine Analytics an und versuche, Regionen zu finden, die so nah wie möglich, so grün wie möglich und vollständig konform mit deinen rechtlichen Requirements sind (GDPR → EU-only).

Beispiel: Wenn der Großteil deines Traffics aus Deutschland kommt, bedeutet das Default Routing nach Washington 12.000km Roundtrip pro Function Call und eine mögliche GDPR-Verletzung.

Du kannst Vercels eigene Observability Notebooks nutzen, um die POP-Verteilung nachzuschauen.

obs edge region

2. Wo befinden sich deine Datenquellen?

Deine Function könnte verschiedene Datenquellen aufrufen, um die Daten zu bekommen, die sie für Rendering/Response braucht. Diese sollten möglichst nah an deiner Function Location sein.

Beispiel: Wenn der Großteil deines Traffics aus Deutschland kommt, deine Function so eingestellt ist, dass sie in Washington läuft, und die Datenbank in Frankfurt läuft, hast du noch einen weiteren 12.000 km Roundtrip on top.

API Endpoints

API Endpoints wie der GraphQL Endpoint deines liebsten Headless CMS (unseres ist DatoCMS) werden von der Function aufgerufen. Versuche herauszufinden, wo deren Server laufen. In den meisten Fällen sind diese APIs global verteilt und gecacht, sodass du vielleicht nur den Edge Node findest, den dein Fetch Call erreicht. Das ist in Ordnung, denn in diesem Fall musst du dich selbst nicht darum kümmern. Zusätzlich werden die meisten Fetch Calls von Vercel im Data Cache in der gleichen Region gecacht, in der deine Function ausgeführt wird.

Du kannst die externen APIs und den Cache Status in den Vercel Logs sehen.

vercel request log

Databases

Moderne Cloud-Datenbanken bieten dir die Option, die Region zu definieren und/oder Read Replicas in mehreren Regionen zu definieren. Das ist besonders wichtig, wenn es um GDPR und Compliance geht.

Schauen wir uns drei bekannte Beispiele aus dem Vercel-Universum an:

Vercel vs Database Provider Regional Coverage Matrix (September 2025)

Vercel RegionReference LocationNeon: PostgreSQLSupabase: PostgreSQLUpstash: Redis
arn1Stockholm, Schweden✅ eu-north-1
bom1Mumbai, Indien✅ ap-south-1✅ ap-south-1
cdg1Paris, Frankreich✅ eu-west-3
cle1Cleveland, USA⚪ us-east-2
cpt1Kapstadt, Südafrika
dub1Dublin, Irland✅ eu-west-1✅ eu-west-1
dxb1Dubai, VAE
fra1Frankfurt, Deutschland✅ eu-central-1 + azure-gwc✅ eu-central-1✅ eu-central-1
gru1São Paulo, Brasilien✅ sa-east-1✅ sa-east-1✅ sa-east-1
hkg1Hongkong
hnd1Tokio, Japan✅ ap-northeast-1✅ ap-northeast-1
iad1Washington D.C., USA✅ us-east-1 + azure-eastus2✅ us-east-1✅ us-east-1
icn1Seoul, Südkorea✅ ap-northeast-2
kix1Osaka, Japan
lhr1London, UK✅ eu-west-2✅ eu-west-2✅ eu-west-2
pdx1Portland, USA✅ us-west-2✅ us-west-2
sfo1San Francisco, USA✅ us-west-1✅ us-west-1
sin1Singapur✅ ap-southeast-1✅ ap-southeast-1✅ ap-southeast-1
syd1Sydney, Australien✅ ap-southeast-2✅ ap-southeast-2✅ ap-southeast-2
  • Direct Regional Match - Provider hat ein Rechenzentrum in der gleichen oder sehr nahen Location
  • Nearby Region - Provider bedient diese Region von einer nahen Location aus (höhere Latenz)
  • No Coverage - Provider hat keine Präsenz in dieser Region oder in der Nähe

Quellen:

Real-World-Beispiel

Betrachte eine deutsche E-Commerce-Site mit dem Default Setup (Functions in Washington, D.C., Database in Frankfurt):

  • User Request: Berlin → Frankfurt (POP) → Washington, D.C. (~6.550 km)
    • Database Query: Washington, D.C. → Frankfurt (~6.550 km)
    • Database Response: Frankfurt → Washington, D.C. (~6.550 km)
  • Response to User: Washington, D.C. → Frankfurt (POP) → Berlin (~6.550 km)

Distanz gesamt: ~26.000 km über den Ozean für einen einzigen Request, der Database-Daten braucht.

Impact schätzen (nur Network):

  • Latency Overhead: ~200–260 ms zusätzlich (vs. ~10–20 ms, wenn alles in Frankfurt wäre)
  • Carbon Overhead: ~0,12 g CO₂ pro Request (≈1 MB crossing the Atlantic; skaliert linear)
  • At Scale: 10M Requests/Monat ≈ ~14 t CO₂/Jahr allein durch Transmission (≈~18 t/Jahr bei 0,15 g/Request)
  • Fixed Networks nutzen etwa 0,05 Wh pro GB·km. Bei angenommenen ~1 MB total, die pro Request über den Atlantik gehen (Request + DB Roundtrip + Response), sind das ≈ 0,33 Wh~0,12 g CO₂ pro Request (bei ~360 g CO₂/kWh). Payload skaliert linear: ein schlankes ~0,35 MB wären ~0,04–0,05 g; ~1,3 MB ≈ ~0,15 g.

Durch Co-location von Functions und Daten in Frankfurt eliminierst du die transatlantischen Endpunkte und reduzierst Latenz und Carbon um bis zu ~85–90%.

Wichtig: Cache Hits umgehen Function Execution und Long-haul Transit, sodass zusätzliches Network CO₂ effektiv null ist, unabhängig von der Region. Richtige Cache-Control Headers können sowohl Emissionen als auch Latenz dramatisch reduzieren und sind immer empfehlenswert!

Das große Ganze

Vercels Sustainability-Ansatz ist begrenzt - ihre Green Energy Policy delegiert hauptsächlich an AWS und Microsoft. Wir würden uns wünschen, dass Vercel Nachhaltigkeit ernst nimmt, per-Region Sustainability Metrics veröffentlicht und es ins Green Web Directory schafft.

Aber während wir darauf warten, ist die Optimierung der Regionen ein konkreter Schritt, den Developer heute machen können.

Quellen:

Fragen oder Erfahrungen? Immer her damit!

Vercel

Next.js

Green Software

Sustainable Development

Carbon Emissions

Developer Guide

Weitere Themen

Nick, 12.11.2025

Green Coding: Ein Entwicklerleitfaden für nachhaltige Software

Green Coding

Green IT

Carbon Footprint

Sustainability

Zum Blogartikel
Foto eines Computer-Terminals mit grünem und blauem Text auf schwarzem Hintergrund

Julia, 14.10.2025

Leitfaden zum Terminal für Anfänger

Terminal

Guide

Beginner

Development

Zum Blogartikel

Lisa, 30.06.2025

„Wie nachhaltig ist mein Unternehmen?“ Ein erster Blick mit dem B Impact Assessment

Corporate Social Responsibility

B Corp Zertifizierung

B Impact Assessment

Nachhaliges Wirtschaften

Impact Tools

Zum Blogartikel