Przejdź do treści
Integracje 1 min czytania

Middleware vs. integracje bezpośrednie - kiedy co ma sens

Dwa scenariusze. Pierwszy: zaczynasz nowy sklep B2B, robisz integrację z ERP-em bezpośrednio (sklep → REST → ERP). Działa. Po roku dochodzi BaseLinker. Po dwóch - PIM. Po trzech - drugi sklep (DACH). Każda integracja w sklepie ma własną logikę. Sklep ma 12 plików z transformacjami danych i nikt nie wie, który dla którego klienta. Drugi scenariusz: ten sam start, ale od dnia zero stawiasz middleware. Każdy zewnętrzny system rozmawia z middleware'em, nie z sklepem. Po 3 latach masz uporządkowaną architekturę, nowy sklep wchodzi w tydzień, drobna zmiana w ERP nie wymaga release sklepu.

Jakub Owsianka Autor
Zaktualizowano:
Okladka artykulu: Middleware vs. integracje bezpośrednie - kiedy co ma sens (kategoria: Integracje)
Okladka artykulu: Middleware vs. integracje bezpośrednie - kiedy co ma sens (kategoria: Integracje)
Spis treści (8)

W skrócie

  • 1. Bezpośrednio: sklep komunikuje się wprost z każdym systemem (ERP, PIM, BaseLinker, płatności)
  • 2. Middleware: warstwa pośrednia między sklepem a systemami - sklep rozmawia tylko z middleware
  • 3. Bezpośrednio ma sens: do 2-3 systemów zewnętrznych, stabilne API, mała skala
  • 4. Middleware ma sens: 3+ systemów, niestabilne API, plany rozwoju
  • 5. Koszt: middleware to +20-30% inwestycji wstępnej, oszczędność 50%+ w utrzymaniu
  • 6. Najczęstszy błąd: zaczynanie „bezpośrednio bo prościej", przebudowa po roku

Bezpośrednio - jak to wygląda

[Sklep]
  |
  +-- ERP_module → API Comarch XL
  +-- BaseLinker_module → API BaseLinker
  +-- PIM_module → API Akeneo
  +-- Payment_module → PayU API
  +-- Shipping_module → InPost API
  |
  (każdy moduł ma własne kolejki, własny error handling, własne mapowania)

Każdy moduł w sklepie zna szczegóły konkretnego systemu zewnętrznego. Transformacje danych, kolejki, retry, mapowania - wszystko po stronie sklepu.

Plusy:

  • Najszybszy start (mniej kodu do napisania)
  • Mniej infrastruktury (nie ma osobnego serwera middleware)
  • Łatwiejszy debugging na początku (jedno repozytorium, jeden stack)

Minusy:

  • Logika integracji rozjeżdża sklep (kontrolery puchną, moduły zaczynają się przenikać)
  • Każdy nowy system zewnętrzny = release sklepu
  • Zmiana w API jednego systemu = potencjalne side-effecty na inne
  • Drugi sklep (np. wersja DACH) = duplikacja całej logiki

Middleware - jak to wygląda

[Sklep PL]  [Sklep DE]  [Allegro]
    |          |           |
    +----------+-----------+
                |
                v
          [Middleware]  <-- jeden serwis, jedne mapowania, jedne kolejki
                |
        +-------+-------+--------+-------+
        |       |       |        |       |
       [XL]   [Akeneo] [BaseL.] [PayU] [InPost]

Middleware:

  • Wystawia REST API dla sklepów
  • Trzyma logikę transformacji per system
  • Trzyma kolejki, retry, monitoring
  • Może być wielofunkcyjny (jeden middleware dla wszystkich integracji) lub specjalizowany (osobne mikrosegmenty)

Plusy:

  • Sklep nie wie nic o ERP, BaseLinkerze, PIM
  • Zmiana ERP-a (np. migracja XL → enova) = tylko middleware się zmienia
  • Drugi sklep = drugi klient middleware, ta sama warstwa integracji
  • Centralny monitoring, łatwiej obserwować co się dzieje

Minusy:

  • Więcej kodu na start (sklep + middleware vs. tylko sklep z modułami)
  • Więcej infrastruktury (osobny serwer / serwery middleware)
  • Złożoność operacyjna (deploy 2 serwisów zamiast 1)
  • Trochę dłuższy debugging na początku (gdzie szukać błędu - sklep czy middleware)

