platformplatform / PlatformPlatform

Alpha state. A platform designed for building enterprise-grade, multi-tenant products using Azure, .NET, React, TypeScript, Infrastructure as Code, etc.
https://platformplatform.github.io
MIT License
258 stars 26 forks source link

Outbox pattern #117

Open tjementum opened 1 year ago

tjementum commented 1 year ago
### Tasks
ayuksekkaya commented 1 week ago

Hello,

Is there any work being done on this topic? Have there been any decisions as to what to use for inter module communication? Given this repo is Azure heavy, would Azure service bus be the default?

tjementum commented 1 week ago

Hello,

Is there any work being done on this topic? Have there been any decisions as to what to use for inter module communication? Given this repo is Azure heavy, would Azure service bus be the default?

Hi @ayuksekkaya

It will for sure be Azure Service Bus, and likely MassTransit for the .NET library. It's the only Azure Server that is listed that is not yet "implemented".

And for localhost, the plan is to use the new Azure Service Bus Emulator. It looks like there might be direct support for Aspire coming just around the corner: https://github.com/dotnet/aspire/pull/6737.

I would be happy to jump on a call and hear more about your needs and setup.

ayuksekkaya commented 1 week ago

@tjementum ,

Yes MassTransit makes perfect sense.

I don't have any needs per se. I have been mostly studying and learning a lot from your code actually. And I wanted to see if I can contribute something as well. I was thinking maybe I can try working on some part of the integration events. I don't see a "tasks" list for this, so I wanted to see if you have something in local maybe.

I was thinking I guess a rough list of tasks is something like:

  1. Add MassTransit library to SharedKernel. ( I am thinking both a worker service and the core project could be using MassTransit. Worker as the consumer, and the core as both consumer and publisher.)
  2. Create a mapping between a domain event and an integration event. ( I am thinking that the sending of verification code email maybe would be the best place to start?)
  3. Maybe add a new pipeline behavior for mapping and writing to MassTransit outbox using EF Core? Or maybe the existing PublishDomainEventsPipelineBehavior could be used?
  4. Add Azure service bus to the bicep module, and the aspire host
  5. Use it to communicate with other SCS?

What do you think? Did you have something completely different in mind? I can try reaching out to the email in your profile and we can set up some time.

I would love to help and learn from you!

tjementum commented 1 week ago

Hi @ayuksekkaya,

Thank you for your interest in contributing to PlatformPlatform! Your enthusiasm and engagement are greatly appreciated.

PlatformPlatform serves as the foundation for a handful of companies I collaborate with daily. Many roadmap items, including this one, are researched and iterated on with these partners before implementation begins. The Outbox pattern, in particular, is not currently planned for further discovery or implementation in the coming months, but it is essentiel for a completed platform.

I am currently the main contributor and prefer to lead the implementation of major areas in the backend, DevOps, and cloud domains. Contributions are most welcome in areas like the frontend, where help is needed to build the world-class solutions, we aim for with PlatformPlatform.

While direct contributions to the core may not align at this time, feedback from those building solutions on top of PlatformPlatform would be invaluable. I’d be happy to offer a 1-hour intro call to help anyone get started.

Thank you again for your understanding and support!

Best regards, Thomas