MACH Commerce Architecture: Microservices, API-First, Cloud-Native a Headless in E-commerce
MACH (Microservices, API-first, Cloud-native, Headless) je plán elektronického obchodu moderní podnik. Jak se 4 rozměry kombinují a poskytují absolutní flexibilitu, srovnání s monolitickou architekturou a vzorci vládnutí nezbytnými k zamezení chaosu z mikroslužeb.
Co je MACH a kdo jej definoval
MACH je zkratka, kterou vytvořil Aliance MACH, sdružení of technology vendors founded in 2020 by commercetools, Contentful, EPAM Systems and others. Ne it is a product — it is a set of architectural principles for building systems moderní podnik.
- M — Mikroslužby: každá obchodní funkce je nezávislou službou
- A — API-first: Každá služba odhaluje dobře definovaná API jako své primární rozhraní
- C — Cloud-native: Vytvořeno pro veřejný cloud, s elastickým škálováním a spravovanými službami
- H — Headless: frontend a backend jsou odděleny
Základní myšlenkou je nejlepší z plemene: místo nákupu jednoho apartmánu která dělá všechno (průměrná), vyberte nejlepší službu pro každou funkci a vytvořte platformu na míru. Nejlepší vyhledávač produktů (Algolia), nejlepší pokladna (Stripe), nejlepší CMS (Contentful), nejlepší PIM (Akeneo).
Čtyři MACH rozměry v detailu
Mikroslužby: Dekompozice pro ohraničený kontext
V architektuře MACH je obchodní doména rozložena na zarovnané nezávislé služby ai ohraničený kontext design řízený doménou:
// Esempio di decomposizione in microservizi commerce
const MACH_SERVICES = {
// Servizi core commerce
catalog: 'Gestione prodotti, categorie, attributi, varianti',
pricing: 'Regole di prezzo, sconti, tier pricing, valute',
inventory: 'Stock real-time, warehouse, backorder',
cart: 'Sessioni di carrello, regole di promozione',
checkout: 'Checkout flow, address validation, ordine',
payments: 'Processing pagamenti, rimborsi, split payments',
fulfillment: 'Gestione spedizioni, tracking, resi',
// Servizi supporto
search: 'Full-text search, filtri, ranking (Algolia)',
recommendations: 'Prodotti correlati, personalization',
cms: 'Contenuto editoriale, landing page (Contentful/Sanity)',
pim: 'Product Information Management (Akeneo)',
loyalty: 'Punti, rewards, programmi fedeltà',
notifications: 'Email, SMS, push notifications',
};
API-First: Smlouva před implementací
V systému API-first je API smlouva, která je definována Před implementace. Každý tým může vyvinout svou vlastní službu nezávisle na smlouvě API je již definováno.
// OpenAPI spec per il Catalog Service
openapi: 3.1.0
info:
title: Catalog Service API
version: 2.0.0
paths:
/products:
get:
summary: Lista prodotti con paginazione e filtri
parameters:
- name: cursor
in: query
schema:
type: string
- name: category
in: query
schema:
type: string
- name: priceMin
in: query
schema:
type: number
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ProductPage'
/products/{id}:
get:
summary: Dettaglio prodotto singolo
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
'404':
$ref: '#/components/responses/NotFound'
Cloud-Native: Elastické škálování a spravované služby
Cloud-native neznamená „běží v cloudu“ – znamená to, že je navrženo speciálně k využívání možnosti cloudu: automatické horizontální škálování, odolnost proti chybám, pozorovatelnost integrovaný:
- Docker kontejnery organizované Kubernetes (nebo funkcemi Lambda pro načtení řízená událostmi)
- Spravované databáze (Cloud Spanner, RDS, DynamoDB) namísto samostatně spravovaných instancí
- Spravováno sběrnicí událostí (AWS EventBridge, Google Pub/Sub) pro asynchronní komunikaci
- Globální CDN pro frontend doručení
- Automatický jistič a opakování pro odolnost
Headless: Frontend Free from Backend
Rozměr H MACH již byl prozkoumán v prvním článku série: the frontend spotřebovává API, není generováno backendem. In un'architettura MACH completa questo často znamená a BFF (Backend pro frontend) k optimalizaci API pro i konkrétní klienti:
// BFF Pattern: GraphQL aggregation layer
// Aggrega chiamate a più microservizi in un'unica risposta ottimizzata
type Query {
productPage(
category: String
cursor: String
filters: [FilterInput!]
): ProductPageResult!
}
type ProductPageResult {
products: [ProductSummary!]!
facets: [FacetGroup!]! # da Algolia
recommendations: [ProductSummary!]! # da recommendation service
pageInfo: PageInfo!
}
// Il resolver fa chiamate parallele a catalog, search e recommendations
const resolvers = {
Query: {
productPage: async (_, args) => {
const [products, facets, recs] = await Promise.all([
catalogService.getProducts(args),
searchService.getFacets(args),
recommendationService.get(args.category),
]);
return { products, facets, recommendations: recs, pageInfo: products.pageInfo };
},
},
};
MACH vs Monolith: Skutečné srovnání
MACH vs Monolith: Když je to lepší co
- Spravováno Monolith (Shopify, WooCommerce): doba uvedení na trh v týdnech, malý tým, nízké náklady — ideální pro GMV < 5 mil. EUR/rok
- Částečný MACH (bezhlavý + nejlepší z plemene): postupná flexibilita, střední tým — ideální pro GMV 5-50 mil. EUR/rok se specifickými potřebami
- Plný MACH: maximální flexibilita, vysoké náklady, velký tým – opodstatněné pro GMV > 50 mil. EUR/rok nebo specifické podnikové požadavky
MACH Governance a Anti-pattern
Nejčastější chybou v implementacích MACH je přílišná fragmentace bez správy:
MACH Anti-pattern, kterému je třeba se vyhnout
- Předčasné mikroslužby: Při manipulaci s 1000 se rozloží na 20 služeb objednávky/měsíc je čistý přetechnizovaný. Začněte s modulárním monolitem, stačí se rozložit části, které se různě měří.
- Žádné verzované smlouvy API: Bez verzování API, každý tým rozbije ostatní v nasazení. Přijměte OpenAPI 3.1 + sémantické verzování.
- Kaskádové synchronní hovory: Požadavek, který volá 5 služeb za sebou akumulovat latenci. Kde je to možné, používejte paralelní volání, vzor CQRS pro náročné čtení.
- Sdílená databáze: Pokud dvě služby MACH sdílejí databázi, nejsou skutečně nezávislý. Každá služba musí mít vlastní datové úložiště.
Implementujte MACH postupně
Nemusíte migrovat na MACH všechny najednou. Přibližuje se vzor fíku škrtiče doporučuje se:
- Fáze 1: Přidejte vrstvu bez hlavy na stávající monolit. Frontend nové volání API, monolit generuje API přes vrstvu REST/GraphQL. Žádné změny v jádru.
- Fáze 2: Vytáhněte první mikroslužbu pro funkci s největšími potřebami specifikace (často: vyhledávání nebo inventarizace). Monolit se nadále stará o zbytek.
- Fáze 3: Pokračujte v extrakčním servisu po servisu, odstraňovejte postupně závislost na monolitu.
Závěry
MACH je architektonická aspirace, nikoli kontrolní seznam. Principy API-first a headless přinášejí skutečnou hodnotu i v dílčích implementacích. Rozklad na mikroslužby a cloud-native doplní obrázek, ale vyžaduje organizační vyspělost.
V dalších článcích prozkoumáme konkrétní implementace: Shopify Hydrogen pro ty, kteří chtějí bezhlavě na spravované infrastruktuře, Medusa.js pro ty, kteří preferují self-hosted open-source, např Prodej pro týmy Python s nativními potřebami GraphQL.







