Thanks for the clear terminology breakdown. In your real projects, which patterns do you rely on most around events and messages, and how do you use domain events in practice? Do you use an outbox pattern, or do you publish directly to the message broker?
EDA, Messaging, Event Sourcing, Event Storming: Resolve Terms Collision
2 Comments
@Spyros Thanks for the comment :)
I use domain and application events in practice as an EDA message payload whenever the application components have to be decoupled.
As for outbox pattern, it is pretty complex so first we have to decide whether we at all need it and if we can do away with a simpler solution. The value brought by the implementation should me more than cost of implementation and further evolution.
That is not always the case. More often I resort to persistent streams pub/sub with a limited persistence time horizon. I ensure the consistency with a sync call back from consumer to producer to fix inconsistency, when discovered in case this level of coupling is accepted.
And yes, I may publish to message broker directly if the deliverabilty guarantees satisfy the concrete case.
Please log in to add a comment.
Please log in to comment on this post.
More Posts
- © 2026 Coder Legion
- Feedback / Bug
- Privacy
- About Us
- Contacts
- Premium Subscription
- Terms of Service
- Early Builders
I own - design and build production backend systems end-to-end in collaboration with product and engineering teams: from requirements, system architecture and contract-first APIs (OpenAPI) to ingestion pipelines, async orchestration, deployment, observability.
I actively use AI-augmented development workflows and spec-driven engineering to accelerate delivery while preserving the code validity and effectively minimizing defects. I design and implement AI/LLM programmatic decision workflows with constrained outputs, controlled vocabularies, and deterministic validation to ensure reliable behavior and eventual correctness in systems.
I ship high-reliability, low-firefight backend platforms for startups and early scale-ups, from day one built to be easily evolvable and fully prepared for continuous product change.
I use the following tools for that:
- Extended Model-Based Engineering (C4, UML/PlantUML for domain, architecture and fine sequence/state modeling)
- Domain-Driven Design (DDD) with Hexagonal Architecture
- Contract-First APIs (OpenAPI, AsyncAPI, JSON Schema validation, generated contracts enforcement)
- ATDD/TDD/E2E (Specification-by-Example, data providers, Testcontainers, integration-first backend testing)
- Event-driven and async workflow architectures (webhooks, queues, idempotence, state-based orchestration workflows)
- Deterministic automated code quality gates (linting, static analysis, git hook guards in CI, ~100% code coverage)
- Competent AI-augmented product engineering: OpenSpec SDD, agentic workflows, rapid prototyping, legacy refactoring, vibe-coding remediation, explicit engineering introduction
See my public engineering case: AI-Powered Image Generation & Publication System (Imagetron) at: https://valentineshi.dev/content/deliverables/K3aT7UX_RCC8ZO_fy9VinQ/ai-powered-image-generation-publication-system-imagetron
More details and other delivered public cases: https://valentineshi.dev Show less
More From Valentine Shi
Related Jobs
- Software Engineer, Test & Infrastructure II (Bilingual Spanish)Vail Systems · Full time · Springfield, IL
- Security Engineer - Data Loss Preventionjobgether · Full time · India
- Senior Engineering Manager, Messaging Channelsjobgether · Full time · India
Commenters (This Week)
Contribute meaningful comments to climb the leaderboard and earn badges!