Forget Docker, the future is JAMstack


Introduction

As businesses fight to become more agile and stay relevant, technology has evolved to support it. Forget Docker, JAMstack is the next evolution in modern web development.

JAMstack stands for Javascript, APIs, and Markup. It’s a beautiful union of modern technology, software-as-a-service and the core founding languages of the web. It provides:

  • Reduced cost
  • Faster speed-to-market
  • Increased security
  • Higher scalability, availability, and reliability
  • Reduced vendor lock-in

Technologies such as Docker will continue to play a huge part of our digital future, but should become increasingly transparent to the majority of businesses and used behind the scenes. Managing and supporting infrastructure directly for your own applications should be a thing of the past.

“Containers won the battle, but will lose the war to serverless” — Simon Wardley

If your core business is not providing Cloud services, then this article explains why JAMstack should be at the forefront to provide a strategic advantage and increased agility for the majority of online businesses.

What is JAMstack

JAMstack is Javascript and markup that can be statically hosted anywhere. It compliments serverless technology and can be used with serverless Cloud functions. The backend of traditional applications is almost entirely redundant, and instead much of the complexity happens at build-time with the Javascript tool-chain.

It’s commonly used with static site generation tools such as NextJs or GatsbyJs which replaces the need for serverside rendering. These tools can integrate with Cloud services during a build process and output an entire application as pre-rendered web pages. For example, it could pull content from a headless Content Management System and pre-render your entire sitemap to static pages within seconds. An immutable snapshot-in-time of those pages can then be deployed to production and distributed globally.

Webhooks can be used to trigger changes from any downstream services and trigger new releases within seconds to pull-in updated content.

Although JAMstack applications are statically hosted, it does not mean that the applications themselves are any less dynamic or interactive than serverside rendered pages. These applications can be built to integrate with web APIs client-side and can provide dynamic content and interactivity as with any traditional application. User authentication can still be implemented and progressively enhance pages or unlock features.

Cloud functions can be used where needed to provide additional backend capability and can be written in the same Javascript language.

Example JAMstack Architecture

Why JAMstack

The JAMstack application has minimal moving parts or runtime dependencies for maximum performance, reliability, scale, and security. This is because it requires no application servers and therefore makes the surface area extremely small. The static content is highly cacheable and easily distributed via any Cloud provider. This means minimal lock-in to specific vendors.

Enterprise solutions can be built using JAMstack with quicker speed-to-market and lower costs. This is because it requires significantly fewer resources to manage and support the application in production as well as for development. It requires only a small Agile team of full-stack developers, and everything can be done with Javascript and markup. It’s not a prerequisite of JAMstack, but it does make sense to reduce the skill-sets needed when delivering for the web.

In traditional applications, changes from dependencies are typically integrated at runtime. This causes an increased risk of outages from downstream dependencies. With JAMstack most of the integration happens at build-time so there is much less that can go wrong that could impact users.

JAMstack utilises Cloud services as a growing commodity. It aligns with a growing trend towards full-stack development with Javascript and markup using technologies like ReactJs and serverless Cloud functions. It moves away from application servers and backend systems such as SQL databases and application servers. It no longer requires always-on infrastructure for serverside rendering and use of compiled languages like Java/.NET.

JAMstack is most powerful when complemented with a specialised hosting provider like Netlify. Netlify is a complete Cloud platform for JAMstack that connects directly to your code repo. Each check-in can seamlessly version and deploy both your application and supporting Cloud functions to a production ready environment within seconds.

In addition, it provides a built-in Content Delivery Network for optimal performance and a wealth of other supporting value-add features you would otherwise have to build or configure yourself.

Software Lock-in

Many organisations use self-hosted third-party software that requires vast teams to develop, deploy, and maintain those products before you can even think about developing your own. Sometimes the two are inseparable and it detracts from the minimal skill-sets you otherwise need to build your product.

Content Management Systems (CMS) are a good example. When these functions are not your core business, it no longer makes sense to invest time and specialist resources upgrading, provisioning and supporting them. At one point it was the only option and an acceptable sacrifice to leverage the value-add they provide.

Software-as-a-service offerings have now changed the game with fully managed, supported, scalable solutions in the Cloud and at a fraction of the cost. Prismic and Contentful are examples of headless CMS offerings that offer highly interoperable web APIs. This removes the need for specialised in-house skills and allows ease of integration from JAMstack or any language.

Likewise, almost every supporting core function needed can be sort in the Cloud or built on core Cloud services. This includes fully hosted Continuous Integration/Deployment services which leverage on-demand processing. In the majority of cases, there is no longer a need to host and manage your own servers on-premise or in the Cloud.

Software Commodities

As software-as-a-service offerings reshape products into Cloud commodities it requires organisations to strategise and stay agile.

It’s critical for a business to understand the strategic landscape and leverage commodities where possible in order to reduce costs and avoid redundant effort in replicating these widely available resources internally and at greater cost.

Commodities are when products become available at scale, high-volume and are highly standardised. Commodities are fit for a specific known purpose and evolve over time from replication and refinement of a product.

The term commodity in this context is from Wardley’s Mapping technique and is used to describe how products evolve from genesis to custom-built solutions, to products, and finally commodities. In mapping business components against this evolutional process, and in relation to the customer value-chain, you can strategise where a business should focus its efforts to maximise focus on your unique selling point.

In terms of JAMstack, it can leverage Cloud commodities as follows:

  • Static file hosting over application servers
  • Cloud-based deployment/integration over in-house capability
  • Software-as-a-service partners over internally hosted third-party products
  • On-demand serverless Cloud functions over always-on backend servers
  • Full-stack Javascript developers over multifaceted skills and languages

Summary

Technologies such as Docker are the pinnacle of modern infrastructure technology. They simplify the provisioning of resources with high consistency and reliability.

However, unless you are in the business of providing Cloud services, focusing on infrastructure no longer makes sense.

Much of the infrastructure complexity of internal product development stems from supporting core dependencies such as Content Management Systems for example. Traditionally this requires provisioning third-party products, the configuration of always-on application platforms to support them, and a diverse set of skills internally to develop-on, support, and maintain this landscape. It drives companies further down the rabbit-hole of focusing on the wrong infrastructure and deployment problems, rather than adapting away from these dependencies which cause the pain-points.

JAMstack is extremely powerful as a model to replace the traditional web development approach and allows a small agile team to move at pace. It removes the need to worry about infrastructure and servers. It also encourages integration with other software-as-a-service vendors using interoperable APIs and moves away from backend systems requiring additional specialist teams.

Releasing, supporting and scaling JAMstack is trivial. This means high agility, fast speed-to-market, and better uptimes. Enterprise is slow moving and those that can adapt will get a competitive advantage.