Skip to content

SYSTEM Cited by 1 source

Origami (Zalando Core Search API)

Origami is Zalando's Core Search API — the Scala application that is the single gateway between search-producing microservices (Search & Browse department) and Elasticsearch. Described verbatim on its internal repository page as: "the Zalando Core Search API. It provides a powerful information retrieval language and engine that integrates several microservice components built by the Search Department. In the landscape of Zalando Search and Browse platform, Origami is the connector - coordinating all search intelligence to serve correct search results to customers. Origami builds on top of Elasticsearch and our internal/Zalando-specific suite of APIs."

Scale (2023 snapshot)

Role

Origami does two jobs:

  1. Aggregation: coordinates Zalando's search-intelligence microservices (ranking, personalisation, etc.) into a single retrieval pipeline.
  2. Elasticsearch client: it is the application that directly issues Elasticsearch queries, and therefore the application that had to migrate from the deprecated 7.x High Level REST Client to the 8.x Java API Client during the 2023 ES 7.17→8.x migration.

Positioning on Zalando's search-platform stack

Compared to the customer-facing / product-rendering edges of Zalando Search (Interface Framework + Rendering Engine from the 2021-03-10 sources/2021-03-10-zalando-micro-frontends-from-fragments-to-renderers-part-1 post, and UBFF GraphQL BFF from the 2021-03-03 sources/2021-03-03-zalando-how-we-use-graphql-at-europes-largest-fashion-e-commerce-company post), Origami is the backend information-retrieval layer. It is not customer-facing but every search request Zalando serves touches it.

Seen in

  • sources/2023-11-19-zalando-migrating-from-elasticsearch-7-to-8 — Origami as the single application whose client-library surface had to migrate from HLRC to the Java API Client as a prerequisite for the ES 7→8 cluster upgrade. The Scala-vs-Java client decision (official Java API Client over unofficial Scala elastic4s) was driven by Origami's need for approximate-kNN DSL support. The three-classed Testcontainers parity test matrix (NewClient+OldES / OldClient+NewES / NewClient+NewES) was written in Origami's test suite.

Gaps in the wiki record

  • No QPS / latency / request-size disclosure for Origami.
  • No team size, microservice-dependency count, or deployment topology disclosure.
  • Relationship to UBFF GraphQL BFF (is Origami upstream of UBFF? accessed via UBFF for search resolvers? or a parallel API?) is not stated in any public Zalando post on the wiki.
  • The "Zalando-specific suite of APIs" in the self-description is unenumerated.
Last updated · 501 distilled / 1,218 read