$30 off During Our Annual Pro Sale. View Details »

COPE with Node.js microservices

COPE with Node.js microservices

An overview of different approaches to content management and data architecture, focusing on the principle of COPE using Node.js microservices.

Eduardo Bouças

September 06, 2016
Tweet

More Decks by Eduardo Bouças

Other Decks in Programming

Transcript

  1. BragaJS, September 2016
    COPE with Node.js
    microservices
    Eduardo Bouças
    eduardoboucas.com
    @eduardoboucas

    View Slide

  2. Part I — Discovery

    View Slide

  3. View Slide

  4. Going mainstream
    CMS % of all websites
    WordPress 26.6
    Joomla 2.8
    Drupal 2.2
    W3Techs.com, 25 August 2016

    View Slide

  5. Content
    Management
    System

    View Slide

  6. Content
    Digital asset
    Management
    System

    View Slide

  7. Content
    Digital asset
    User
    Management
    System

    View Slide

  8. Content
    Digital asset
    User
    Layout
    Management
    System

    View Slide

  9. View Slide

  10. Traditional (monolithic) CMS
    Core
    Database
    Admin UI
    Templates
    Example: WordPress
    MySQL PHP app
    /wp-admin
    WP theme

    View Slide

  11. Problem #1
    Long-term commitment to tech stack and CMS
    components

    View Slide

  12. Problem #2
    How to integrate with external systems on different
    tech stacks?

    View Slide

  13. Part II — Headless

    View Slide

  14. Headless CMS
    Core
    Database
    Admin UI
    API
    Web server
    Templates
    Native app

    View Slide

  15. ● 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

    View Slide

  16. ● Separates data from design
    ● Reduces editorial overhead
    ● Content re-usable and future-proof
    Create Once, Publish Everywhere
    COPE

    View Slide

  17. View Slide

  18. Problem #1
    Web CMS still pivot of entire system.

    View Slide

  19. Problem #2
    Database, core and API still tightly coupled
    together. What happens if the publishing interface
    needs to change?

    View Slide

  20. Problem #3
    COPE as an afterthought.

    View Slide

  21. View Slide

  22. ● Data architecture and business logic agnostic of
    tech stack
    ● Features as modular, interchangeable
    components
    ● Universal language
    ● Scalable on a micro-level
    A wish list

    View Slide

  23. Part III — Microservices

    View Slide

  24. «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

    View Slide

  25. API-first approach
    Modular components
    COPE by design
    Built in Node.js
    Scalable
    Free and open source

    View Slide

  26. API
    A high-performance
    RESTful API layer
    designed in support
    of API-first
    development and the
    principles of COPE.
    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.
    Web
    A schemaless
    templating layer that
    can operate as a
    standalone platform
    or with API as a full
    stack web application.
    The suite

    View Slide

  27. The DADI stack
    DADI API
    Database
    DADI Web Templates
    DADI CDN
    DADI Publish
    Media
    Storage
    Native app

    View Slide

  28. DADI API
    DB shard
    iOS app
    DADI API
    DADI API
    Android app
    iOS app
    (CMS)
    DADI Web
    DADI Publish
    DADI CDN
    DADI CDN
    Real example
    DB shard
    DB
    cluster

    View Slide

  29. ● > 100 million users a month
    ● Editorial teams of up to 400 people
    ● 250,000+ peak concurrent users
    Some numbers

    View Slide

  30. ● Scalability
    ● Developer liberation
    ● Fast to market
    Benefits

    View Slide

  31. Concurrent development
    API
    iOS Android
    Web
    CMS
    CDN
    iOS CMS
    Team 1
    Team 2
    Team 3
    Team 4

    View Slide

  32. Track
    Real-time, streaming
    data layer providing
    accurate metrics at
    individual and
    product level. Drives
    DADI Machine.
    Visualise
    A data visualisation
    interface for DADI
    Track, but capable of
    taking data feeds
    from virtually any
    source.
    People
    CRM layer that
    guarantees
    uniqueness of
    individuals – and
    powers segmentation
    – in the anonymous
    and known space.
    Machine
    A machine learning
    layer that predicts
    user behaviour at an
    individual level based
    on past interactions.
    In the pipeline

    View Slide

  33. Part IV — ?

    View Slide

  34. Thank you.
    dadi.tech
    github.com/dadi

    View Slide