Page tree
Skip to end of metadata
Go to start of metadata



Magnolia Monolith vs. Microservices vs. Macroservices

Christopher Kaiser

Integration Patterns

Discussion. We work to improve the speed and ease of implementing integrations with Magnolia. We also work to improve their maintainability and User experience.…

Christopher Zimmermann, Product Manager at Magnolia



  • Configure without coding, Webhooks would be nice, event descriptors
  • Connect with e.g. headless shop systems; is Magnolia the right place to host product data?
    • going domain-driven, Magnolia = Content hub; all integrations rather on the client side
    • not ideal for the editor; choose the product they want, etc.
  • Similar case from backend systems;
    • how much do you store in the CMS? export your product db or access only when needed
    • call when page is rendered? layer of caching in the CMS?
  • Lot of data in (old) PIM system & lot in Magnolia too; 
    • sporadic updates, diverging
  • Dynamic data (pricing, campaigns); distributed product db
    • integration to the catalog from Magnolia
  • Save structured data; need an REST API w/ a spec (open API, swagger), 2 requirements
    • mock to test in frontend 
    • work with real data, safe anywhere
  • Content app not JCR-based solves one side of the problem
  • Insights from Magnolia's short-term 
    • building upon Light development, Content Types, REST Delivery API
    • Declarative REST clients coming via YAML (baseUrls, connection details, methods proxied) => remove the need for the Java proxy interface
    • Content Types will be used to make Magnolia aware of external content too (REST datasource definition)
    • New UI framework will be able to infer default Content app for external content types
    • Delivery endpoint may also proxy/serve "remote" content types too, eventually 
  • Java-class is a killer, needs a restart; pass headers onto the remote system
  • Crossing network boundaries is where painpoint comes
  • Past times; let magnolia do everything (data mgmt, rendering)
    • nowadays, give business logic to a remote service
  •  Call remote services from freemarker;
    • restfn no go if requires the java service class, recompilation etc.
  • Other approach: architecture, 3 macro services:
    • product db
    • magnolia
    • elasticsearch
    • all integration from frontend; (e.g. rendered from hybris)
    • edge-side-includes (header/footer served from cms, main product component from product db), processed w/ varnish
  • Keeping index consistency on author, public, reacting to data changes (JCR observation; hard for external content)