Kiedy bezpośrednio realnie wystarczy

Trzy warunki, wszystkie muszą być spełnione:

1. Mało systemów zewnętrznych - maksymalnie 2-3. Np. tylko ERP + płatności + kurier. Wtedy logika w sklepie jeszcze nie wybucha.

2. Stabilne, dobrze udokumentowane API po stronie systemów zewnętrznych. Comarch XL z REST API - relatywnie stabilne. Stary XL z SOAP - już niekoniecznie. SAP - generalnie ok. Subiekt GT przez Sferę - niestabilne.

3. Mała skala i krótka perspektywa. Sklep robi 100 zamówień / dzień, plan jest „wpada w 2 lata na pełne obroty albo pivot". Wtedy bezpośrednio = szybki start, krótkoterminowa decyzja.

Dla typowego polskiego B2B z 5+ systemami zewnętrznymi i ambicjami wzrostu - bezpośrednio przegrywa już na starcie. Nie zaoszczędzisz tyle, ile wydasz na refaktor.

Kiedy middleware jest must-have

Każdy z tych punktów osobno wystarcza:

1. 3+ systemy zewnętrzne. Sklep + ERP + PIM + OMS + BaseLinker = 4 integracje. Bez middleware kontrolery sklepu nie wytrzymają.

2. Niestabilne API po jednej ze stron. XL ma timeoutowane SOAP-y, Sfera Subiekta padnie raz w tygodniu, ERP klienta jest aktualizowany co kwartał. Middleware z kolejkami i retry to ratunek.

3. Plany ekspansji. Drugi sklep (DACH), drugi rynek, drugi brand. Middleware = nie powtarzasz integracji.

4. Konieczność transformacji danych. ERP ma swoje słowniki (kategorie, jednostki, ceny), sklep ma swoje, marketplace mają swoje. Mapowania w jednym miejscu = sanity.

5. Wymóg observability. Klient chce wiedzieć co się dzieje w integracjach (które padły, ile, kiedy). Middleware = jeden dashboard. Bez middleware = logi rozsiane po sklepie.

6. Skala wymuszająca asynchroniczność. 10k+ zamówień dziennie, kolejki, batche, retry. To naturalna rola middleware.

Co konkretnie middleware robi

Po stronie technicznej:

