{
  "schema_version": "1.0",
  "id": "archive:https://vercel.com/changelog/secure-internal-communication-between-services",
  "slug": "secure-internal-communication-between-services-1usj7m4",
  "url": "https://feed7.dev/p/secure-internal-communication-between-services-1usj7m4",
  "title": "Secure internal communication between services",
  "why_included": "Vercel Service Bindings let one service in a deployment call another via an injected env var URL, with internal routing, auth, and TLS handled — e.g. a Next.js frontend reaching a FastAPI backend privately.",
  "summary": "**The gist** Vercel shipped **Service Bindings**: a service declares a binding to another service in the same deployment, Vercel injects an **environment variable** holding an internal URL, and a plain HTTPS fetch works — **routing, auth, and TLS** are handled internally, off the public route table.",
  "practical_implication": "**Why it matters** Multi-service apps on one deployment get practical: a **Next.js frontend** can call a **FastAPI backend** without exposing it publicly or managing certificates, and each call shows in **observability** with the target service and duration.",
  "agent_context": "**The gist** Vercel shipped **Service Bindings**: a service declares a binding to another service in the same deployment, Vercel injects an **environment variable** holding an internal URL, and a plain HTTPS fetch works — **routing, auth, and TLS** are handled internally, off the public route table.\n\n**Why it matters** Multi-service apps on one deployment get practical: a **Next.js frontend** can call a **FastAPI backend** without exposing it publicly or managing certificates, and each call shows in **observability** with the target service and duration.\n\n**Watch out** Billing is its own lane — bound calls count as **Service Requests** and **Fast Origin Transfer**, not CDN Requests — so check current rates before routing chatty internal traffic; a service stays unreachable unless exposed via a **rewrite or a binding**.",
  "source": {
    "name": "Vercel",
    "url": "https://vercel.com/changelog/secure-internal-communication-between-services",
    "published_at": null
  },
  "source_class": "blog_post",
  "content_type": "Engineering Post",
  "layer": "infra",
  "domains": [],
  "topics": [],
  "verification": {
    "status": "official_source",
    "label": "Official Source",
    "method": "source_feed",
    "verified_at": null
  },
  "uncertainty": [
    "Billing is its own lane — bound calls count as **Service Requests** and **Fast Origin Transfer**, not CDN Requests — so check current rates before routing chatty internal traffic; a service stays unreachable unless exposed via a **rewrite or a binding**."
  ],
  "lifecycle": "Current",
  "published_at": null,
  "modified_at": null,
  "supersedes": [],
  "expires_at": null,
  "formats": {
    "html": "https://feed7.dev/p/secure-internal-communication-between-services-1usj7m4",
    "json": "https://feed7.dev/p/secure-internal-communication-between-services-1usj7m4.json",
    "markdown": "https://feed7.dev/p/secure-internal-communication-between-services-1usj7m4.md"
  }
}