in financial services The decoupled CMS · in financial services ... Universal (isomorphic)...

62
The decoupled CMS in financial services Preston So 8 Nov 2017 Open Source Strategy Forum 2017

Transcript of in financial services The decoupled CMS · in financial services ... Universal (isomorphic)...

Page 1: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

The decoupled CMS in financial services

Preston So • 8 Nov 2017 • Open Source Strategy Forum 2017

Page 2: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Welcome!

Preston So has been a web developer and designer since 2001, a creative professional since 2004, and a Drupal developer since 2007. As Director of Research and Innovation at Acquia, Preston leads new open-source and research initiatives and helms Acquia Labs, the innovation lab featured in international press.

Previously, Preston contributed to the Spark initiative in the Drupal project, co-founded the Southern Colorado Drupal User Group (est. 2008), and operated an award-winning freelance web and print design studio. Preston has presented keynotes at conferences on three continents in multiple languages.

[email protected] • @prestonso • #decoupledcmsfinserv

Page 3: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

© 2017 Acquia Inc. — Confidential and Proprietary© 2017 Acquia Inc. — Confidential and Proprietary

We're Acquia's innovation lab — a small team of generalist engineers building co-funded projects in emerging technologies that push the envelope.

Have forward-looking ideas but need expertise?Acquia Labs is your innovation partner.

Page 4: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

What we'll cover

● What is decoupled CMS?● Decoupling the front end from the back end● Risks and rewards of decoupling the CMS● API-first Drupal: The open-source advantage● Decoupled CMS and developer experience● The decoupled CMS in financial services

Page 5: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

What is decoupled CMS?1

Page 6: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous
Page 7: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Think of Earth as one contiguous unit: a monolith.

Page 8: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous
Page 9: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Earth responds to requests from decoupled bases.

request

response

Page 10: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Monolithic CMSes can back decoupled applications.

HTTP request

HTTP responseCMS

Page 11: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

HTTP request

HTTP response

Site or repository built in CMS

Decoupled application

CMS

Page 12: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

CMS

Site or repository built in CMS

Decoupled application

REST API Decoupled applicationHTTP client

HTTP request

HTTP response

Page 13: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Decoupled CMS is the use of a CMS as a content service for consumption and manipulation by other applications

Page 14: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Decoupled CMS

● A decoupled CMS can be used to back other back-end applications as well as native applications, single-page applications, digital signage, AR-driven interfaces, and many others.

● Web services such as REST APIs or GraphQL APIs are typical entry points for decoupled CMS consumers.

Page 15: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

For marketers and publishersdecoupled CMS offers the promise of omnichannel delivery

Page 16: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

IoT apps

Native apps

Chat apps

Single-page apps

Other back ends

Set-top boxes

Smart watches

Fitness devices

Arduino boards

Beacons AR/VR apps

Rasp-berry Pi

Conver-sational

UIs

LED displays

We have new channels every day.

CMS

Page 17: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

IoT apps

Native apps

Chat apps

Single-page apps

Other back ends

Set-top boxes

Smart watches

Fitness devices

Arduino boards

Beacons AR/VR apps

Rasp-berry Pi

Conver-sational

UIs

LED displays

And ones we've never heard of yet.

?

?

?

? ?

CMS

Page 18: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

For developersdecoupled CMS offers the promise of front-end freedom

Page 19: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

de•coup•led head•less

API•first

Aside: What's in a name?

Page 20: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Decoupling the front endfrom the back end

2

Page 21: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Monolithic CMS

CMS

CMS front end

Client

Server

Client

Server

Page 22: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Static pages

CMS

CMS front end

Client

Server

Subscribe to our newsletter

You have been successfully subscribed!

E-mail address

Submit

full-page refreshtwo bootstraps

Page 23: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Dynamic pages with Ajax

Client

Server

CMS

CMS front end

jQuery

Synchronous

Asynchronous

Ajax request

Subscribe to our newsletter

E-mail address

Submit

Subscribe to our newsletter

E-mail address

Submit

