Architektura aplikace

SaaS
Aplikace by měla být navržena jako SaaS (Software as a Service). To znamená, že bude jedna instance aplikace, která bude obsluhovat více zákazníků. Jednotlivé moduly musí tedy rozlišovat mezi jednotlivými zákazníky a jejich daty.
Hlavním řídícím modulem bude modul Auth, který bude jednotlivé instance spravovat a přiřazovat k nim uživatele. Uživatel může být přiřazený k více instancím - jedno přihlášení. Typicky bude mít ale jen jednu.
Rozdělení na moduly
Každý modul je vlastní aplikace (microservice). Moduly mají své API (není třeba UI) a mezi sebou si předávají primárně přes Message Queue.
Message Queue
Pravděpodbě bude použitá RabbitMQ. Budeme muset řídit, že každý modul bude mít vlastní frontu. Moduly budou primárně pushovat do fronty pro Workflow, který bude případně potom posílat další zprávy pro ostatní moduly.
CQRS
CQRS je návrhový vzor, který popisuje jak strukturovat aplikace. Hlavní myšleka spočívá v rozdělení Query logiky a Command logiky. V našem případě to může být výhodné, protože místo klasického REST API, kde se definují endpointy pro jednotlivé entity, budeme definovat endpointy pro jednotlivé Commandy, kde Command je nějaká ucelená akce, která je potřeba provést a může zahrnovat i několik entit.