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:
- 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.
- 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.
- 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
CollectionGraphQL type already used elsewhere on Zalando, exposing the list viaCollection.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
SustainabilityCertificatefor each ID containingid,title,description, and alogo.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¶
- sources/2022-09-28-zalando-more-editorial-content-please — canonical (and only) public disclosure of the Contentful proxy's existence, responsibilities, and enrichment-join role.
Related¶
- systems/contentful · systems/zalando-landing-pages-stack · systems/zalando-fashion-store-api · systems/zalando-graphql-ubff · systems/zalando-rendering-engine
- concepts/headless-cms · concepts/cross-surface-content-unification
- patterns/proxy-layer-for-external-saas · patterns/cross-surface-enrichment-via-internal-service
- companies/zalando