Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is a web frontend producing directly to a Kafka broker a viable idea?

I have just started learning Kafka. So trying to build a social media web application. I am fairly clear on how to use Kafka for my backend ( communicating from backend to databases and other services).

However, I am not sure how should frontend communicate with backend. I was considering an architecture as: Frontend -> Kafka -> Backend.


Frontend acts as producer and backend as consumer. In this case, frontend would supposedly have all required resources to publish to Kafka broker (even if I implement security on Kafka). Now, is this scenario possible:

Lets say I impersonate the frontend and send absurd/invalid messages to my Kafka broker. Now I can handle and filter these messages when they reach to my backend. But I know that Kafka stores these messages temporarily. Wouldn't my Kafka server face DDOS problems if such "fake" messages are published to it in high volume, since it is gonna store them anyway as they dont get filtered out until they actually get consumed by backend?

If so, how can I prevent this?

Or is this not a good option? I can also try using REST for frontend/backend communication and then Kafka will be used from backend to communicate with database(s) and other stuff.

Or I can have a middleware (again, REST) that detects and filters out such messages.

like image 978
user3271166 Avatar asked Dec 11 '17 01:12

user3271166


1 Answers

Easiest way is to have the front end produce to the Kafka REST Proxy

See details here https://docs.confluent.io/1.0/kafka-rest/docs/intro.html

That way there is no kafka client code required in your front end and you can use HTTP(S) with standard off the shelf load balancers, and API Management tools.

like image 97
Hans Jespersen Avatar answered Jan 20 '23 15:01

Hans Jespersen