Celkový obraz platformy

Kde Products zapadá do celého e-shopu

ESHOP/products není celý e-shop. Je to katalogové jádro jedné větší skládačky.

Vedle něj budou nebo mohou existovat další části:

  • Products Public API
  • Products Admin
  • Meilisearch
  • Order modul
  • Orders Admin
  • Frontend
  • případně další integrační nebo importní služby

Zjednodušený pohled

                              +----------------------+
                              |   Products Admin     |
                              | editorial / sprava   |
                              +----------+-----------+
                                         |
                                         | zapis a workflow
                                         v
+------------------+          +----------+-----------+          +------------------+
|  Importy / ERP   +--------->+    Products App      +--------->+   PostgreSQL     |
|  dodavatele      |          | public API + admin   |          | source of truth  |
+------------------+          +----------+-----------+          +---------+--------+
                                         |                                |
                                         | dirty queue / indexace         |
                                         v                                |
                              +----------+-----------+                    |
                              |     Meilisearch      |<-------------------+
                              |  search read model   |
                              +----------+-----------+
                                         |
                        vyhledavani      |
                                         v
+------------------+          +----------+-----------+          +------------------+
|     Frontend     +--------->+   Products Public    |          |  Orders Admin    |
| web / listing    | detail   |        API           |          | sprava objednavek|
+---------+--------+          +----------------------+          +---------+--------+
          |                                                                  ^
          | pridani do kosiku / objednavka                                   |
          v                                                                  |
+---------+--------+                                                         |
|   Order modul    +---------------------------------------------------------+
| kosik, order,    |
| rezervace, stavy |
+------------------+

Jak si představit odpovědnosti

Products App

Jedna aplikace nad jedním datovým modelem, která v první fázi obsluhuje:

  • public katalogové čtení,
  • admin operace pro správu katalogu,
  • později i interní workflow nad katalogem.

Products Public API

Vrstva pro čtení dat pro frontend, případně další klienty. Nemá být hlavní interní integrační vrstva pro správu katalogu.

Products Admin

Admin část je určena pro zápis, editaci a workflow. V první fázi dává smysl, aby byla součástí stejné aplikace a zapisovala přes vlastní controllery, repository a doménová pravidla nad stejnou databází.

Jinými slovy:

  • admin nemusí v první fázi používat public API,
  • admin nemá zapisovat "bokem" mimo aplikační pravidla,
  • admin i public část mají sdílet stejný datový model a stejné guardrails.

Nejpragmatičtější první krok je:

  • Products Public API pro čtení,
  • Products Admin API pro zápis,
  • obojí v jedné aplikaci nad jednou databází.

Meilisearch

Meilisearch není zdroj pravdy. Je to read model pro rychlé hledání a filtrování.

Order modul

Order modul má řešit:

  • košík,
  • objednávku,
  • stavy objednávek,
  • rezervace a návaznost na sklad,
  • snapshot toho, co bylo objednáno.

Do products aplikace patří jen ta část, která se katalogu přímo týká, například snapshot struktury order_item nebo inventory rezervace jako katalogový/inventory podklad.

Frontend

Frontend má číst především přes public API a search vrstvu. Nemá obcházet model přímými dotazy do databáze.

Doporučený směr pro první fázi

  1. Products drží katalogový zdroj pravdy.
  2. Products Admin zapisuje přes stejnou aplikaci a stejná pravidla.
  3. Meilisearch slouží jen pro search use-case.
  4. Frontend čte public katalog a search.
  5. Order modul se napojuje na katalog a inventory přes jasné kontrakty, ne přes nahodilé joiny do všeho.

Proč je tento obrázek důležitý

Pokud tým vidí jen products repozitář, snadno začne navrhovat věci, které sem nepatří. Tento pohled pomáhá udržet hranici mezi:

  • katalogem,
  • administrací katalogu,
  • vyhledáváním,
  • objednávkami,
  • frontendem.