Use cases of Kafka
- messaging system - where applications need to send notifications (such as emails) to users
- activity tracking - users interact with frontend applications, which generate messages regarding actions the user is takingm. This messages would be later consumed by backend applications to generate reports, feed ML systems, updating search results or other actions to provide reach user experience. This is original use case for Kafka as it was designed in Linkedin
- gathering metrics from different locations - Applications publish metrics on a regular basis to a Kafka topic, and those metrics can be consumed by systems for monitoring and alerting, they can be also used in offline system like Hadoop to perform longer-term analysis
- gathering application logs - Since Kafka is based on the concept of a commit log, database changes can be published to Kafka, and applications can easily monitor this stream to receive live updates as they happen
- stream processing (for example with Kafka Streams API) - the term is typically used to refer to applications that provide similar functionality to map/reduce processing in Hadoop
- decoupling of system dependencies
- integration with Spark, Flink, Storm, Hadoop and many other bigdata technologies
- microservices Publish/subscribe (pub/sub) messaging