Microservices And Messaging · Key takeaways
1 min readRapid overview
Key takeaways
concern — Tenant/Identity, Questioner, OnlineMenu, Content, Notification, Payment, Kefi — each owning its own data.
Clean Architecture, Central Package Management, often under the api/v1 route prefix.
shared Identity.Keycloak.Authorization library enforces the realm wall, and public pages opt out with AllowAnonymous.
and a global EF Core query filter scopes every query to the token-resolved current tenant automatically.
(MassTransit) using Messaging.RabbitMq + Messaging.Contracts** — "tell, don't call".
cover the "I need the answer now" cases, e.g. OnlineMenu → Payment subscription status.
Storage.S3; frontends reach services through a per-product BFF; Traefik handles TLS, host routing, and middleware.
- The backend is many small .NET (
net10) services, one per bounded - Every service shares a stack: FastEndpoints, EF Core / PostgreSQL,
- Keycloak with a realm per product isolates each product's users; the
- Multi-tenancy is row-level:
BaseTenantEntitystamps aTenantId, - Services stay decoupled by **publishing/consuming events over RabbitMQ
- A few synchronous internal HTTP calls (shared secret + cached fail-safe)
- Files live in S3-compatible storage behind the Content service /