Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Learning to COPE

Learning to COPE

A personal journey through various approaches to publishing content on the web. Covering monolithic CMSs, headless CMSs and a microservices architecture built around the principles of COPE.

Eduardo Bouças

March 24, 2017

More Decks by Eduardo Bouças

Other Decks in Technology


  1. • Separation of concerns: content and layout are decoupled •

    Any front-end can be plugged in — RESTful + everyone speaks JSON • A single editing interface can be used to publish to multiple devices Benefits
  2. • Single instance of content • Reduces editorial overhead •

    Agnostic of implementation • Future-proof Create Once, Publish Everywhere COPE
  3. Problem #2 Database, core and API still tightly coupled together.

    What happens if the publishing interface needs to change?
  4. • Data architecture and business logic agnostic of tech stack

    • Features as modular, interchangeable components • Universal language • Scalable on a micro-level A wish list
  5. «An approach to developing a single application as a suite

    of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.» Microservices Martin Fowler
  6. API A high-performance RESTful API layer designed in support of

    API-first development and the principles of COPE. Web A schemaless templating layer that can operate as a standalone platform or with API as a full stack web application. Publish A writer’s window to the world of content creation. Flexible interfaces designed to optimise editorial workflow. CDN A just-in-time asset manipulation and delivery layer designed as a modern, global content distribution solution. The suite
  7. The stack DADI API Database DADI Web Templates DADI CDN

    DADI Publish Media Storage Native app HTTP request

    Android app iOS app (CMS) DADI Web DADI Publish DADI CDN DADI CDN Scaling DB shard DB cluster
  9. Fast to market API iOS Android Web CMS CDN iOS

    CMS Team 1 Team 2 Team 3 Team 4
  10. • Content stored as documents, grouped in collections • Business

    logic in JSON schema • Relationships and validation • Fully REST (data and metadata) API: collections
  11. CDN: art direction <picture> <source media="(max-width: 400px)" srcset="https://example.com/berlin.jpg?width=400&height=600&resizeStyle=entropy"> <source media="(max-width:

    800px)" srcset="https://example.com/berlin.jpg?width=800&height=800&resizeStyle=entropy"> <img src="https://example.com/berlin.jpg"> </picture> Reuse a single asset in different aspect ratios (e.g. portrait vs. landscape)