Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Part I — Discovery

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Content Management System

Slide 6

Slide 6 text

Content Digital asset Management System

Slide 7

Slide 7 text

Content Digital asset User Management System

Slide 8

Slide 8 text

Content Digital asset User Layout Management System

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Part II — Headless

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

● 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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Problem #1 Web CMS still pivot of entire system.

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

Problem #3 COPE as an afterthought.

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Part III — Microservices

Slide 24

Slide 24 text

«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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

● Scalability ● Developer liberation ● Fast to market Benefits

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Part IV — ?

Slide 34

Slide 34 text

Thank you. dadi.tech github.com/dadi