Are you composing a modern MACH architecture, but don't want to start from scratch? Try MACH composer.
Compose with confidence
A technology and cloud agnostic, serverless microservice architecture designed for single and multi-tenant MACH platforms. Battle-tested, fully open source and built on industry standards.
Why MACH composer?
The last couple of years in the digital experience & commerce industry, we've seen a major shift in technology. From purchasing suites and building, maintaining & hosting these yourself, to the introduction of SAAS platforms that you consume from the cloud, through an API. Today this means that typical and modern digital commerce platforms, consist of many different services that are integrated with eachother, together comprising your platform.
Systems that adhere to the principles of Microservices, API-First, Cloud-Native and Headless, are identified as MACH services. Using them provides a lot of benefits and greatly accelerates creating new experiences for customers, and at the same time reducing the maintenance burden to keep a system like that running.
The problem with these systems, is that each individual system only provides part of the functionality you need. You end up with a 'composition' of multiple MACH services (duped 'composable commerce' by Gartner). In other words: it is a puzzle that you need to compose yourself in order to get the full picture. And there is no straightforward or standard way of technically integrating/glueing these pieces together. You need to rely on your system integrators 'creativity' to piece them together, often resulting in a hard to maintain (or understand), spaghetti of quite a number of micro services combined with cloud services and MACH services. Because building micro service architectures, is quite hard.
Through the experience of a number of high profile projects at scale, we've developed a standardized way of working and technical architecture, to build MACH platforms. This has led to a suite of tools, principles and boilerplate modules, that we call MACH composer. With it, we solve the 'integration problem' that you face when going down the MACH route.
Under the hoodMACH Composer
--- general_config: environment: test cloud: azure terraform_config: azure_remote_state: resource_group: my-shared-rg storage_account: mysharedsaterra container_name: tfstate state_folder: test azure: tenant_id: e180345a-b3e1-421f-b448-672ab50d8502 subscription_id: 086bd7e7-0755-44ab-a730-7a0b8ad4883f region: westeurope sites: - identifier: my-site commercetools: project_key: my-site-tst client_id: ... client_secret: ... scopes: manage_project:my-site-tst manage_api_clients:my-site-tst view_api_clients:my-site-tst languages: - en-GB - nl-NL currencies: - GBP - EUR countries: - GB - NL components: - name: api-extensions variables: CT_CLIENT_SCOPES: manage_products:my-site-tst manage_orders:my-site-tst ORDER_PREFIX: mysitetst components: - name: api-extensions short_name: apiexts source: git::ssh://firstname.lastname@example.org/your-project/components/api-extensions-component.git//terraform version: e638e57
Full support for Azure and AWS, and out of the box support for their serverless services portfolio, including API Gateway, Secrets Manager, SQS, Frontdoor, Key Vault and EventGrid, as well as AWS Lambda and Azure Functions.
The configuration and composition of MACH platforms is made accessible through easy to read YAML files that you can manage in version control.
Underneath we use the power of Terraform to configure all cloud services (including MACH services such as Commercetools, Contentful and Auth0) through infrastructure-as-code. Anything supported by Terraform, including community providers, is supported by MACH composer.
MACH composer works best with event-driven and serverless technology, by using AWS Lambda and Azure Functions as runtime for our customisations and integrations. But if you need something else, you're free to implement any runtime environment you want, through the flexibility of Terraform modules.
To make development easy, you are able (but not forced) to use the Serverless Framework to create your microservices. Furthermore, MACH composer provides a convenient CLI that you can use to manage your MACH project from the command line.
MACH composer can be deployed from the commandline by a developer, and is intended to run as part of a CI/CD pipeline for production deployments. It can be used with any CI/CD solution, and we have documented the most common ones (Github Actions, GitLab, Azure DevOps).
Open source projectsContributions are welcome!
MACH composer introduces a standardised way of working across the MACH ecosystem. We believe this will benefit everyone working with MACH systems, including commercetools.
Ivo BronsveldHead of Integrations, commercetools
MACH composer will help our clients to strike the right balance between central governance and local freedom and to increase the speed and adaptability of their global digital platforms.
Robert KooloosDigital Platform Strategist and Commerce Realized Offer Leader, Capgemini
MACH composer brings us a scalable way of working for dealing with MACH architectures across our teams, clients and technologies.
Pim VernooijCo-founder & CTO, Lab Digital
GraphQL Federation & Composable Architecture: a Cloud Native love story
At Lab Digital both 2020 and 2021 have been about building Composable/MACH platforms and particularly about leveraging GraphQL in those extensively.
Pim VernooijJan 31, 2022 • 9 min read
Introducing MACH composer
Today we are introducing MACH composer, a framework that helps you to build modern MACH architectures. And it is is available open source!
Pim VernooijMay 21, 2021 • 5 min read
Reaching MACHs full potential
In this article we explain what MACH is, what benefits it brings and what it means for your organisation when you embrace the approach.
Pim VernooijJan 19, 2021 • 13 min read
Building a truly global e-commerce platform - part 2: architecture & technology
In this post we’ll dive into the required architecture & technology for building a truly global e-commerce platform.
Pim VernooijAug 27, 2019 • 10 min read
Commercetools & Terraform: a match made in heaven?
Today we are introducing the first version of the Terraform Provider for the commercetools Digital Commerce platform.
Pim VernooijSep 14, 2018 • 6 min read
Building a truly global e-commerce platform- part 1: tenancy & tailoring
In this article series, we cover how we approached building a true global e-commerce platform for a large, multi-brand international FMCG.
Pim VernooijAug 14, 2019 • 5 min read
Frequently asked questions
MACH composer is a framework for orchestrating modern MACH architectures. It is a tool as well as an approach, and suggests a way of working across your teams.
Yes you can, although we recommend to use serverless and event-driven technologies. But if you want to use k8s, you can: everything in MACH composer is managed with Terraform, and you can provision any infrastructure you want using that. But again, only do that if you've crossed AWS Lambda or Azure Functions of your list, or if Docker is a desired runtime, take a look at AWS Fargate for example.
In essense, MACH composer can orchestrate anything that has an API, preferably through the use of a Terraform provider. That means that any 'configuration' or 'provisioning' operation against the system, should also be done through the API. Read more in our documentation.
This is a question we get a lot. We've built MACH composer out of the nessesity of applying a standard approach across our own projects, and we've noticed this is a problem that many other parties in the industry need to deal with. We've decided to open source this tool for it to become an industry standard, so that projects are approached more consistently and efficiently, which eventually will benefit the entire industry. We've seen this work with the open sourcing of our Terraform Provider for commercetools, and hope. that the same will happen with MACH composer.
Yes you can. Lab Digital, the company behind MACH composer, can help you get started up with MACH composer. Also, we continuously work on making MACH composer better and are interested in hearing about your use-case, and possibly extending MACH composer to facilitate that. And of course we are open to Pull Requests!