Ask HN: Has anyone fully embraced an event-driven architecture?
11–20 of 173 posts
Re: Ask HN: Has anyone fully embraced an event-driven architecture?
#12Events are a part of a greater whole. It's a tool that you can use to solve certain data flows, but not all data flows. When you start taking more liberty with the word "eventually," you are almost certainly in a realm where event-driven makes the most sense. CQRS is a pretty good example of using many architectures (including event-driven) under a single greater architectural umbrella, and the thought patterns it introduces you to are incredibly useful. But no architecture is gospel, not even close.
Any "pure" architecture is the tail wagging the dog. The problem comes first, the solution comes second, the architecture comes third.
Re: Ask HN: Has anyone fully embraced an event-driven architecture?
#13Where I currently work we are all in on event-driven architecture. For our DLQs, we have alerts on when the queue is growing in size or if messages are in the queue too long. When those alerts come in, we manually move the messages back to the normal queue for reprocessing and if they get DLQed again after that we will look into the reason it is failing. One of the benefits of this architecture for us is the ability…
Re: Ask HN: Has anyone fully embraced an event-driven architecture?
#14It's great for processing data that goes beyond a single database call, data formatting and presenting something on a page.
If you're chaining multiple microservices together you've made a very sloppy/poor mans version of this. (People tend not to account for downed services, maintence updates, client durability, etc) When you bring in technologies like Kafka to orchestrate this, you'll end up with a more reliable system that you can fix if something goes wrong. This more changes the way you think about data and how you present it. Also, it'll increase your uptime because your service's SLA is isolated from what you're processing. (Your service and the persistent storage that is storing state is what people see.. the data being out of date is something you should account for)
Schema changes: Generally you don't have that big of a deal because multiple applications get started at once. You should have system level tests to catch that before you go out. Also, application smoke tests help as well. As long as you picked a durable message queue with a framework that'll crash on error, you can fix that, bring up the fix and continue processing through.
Dead letter queues: It's more about how you architect more than anything. This is something you should plan for.
Re: Ask HN: Has anyone fully embraced an event-driven architecture?
#15Re: Ask HN: Has anyone fully embraced an event-driven architecture?
#16Where I currently work we are all in on event-driven architecture. For our DLQs, we have alerts on when the queue is growing in size or if messages are in the queue too long. When those alerts come in, we manually move the messages back to the normal queue for reprocessing and if they get DLQed again after that we will look into the reason it is failing. One of the benefits of this architecture for us is the ability…
I guess it's still harder to track down event emitters, but have you tried using bitbucket or GitHub code search to search all of your repos at once?
Re: Ask HN: Has anyone fully embraced an event-driven architecture?
#17[deleted]
Re: Ask HN: Has anyone fully embraced an event-driven architecture?
#18"As a trivial example, everybody talks about dead-letter queues but nobody really explains how to handle messages that end up in one." For us, it's either a function that will retry the messages after some time, or manual intervention. Our department recently said we need to move to even driven architecture for one of our processes that currently runs in a batch. They want us to load data into EMR from an S3 bucket p…
> For us, it's either a function that will retry the messages after some time, or manual intervention. What does manual intervention look like? Are all downstream consumers blocked until the DLQ is emptied or do all consumers know how to deal with late-arriving events?
A ticket or an ops alert depending on severity. The cause gets fixed and messages are retried or dropped depending on your business case.
>Are all downstream consumers blocked until the DLQ is emptied
No, its a diffent queue. The point is that you eventually pull them into the DLQ so you aren't wasting all your resources on failing messages.
>do all consumers know how to deal with late-arriving events?
Hopefully, but an outage is an outage. You're way past happy path at that point.