Subscribe to our newsletter

E-mail address

Submit

Success!

one bootstrap

Page 24: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

The JavaScript renaissanceushered in an era of innovation and new development practices

Page 25: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Server-side JavaScriptmeant client-side frameworks could be executed server-side

Page 26: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Universal JavaScriptmeant shared code in the form of JavaScript framework executions

Page 27: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

JavaScript framework(client-side execution)

Node.js

JavaScript framework (server-side execution)

CMS

Success! Here are others that might interest you:

Lorem ipsum dolor sit amet, consectetuer adipiscing.

Subscribe to our newsletter

E-mail address

Submit

Lorem ipsum dolor sit amet, consectetuer adipiscing.

Subscribe

E-mail

Submit

Lorem ipsum dolor sit amet, consectetuer adipiscing.

Dynamic pages with server-side prerendering

Client

Server

Synchronous

Asynchronous

HTTP request

HTTP request

Page 28: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Universal (isomorphic) JavaScript

Server Client

Node.js

JavaScript framework

HTML

JavaScript framework

HTML

Synchronous

Asynchronous

executes

renders

flush

bindings by

responds

calls REST API

Page 29: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Universal JS consuming decoupled CMS

Server Client

Node.js

JavaScript framework

HTML

JavaScript framework

HTML

Synchronous

Asynchronous

executes

renders

flush

bindings by

responds

calls REST API

CMS

calls REST

API

responds

Page 30: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Risks and rewards of decoupling the CMS

3

Page 31: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Rewards of decoupled CMS

● Separation of concerns. Structure versus presentation is increasingly relevant in decoupled architectures.

● Pipelined development. An API-design-first approach gives front-end and back-end teams independence.

Page 32: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Rewards of decoupled CMS

● Administrative security. Keeping the administrative CMS far from public view is increasingly a best practice.

● Easier resourcing. CMS developers are often now considered less affordable than JavaScript developers.

Page 33: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Risks of decoupled CMS

● Loss of contextual administration. Crucial features such as in-place editing and toolbar can be key for editors.

● Maintainability difficulties. Maintaining both a CMS-driven content service service and consumers requires extensive planning.

Page 34: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Risks of decoupled CMS

● Additional point of failure. Node.js downtime can lead to inaccessible content in certain cases.

● On-boarding overhead. JavaScript developers need to learn consumption; CMS developers change focus.

Page 35: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Summary

Area Rewards Risks

Architecture Separation of concerns

Loss of contextual administration

Development experience

Pipelined development

Maintainability difficulties

Security and performance

Administrative security

Additional point of failure

Project management Easier resourcing On-boarding overhead

Page 36: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

API-first Drupal and theopen-source advantage

4

Page 37: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

What is Drupal?

● Digital experience platform. Drupal is a powerful open-source CMS for building both web-based digital experiences with full editorial capabilities or API-driven digital experiences with developer flexibility.

● Powers 2.5% of the web. Drupal is used by organizations like NBC, The Weather Channel, The White House, Tesla, and Princess Cruises.

Page 38: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Site or repository built in Drupal

Decoupled application

Web services

Decoupled applicationHTTP client

HTTP request

HTTP response

Page 39: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Web servicessupport interoperable machine-to-machine interaction over a network

Page 40: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

REST APIsfollow REST principles and operate using HTTP methods

Page 41: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

REST APIs

Web services

REST APIs

Core REST JSON API RELAXed Web Services GraphQL

Euler diagram of Drupal web services

Page 42: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

JSON API

● JSON API is a specification for REST APIs in JSON popular among JavaScript developers and adopted by the Ember and Rails communities.

● JSON API provides a standard way to query single entities, but it also provides all relationships contained therein and query operations via query string parameters.

● drupal.org/project/jsonapi

Page 43: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

JSON API

JSON API(abbreviated payloads,

merely illustrative)

Client issues request for an entity resource

Server issues response with single entity and all relationships

GET /jsonapi/node/1 ?include=field_author