Routing. Sklep wysyła OrderCreated. Middleware wie, że to idzie do ERP (utworzenie dokumentu), do PIM (decremental stock), do BaseLinkera (synchronizacja stanów z marketplace'ami). Wszystko z jednego eventu.

Transformacja danych. Sklep ma customer_id = 12345. ERP oczekuje kontrahent_id = "K00012345". Middleware wie.

Kolejki. Każde wywołanie idzie przez RabbitMQ / Redis. Sklep nie czeka aż ERP odpowie - middleware kolejkuje. Kolejki RabbitMQ i Redis.

Retry z exponential backoff. ERP padł na 4 minuty? Middleware retryuje 1s, 2s, 4s, 8s, 16s, aż uda się lub trafi do DLQ.

Idempotencja. Sklep wysyła to samo zamówienie drugi raz (race condition, retry sklepu). Middleware widzi external_id, nie tworzy duplikatu.

Monitoring. Sentry, Datadog, dedykowany dashboard. Liczba transakcji, retry rate, opóźnienia, błędy per system.

Webhook hub. Webhooki z systemów zewnętrznych (XL → middleware → sklep). Centralna autentykacja, monitoring.

Technologie do middleware

Opcja 1: Custom w PHP/Symfony lub Node.js.

Najczęściej dla polskich średnich B2B. Symfony Messenger + RabbitMQ + Redis + PostgreSQL/MySQL. Czas budowy: 6-12 tygodni dla solidnej bazy. Plus: full kontrola, własny zespół to utrzymuje. Minus: budujesz sam.

Opcja 2: iPaaS (Integration Platform as a Service).

  • n8n - open-source workflow automation, polskie B2B coraz częściej używa
  • Make (dawne Integromat) - komercyjny, wizualne workflow
  • Zapier - głównie B2C i drobne firmy
  • Tray.io - bardziej enterprise

iPaaS dobre dla integracji „w mniejszej skali" (kilkaset transakcji dziennie). Dla 10k+ - własny middleware zazwyczaj wygrywa.

Opcja 3: ESB / Integration Platform (klasyka enterprise).

  • Mulesoft (Salesforce) - bardzo drogi (od kilkuset tys. zł rocznie)
  • Boomi (Dell) - średnio droższy
  • WSO2 - open-source ESB
  • Apache Camel (Java) - open-source library

To dla bardzo dużych firm. W polskim B2B średnim segmencie rzadko sensowne.

Opcja 4: Komercyjne polskie integratory.

  • Comarch Webcon / BPM Suite - orientacja na Comarch ekosystem
  • Comarch EDI - dla EDI
  • Mniejsi gracze branżowi

Dla scenariuszy zdominowanych przez Comarcha - czasem ma sens. Dla mixu różnych ERP-ów - własny middleware.

Koszt obu podejść

Dla typowego średniego polskiego B2B (sklep + 4 zewnętrzne integracje):

Bezpośrednio:

  • Wdrożenie integracji: 200-400 tys. zł (każda integracja w sklepie)
  • Utrzymanie roczne: 60-150 tys. zł
  • Refaktor po 2 latach (jeśli skala rośnie): 150-400 tys. zł

Middleware (custom Symfony/Node):

  • Wdrożenie middleware (baza): 80-200 tys. zł
  • Wdrożenie integracji w middleware: 200-400 tys. zł
  • Sklep jako klient middleware: 50-120 tys. zł
  • Utrzymanie roczne: 50-120 tys. zł
  • Skalowanie: dokładasz integracje za 20-60 tys. zł każda

Wniosek: middleware kosztuje więcej w pierwszym roku (~25-35% więcej), ale w roku 3 jest taniej w utrzymaniu i bez refaktoru.

Najczęstsze błędy

1. Middleware „bo nowoczesne" przy małej skali. Sklep 1k SKU + 1 ERP + płatności - middleware to nadinżynieria.

2. Bezpośrednio „bo prościej" przy dużej skali. Sklep 50k SKU + 5 systemów - bezpośrednio kończy się po roku.

3. Mixanie obu podejść bez planu. Część integracji w sklepie, część w middleware, brak granic - najgorsza opcja, kod rozjeżdża się szybciej niż w obu czystych podejściach.

4. Middleware jako „warstwa cienka". Tylko routing bez transformacji, retry, kolejek = niedokończony middleware, problemy obu opcji + złożoność.

5. Zakładanie iPaaS skalowalności. n8n czy Make działają świetnie do pewnej skali. Powyżej (rzędy 10k transakcji / mies.) - łapią opóźnienia, awarie, koszt rośnie.

FAQ

Czy mogę zacząć bezpośrednio a potem dodać middleware? Tak, ale refaktor jest kosztowny (150-400 tys. zł). Lepiej decyzję podjąć od początku z perspektywą 3-5 lat.

Czy middleware musi być w innej technologii niż sklep? Nie. Często jest w tej samej (Symfony jeśli sklep Symfony, Node jeśli Node). Ważne, żeby był osobnym deploymentem.

Czy iPaaS (n8n, Make) wystarczy dla średniego B2B? Do ok. 3-5k transakcji dziennie i prostych integracji - tak. Powyżej - własny middleware. Wiele firm zaczyna od n8n i przechodzi na custom w roku drugim.

Czy middleware potrzebuje własnej bazy danych? Tak, do trzymania mapowań, idempotency keys, logów. Może to być PostgreSQL, MySQL, MongoDB - zależnie od stacku.

Czy mogę używać Symfony Messengera jako middleware? Tak. Symfony Messenger + RabbitMQ (lub Doctrine transport) + osobna aplikacja = solidna podstawa middleware dla średniej skali.

Co dalej

O autorze

Jakub Owsianka

Architekt rozwiązania w WiseB2B - silniku platform B2B. Zaczynał po stronie biznesu (własne sklepy), potem deweloper, dziś projektuje wdrożenia dla sklepów z katalogami w dziesiątkach tysięcy SKU. W ostatnich latach wdrożył AI-development w zespole i funkcjonalności oparte o AI bezpośrednio w silniku sklepu.

Masz pytanie do tego artykułu?

Dodatkowy kontekst, problem z własnym wdrożeniem, druga opinia - napisz wprost. Odpowiadam osobiście w 1-2 dni robocze.