MACH Ticaret Mimarisi: E-ticarette Mikro Hizmetler, Önce API, Bulutta Yerel ve Başsız
MACH (Mikro hizmetler, API öncelikli, Bulut tabanlı, Başsız) e-ticaret planıdır modern bir işletme. Mutlak esneklik sağlamak için 4 boyutun nasıl bir araya geldiği, kaosu önlemek için gerekli monolitik mimari ve yönetim modelleriyle karşılaştırma mikro hizmetlerden.
MACH Nedir ve Kim Tanımladı?
MACH tarafından icat edilen bir kısaltmadır MACH İttifakı, bir dernek Commercetools, Contentful, EPAM Systems ve diğerleri tarafından 2020'de kurulan teknoloji satıcılarının sayısı. Hayır bu bir üründür — bina sistemleri için bir dizi mimari prensiptir modern bir işletme.
- M — Mikro hizmetler: her iş fonksiyonu bağımsız bir hizmettir
- A — Önce API: Her hizmet, iyi tanımlanmış API'leri birincil arayüz olarak sunar
- C — Bulutta yerel: Esnek ölçeklendirme ve yönetilen hizmetlerle genel bulut için tasarlandı
- H — Başsız: ön uç ve arka uç birbirinden ayrılmıştır
Temel fikir şudur türünün en iyisi: tek bir süit satın almak yerine her şeyi yapan (vasat), her işlev için en iyi hizmeti seçen ve bir platform oluşturan kişiye özel. Ürünler için en iyi arama motoru (Algolia), en iyi ödeme (Stripe), en iyi CMS (İçerikli), en iyi PIM (Akeneo).
Ayrıntılı Olarak Dört MACH Boyutu
Mikro Hizmetler: Sınırlı Bağlam için Ayrıştırma
MACH mimarisinde ticaret alanı, hizalanmış bağımsız hizmetlere ayrıştırılır yapay zeka sınırlı bağlam Etki Alanı Odaklı Tasarım:
// 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: Uygulama Öncesi Sözleşme
API öncelikli bir sistemde API, tanımlanan sözleşmedir Önce uygulamanın. Sözleşme gereği her ekip kendi hizmetini bağımsız olarak geliştirebilir. API zaten tanımlanmış.
// 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'
Bulutta Yerel: Esnek Ölçeklendirme ve Yönetilen Hizmetler
Bulutta yerel "bulutta çalışır" anlamına gelmez; bu, özellikle istismar edilmek üzere tasarlanmış anlamına gelir bulut yetenekleri: otomatik yatay ölçeklendirme, hata toleransı, gözlemlenebilirlik entegre:
- Kubernetes (veya olaya dayalı yükler için Lambda İşlevleri) tarafından düzenlenen Docker kapsayıcıları
- Kendi kendine yönetilen örnekler yerine yönetilen veritabanları (Cloud Spanner, RDS, DynamoDB)
- Eşzamansız iletişim için yönetilen olay veri yolu (AWS EventBridge, Google Pub/Sub)
- Ön uç teslimatı için küresel CDN
- Otomatik devre kesici ve dayanıklılık için yeniden deneme
Başsız: Arka Uçtan Arındırılmış Ön Uç
MACH'ın H boyutu serinin ilk makalesinde zaten incelenmişti: ön uç API tüketir, arka uç tarafından oluşturulmaz. Bir MACH mimarisinde bunu tamamlar çoğu zaman bir anlamına gelir BFF (Ön Uç için Arka Uç) API'yi i için optimize etmek belirli müşteriler:
// 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 ve Monolith: Gerçek Karşılaştırma
MACH ve Monolith: Ne Zaman Daha İyi?
- Monolith yönetildi (Shopify, WooCommerce): haftalar içinde pazara sunma süresi, küçük ekip, düşük maliyetler — GMV < 5M EUR/yıl için ideal
- Kısmi MACH (başsız + türünün en iyisi): Kademeli esneklik, orta ekip — özel ihtiyaçlara sahip GMV için ideal 5-50 milyon Euro/yıl
- Tam MACH: maksimum esneklik, yüksek maliyetler, büyük ekip — GMV > 50 milyon Euro/yıl veya belirli kurumsal gereksinimler için haklı
MACH Yönetişimi ve Anti-örüntü
MACH uygulamalarında en yaygın hata yönetişim olmadan çok fazla parçalanmaktır:
Kaçınılması Gereken MACH Anti-Desen
- Erken mikro hizmetler: 1000'i işlerken 20 hizmete ayrıştırın sipariş/ay tamamen aşırı mühendisliktir. Modüler bir monolitle başlayın, sadece ayrıştırın farklı ölçeklenen parçalar.
- Sürümlendirilmiş API sözleşmesi yok: API sürümü oluşturma olmadan her ekip konuşlandırmada diğerlerini kıracaktır. OpenAPI 3.1 + anlamsal sürümlendirmeyi benimseyin.
- Basamaklı senkronize çağrılar: Sırayla 5 hizmeti çağıran istek gecikme biriktirir. Mümkün olan yerlerde paralel çağrılar kullanın; ağır okumalar için CQRS modelini kullanın.
- Paylaşılan veritabanı: Eğer iki MACH servisi veritabanını paylaşıyorsa, bunlar gerçekten bağımsız. Her hizmetin kendi veri deposu olması gerekir.
MACH'ı Kademeli Olarak Uygulayın
MACH'a tek seferde geçiş yapmanıza gerek yok. Boğucu incir modeli yaklaşımı tavsiye edilir:
- Aşama 1: Mevcut monolitin üzerine başsız bir katman ekleyin. Ön uç yeni çağrılar API, monolit API'yi REST/GraphQL katmanı aracılığıyla oluşturur. Çekirdekte herhangi bir değişiklik yok.
- Aşama 2: En çok ihtiyaç duyulan işlev için ilk mikro hizmeti çekin spesifikasyonlar (genellikle: arama veya envanter). Monolit gerisini halletmeye devam ediyor.
- Aşama 3: Kademeli olarak kaldırarak, servise göre ekstraksiyon hizmetine devam edin monolite bağımlılık.
Sonuçlar
MACH bir kontrol listesi değil, mimari bir istektir. API öncelikli ve başsız ilkeler kısmi uygulamalarda bile gerçek değer katarlar. Mikro hizmetlere ayrıştırma ve Bulut yerelliği resmi tamamlıyor ancak kurumsal olgunluk gerektiriyor.
Sonraki yazılarımızda somut uygulamaları inceleyeceğiz: İsteyenler için Shopify Hydrogen yönetilen altyapı konusunda kafasız, kendi kendine barındırılan açık kaynağı tercih edenler için Medusa.js, e Yerel GraphQL ihtiyaçları olan Python ekiplerinin satıcısı.







