A Brief(ish) Explainer on Headless Architecture

What does this even mean?

It can mean a couple of things. From a technical perspective, the term originated from systems that had no display attached. So, for example, when setting up a data center, it might be necessary to have thousands of servers and having a monitor on every server led to a lot of redundant displays. Specifically, your database/web server really never needed a display because it's sole purpose was to service calls from the network. This also potentiall applies in the modern virtualized server world to provisioning new vms with a specific operating system image. The term "headless" in this situation indicates the server (virtual or not) has no display or keyboard attached and the only way to connect to it is via a network interface.

An alternate definition, and where much noise is currently being made, is around a platform (like a content management system) that "traditionally" would serve up web content, but instead only serves up data that some other system renders. So, to clarify, if you use wix.com to create a web page, the system that you edit the web page in actually sends the web page to your customers. In a headless world, the system you edit the web page content on is different than the one that actually serves the page.

So what?

The first definition is so entrenched in data center operations and architecture that it's rarely even used any more...everyone does it this way. The second defintion has become more relevant because of the multitude of ways someone might want to reuse content across many touchpoints.

For example

Say you're a brand that wants to display your product and some images to your customers. You build a web page and publish it to the interwebz. A couple of years go by and you're updating your images/descriptions and you want to start running ads on your favorite social network. So you upload the images to the ad platform, copy/paste the descriptions and publish there. Then, lets say you have a mobile app you want to put in the hands of your users...you hire a team to build the mobile app, copy/paste the images and descriptions and publish the app(s) [ios and andriod right?].

Now, let's say you want to update the images or product descriptions. In this relatively simple scenario, you now need to update in 4 different places. In a headless architecture, you would update the description and image in your "headless" CMS, and all your apps simply fetch the data from the CMS (or the CMS pushes the data to the channels...there are multiple ways to facilitate this).

On the surface, it might seem this architecture is obvious, but in reality many folks are still in the copy/paste world. Additionally, shifting to a headless approach generally mandates a shift in ownership of the content. In the olden days, if the "web team" owned the content and digital assets, someone from the "mobile team" or the "marketing team" would need to go find the content and assets. To make headless work, the content and assets need to be viewed as a shared resource that is managed independant of the various channels.

Comments

Popular posts from this blog

Push versus pull deployment models

the myth of asynchronous JDBC

Installing virtualbox guest additions on Centos 7 minimal image