Microservices And Messaging · Key takeaways

1 min read
Mid-level11 min read
Rapid 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: BaseTenantEntity stamps a TenantId,
  • 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 /

See also