Skip to content

SYSTEM Cited by 1 source

Zalando Contentful Proxy

What it is

Zalando's Contentful proxy is an internal data service sitting between the Fashion Store API (FSA) GraphQL aggregator and the Contentful third-party headless CMS. It was built by George Tagkalidis's team alongside the rest of the Landing Pages stack (Source: sources/2022-09-28-zalando-more-editorial-content-please).

Responsibilities

The proxy performs three jobs:

  1. Mapping — translates Contentful's JSON entry schema into the GraphQL types exposed by FSA. Each Contentful entry-type (landing-page, banner, product carousel, certificate module, …) has a corresponding mapping.
  2. Caching — caches Contentful responses so that every landing-page request does not reach out to an external API; keeps Contentful's per-second rate limits and latency variance off the hot path.
  3. Resilience / isolation — the proxy is the only Zalando component that calls Contentful. FSA and the rest of Zalando's aggregation tier talk exclusively to Zalando-operated APIs, per the post's explicit property: "This approach also ensures resilience and that the aggregation layer calls directly only Zalando-operated APIs."

It also serves as the enrichment join point where CMS-referenced IDs get enriched with data from other internal Zalando services — e.g. a list of certificate IDs in a Contentful entry is enriched with the logo URL, title, and description from the same system of record that feeds the Product Detail Page's sustainability accordion (concepts/cross-surface-content-unification, patterns/cross-surface-enrichment-via-internal-service).

Canonical wiki role

Canonical wiki instance of patterns/proxy-layer-for-external-saas. The proxy generalises as the architectural seam between an internal API platform and a best-of-breed SaaS: the SaaS owns its core competency (authoring UX for Contentful), the proxy owns the internal-contract surface (GraphQL types FSA can rely on) and the guarantees the internal platform needs (caching, uniform error semantics, resilience against the external service's outages or rate limits).

Worked example — Sustainability Certificate module

In the Landing Pages stack, a Sustainability Certificate module's Contentful entry stores:

  • Title, Subtitle, Description (intro copy)
  • A list of certificate IDs (not certificate details)

The proxy:

  • Maps this entry to the existing Collection GraphQL type already used elsewhere on Zalando, exposing the list via Collection.entities.
  • Resolves the certificate IDs against Zalando's internal certificate system of record — the same service that serves the Product Detail Page's sustainability accordion — returning a SustainabilityCertificate for each ID containing id, title, description, and a logo.uri.

The result is that a certificate shown on a landing page carries identical data to the same certificate shown on the PDP — "always in sync" — because both paths read from the same backend.

Seen in

Last updated · 550 distilled / 1,221 read