Stacker is the backbone of our implementation of Micro Frontends.

This wraps up our current thinking and how we want to evolve Stacker.

About Stacker

Stacker is our composition and orchestration server for micro frontends. Among other things, it provides:

  • combination of multiple micro frontends into a single page
  • authentication handling
  • flexible configuration of pages in simple yaml files we call stack files
  • parallel fetching of multiple user interface fragments from multiple services
  • full decoupling of service load times
  • pushing of service UI changes to clients
  • distribution of form submissions to services and handling service responses
  • service eventing, enabling services to interact with other services on multiple levels while keeping services decoupled
  • reuse of functionality across containers with low coupling, inspired by Web Intents

High-level overview

When accessed, Stacker combines multiple web page fragments listed in a stack file into a single page without having to wait for all fragments before delivering something to the browser. The result is a web page that, while looking and behaving as a single web page, is delivered by multiple, small services.

In some ways, Stacker is a server side browser that collects everything needed to show a web page to a browser.

This sketch shows the basic idea of decoupled request and UI updated within Stacker:

Request flow in Stacker

Please note that all service responses are pushed to the front end. The load time of a single service will not slow done the page, nor will a service failure crush the complete page.

As you can see, Stacker is built around a simple idea. Based on this foundation, we have added new interaction models and integration patterns for servcies. But these are stories that will be shared later…

Implementation

Stacker is written in Elixir, giving us hassle-free support for the WebSockets we use to push changes to clients along with painless parallel processing of requests. Elixir and BEAM are a perfect fit for Stacker: strong parallel processing capabilities, a vibrant community and the stability of a battle-tested technology that you will need when building something serving as the backbone of your software.

Stacker as open source software

We are using Stacker for our production systems for about a year by now. It has served us well, enabling us to mix and match containers and create workplaces for colleagues simply by combining small, self-contained services. We feel that it is time to share it with the public in the hope some people might find it interesting and helpful.

Currently, we are preparing it to be released - if Stacker sounds interesting to you, please let us know! This could speed things up significantly 🙂