Dam ci moje dwa centy.
but I also get the impression that it becomes much harder to track a message's path though the system.
Masz rację, że architektur SOA PubSub AKA (SOA 2.0) zapewniając dużą oddzielenia, ale również zapłacić cenę, bo to jest dokładnie to, co się dzieje, chociaż narzędzia, takie jak Splunk może pomóc los.
seems that direct HTTP calls between services and/or a pubsub bus are two common approaches
Właściwie jeśli spojrzeć na najczęściej używanych .net ram SOA wydarzenie (NServiceBus, mułów i MassTransit) nie korzystają z połączeń HTTP, ale tak można wdrożyć architekturę microservices i używają jako http protokół komunikacyjny.
Rozumiem, że chcesz zacząć stosować niektóre z najlepszych koncepcji architektury korporacyjnej, ale chciałbym powiedzieć, że lepiej zacząć od prostszych, ale mocniejszych fundamentów. Nie ma sensu skakać do soi eventu, nie wiedząc, czy naprawdę tego potrzebujesz. Jeśli zaczynałem nowy system i chciałem się upewnić, że właściwie dostosowałem zasady DDD i SOA, zacznę od identyfikacji usług dla mojej domeny. Powiedzmy, że masz 3 usługi, możesz zacząć od deklarowania zamówień publicznych dla każdej z tych usług, nie potrzebujesz niczego specjalnego, możesz zacząć od WCF/ASP.NET Web API z synchronizacyjnym interfejsem API REST. Następnie upewnisz się, że każda usługa otrzyma swoją własną bazę danych, ponieważ dążysz do niskiego sprzężenia, a następnie możesz ponownie utworzyć warstwę API (tę widoczną dla świata zewnętrznego) za pomocą interfejsu API WCF/ASP.NET Web, ponieważ twoje mikrousługi nie powinny być wystawione bezpośrednio na świat zewnętrzny. W tym momencie będziesz miał architekturę SOA, ale prostą w designie, architekturę, ale ponieważ masz dobrze zdefiniowane kontrakty, możesz rozszerzyć swoje usługi przez dodanie do nich funkcji asynchronicznych i na początek, dodając kolejkę wiadomości do każdej z usług. Wiesz, nie musisz rozpoczynać od złożonego systemu, zacznij od czegoś podstawowego, dobrze zdefiniowanego, co pozwala na skalowanie, jeśli musisz.
Opisany przeze mnie system może zostać rozszerzony tak, aby łatwo obsługiwał zdarzenia, jeśli chcesz, a fakt, że w tym momencie byłyby już zsynchronizowane komunikaty, nie powstrzymałby Cię przed dodaniem komunikatów asyn do systemu.
Ale to tylko moje dwa centy.