zlacker

[parent] [thread] 7 comments
1. benjam+(OP)[view] [source] 2021-11-26 08:13:33
Not sure I agree. It seems as good a way as any to decouple systems, asynchronously exchange messages between services, get them into durable storage, exactly once processing, replay semantics etc. I think it should be on the table at least whenever we have two services needing to exchange data.

Maybe a few use cases could be switched out for direct API calls, but I think Kafka hits the sweet spot in many situations.

What alternatives would you be looking at?

replies(3): >>weego+q1 >>berkes+zt >>LgWood+zA
2. weego+q1[view] [source] 2021-11-26 08:35:17
>>benjam+(OP)
It is as good as any if you have no financial constraints and no technical overhead and time constraints, but everyone does.

Kafka is one of those systems that needs to be justified by out-scaling other solutions that don't come wedded with all its baggage.

replies(1): >>hansbo+52
◧◩
3. hansbo+52[view] [source] [discussion] 2021-11-26 08:46:06
>>weego+q1
What would you say is its baggage?
replies(1): >>berkes+9u
4. berkes+zt[view] [source] 2021-11-26 13:49:20
>>benjam+(OP)
Some alternatives are:

* Just keep your architecture a monolith. You'll do fine the majority of the cases.

* Event-sourcing doesn't require Kafka clusters. Nor do event-driven setups. You don't need complex tooling to pass around strings/json-blurps. An S3 bucket or a Postgresql database storing "Events-as-json" is often fine.

* Postgres can do most of what you need (except for the "webscale" clustering etc)[0] in practice already.

* Redis[1]

My main point is that while Kafka is a fantastic tool, you don't need that tool to achieve what you want in many cases.

> It seems as good a way as any to decouple systems

IMO relying on a tool to achieve a good software design, rather than design-patterns, is a recipe for trouble. If anything, because it locks you in (do you suddenly get a tightly coupled system if you remove Kafka?) or because its details force you into directions that don't naturally fit your domain or problem.

--

[0] https://spin.atomicobject.com/2021/02/04/redis-postgresql/ [1] https://redis.com/redis-best-practices/communication-pattern... etc.

◧◩◪
5. berkes+9u[view] [source] [discussion] 2021-11-26 13:55:15
>>hansbo+52
For me, the baggage is mostly the complexity of the service. With that comes monitoring, maintenance, tuning, debugging and troubleshooting.

Lessened somewhat with SaaS products like Amazon Kinesis (technically not a Kafka, but close).

Another "baggage" is that an event-driven setup is eventual-consistent -and async- by nature. If your software already is eventual-consistent, this is not a problem. But it is a huge change if you come from a blocking/simple "crud" setup.

replies(1): >>piyh+py
◧◩◪◨
6. piyh+py[view] [source] [discussion] 2021-11-26 14:29:09
>>berkes+9u
I second Kafka having massive operational overhead. It's a burden and is killing any support for it within our org.
7. LgWood+zA[view] [source] 2021-11-26 14:42:37
>>benjam+(OP)
I’ve seen comments like the gp’s often enough that it strikes me as a form of gatekeeping.

MY problems are so special that my use of Kafka was perfect, but YOURS are trivial and you shouldn’t even consider Kafka.

replies(1): >>robert+jv1
◧◩
8. robert+jv1[view] [source] [discussion] 2021-11-26 21:04:16
>>LgWood+zA
> it strikes me as a form of gatekeeping

I consider this a form of gatekeeping of advice on using Kafka.

[go to top]