{ "data": [{ "type": "articles", "id": "1", "attributes": { "title": "Foo", "body": "Lorem ipsum", }, ... }], "included": [{ "type": "people", "id": "5", "attributes": { "name": "Joe" } }]}

Page 44: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

GraphQL

● GraphQL, originally created by Facebook to power its data fetching, is a query language that enables fewer queries and limits response bloat.

● GraphQL shifts responsibility from the server to the client: the server publishes its possibilities, and the client publishes its requirements instead of receiving a response dictated solely by the server.

● drupal.org/project/graphql

Page 45: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

GraphQL

GraphQL(simplified payloads,

merely illustrative)

Client issues request declaring data requirements

Server issues response matching structure of declared requirements

{ title fieldAuthor { title }}

{ "title": "Foo" "fieldAuthor": { "title": "Joe" }}

Page 46: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Decoupled CMS anddeveloper experience

5

Page 47: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Site or repository built in Drupal

Decoupled application

Web services

Decoupled applicationHTTP client

HTTP request

HTTP response

Page 48: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Web services

Decoupled application

SDKs and starter kits

HTTP request

HTTP response

API-first distros

API-first distros, SDKs, and starter kits improve decoupled DX

Page 49: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

SDKs and starter kits

● SDKs can help to make it easier for developers to consume CMSes as a content service. These tend to be lightweight HTTP client wrappers which make requests on the developer's behalf and process responses.

● Starter kits and references help jumpstart implementations by providing an out-of-the-box experience for developers to get started right away.

Page 50: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

The open-source advantage: Waterwheel ecosystem

Page 51: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

The Waterwheel ecosystem

● Waterwheel is an emerging ecosystem of SDKs designed to accelerate development of Drupal-backed applications in a variety of technologies.

● Currently, a helper SDK is available for JavaScript as an initial release and a full SDK is available for Swift to power iOS, tvOS, and other Apple applications.

Page 52: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

The Waterwheel ecosystem

● github.com/acquia/waterwheel.js

● github.com/kylebrowning/waterwheel.swift

● drupal.org/project/waterwheel

● github.com/acquia/ember-drupal-waterwheel

● github.com/acquia/ember-waterwheel-app

● github.com/acquia/react-waterwheel-app

Page 53: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

The open-source advantage: Reservoir and Contenta

Page 54: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

API-first distributions

● An ecosystem of distributions oriented for developers consuming decoupled Drupal is emerging. The most prominent distributions are Reservoir and Contenta.

● github.com/acquia/reservoir

● github.com/contentacms/contenta_jsonapi

Page 55: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

A good developer experiencemeans that it's easy to provision APIs for a group of consumer applications

Page 56: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

A good developer experiencemeans that it's easy for consumers to work with the provisioned APIs

Page 57: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

The decoupled CMSin financial services

6

Page 58: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Decoupled CMS is a compellingarchitecture for financial services

Page 59: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Rewards for financial services

● Administrative security. Often, sensitive content is housed in a CMS whose editorial access should be tightly restricted. Decoupled approaches limit access to the underlying CMS.

● Single source for digital ecosystems. Financial services firms with disparate experiences need one unified place to manage content destined for those touchpoints, especially mobile apps.

Page 60: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

The diversity of open sourceoptimizes decoupled approaches

Page 61: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Decoupled Drupal is optimalfor financial services architectures

Page 62: in financial services The decoupled CMS · in financial services ... Universal (isomorphic) JavaScript Server Client Node.js JavaScript framework HTML JavaScript framework HTML Synchronous

Thank you!

Preston So has been a web developer and designer since 2001, a creative professional since 2004, and a Drupal developer since 2007. As Director of Research and Innovation at Acquia, Preston leads new open-source and research initiatives and helms Acquia Labs, the innovation lab featured in international press.

Previously, Preston contributed to the Spark initiative in the Drupal project, co-founded the Southern Colorado Drupal User Group (est. 2008), and operated an award-winning freelance web and print design studio. Preston has presented keynotes at conferences on three continents in multiple languages.

[email protected] • @prestonso • #decoupledcmsfinserv