What is Headless

What does headless mean, and what are it's advantages

Raw definition

After wikipedia, Headless software is software capable of working on a device without a graphical user interface.

That is true and understandable for software like headless linux (which is just a server with no monitor, no keyboard and no mouse).

But how it applies to Headless Services that we are going to talk about - most of them have user interfaces.

Definition of headless

Headless service, is a service that provides specialised backend-only functionalities, that does not affect end-user interface.

I think that definition is now more accurate to the common headless services we use on the market.

What does specialised mean? Each service specialise in a specific area. There are Headless CMS (service to provide content management systems) or Headless Ecommerce (service providing ecommerce backend).

What problem does it solve

When something is for everything, it’s for nothing. That’s also true for software.

With combination of different Headless services, we can:

  • use the expertise of teams specialised in certain areas (like: CMS or Ecommerce)
  • be more flexible (use the tools that we like / address our needs)
  • reduce time to market
  • “easilly” replace solutions that does not fully address your business needs
  • reduce cost (that highly depends on the use-case, it’s not true that cloud is always cheaper)

Example Headless stack

  • Headless CMS (Content Management System)
  • Headless E-Commerce
  • 3rd party Analytics service
  • Cloud Database
  • Cloud API service
  • 3rd party Forms system
  • Cloud Deployment / Hosting platform
  • 3rd paty Users’ authentication & authorization service

All of those services are not likely to be the core part of the website. They are important, but they are just a support, necessary support.

Thanks to going headless, we can leave those areas for those who knows them the best, and focus on the core things we have to build.

  1. Build an UI Layer that our Users want to use.
  2. Write a business logic that address company needs and protect all the necessity rules.

Disadvantages and usual challenges in terms of headless architecture

One of the challenge is to calculate all the production costs upfront. With headless (like with most of the cloud solution), cost depends on the usage. How that usage is calculated may vary.

Sometimes we pay for how many data we store, sometimes for how many data was transferred, sometimes both and sometimes there are other factors as well.

At the end - some projects may benefit the headless approach, some may be less expensive on native cloud or even on-premise infrastructure.

That’s why it’s highly important to create an architecture that will allow you to easily replace any part of the system with different provider in case the production cost will be too high. Headless services can change their pricing and what was acceptable month ago may be not longer “competitive”.

Keeping the architecture clean, maintanable. Build a highly flexibile system requires high expertise in building headless projects.

Flexibility is one of the core features of this approach, but it does not come out-of-the-box. It requires a knowledge and expertise from the dev team.

In fact, many Headless Services will like you to build your system around their service so it’s harder for your team to replace the system - (but that kind of system is no longer headless, isn’t).*

Managing and maintenance is distributed to different places.

That is always a challenge. For some is a small issues, for some teams - a bigger one. You don’t have just one service when you check everything. You don’t receive just one invoice to pay. It’s all split to many smaller pieces of a bigger pie.