Apache Kafka is an open-source stream processing platform developed by the Apache Software Foundation written in Scala and Java. The Kafka event streaming platform is used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.
N/A
TIBCO BusinessEvents
Score 8.0 out of 10
N/A
Enterprises are surrounded by hundreds of thousands of events that occur continuously. Hidden amongst them can be stalled business processes, opportunities for value creation, potential fraud, dissatisfied customers, failing equipment, and more. TIBCO BusinessEvents® proactively identifies these critical events, responds intelligently in real-time to navigate the fast-moving business environments and optimize outcomes. Decision-making in businesses requires a comprehensive…
For brokering messages, Confluent Kafka is well suited since it offers a managed solution ready to use. Scenarios where the solution is not very well suited are for example, where pricing is an issue. The solution costs quite a lot for basic usage (for example: for 3 clusters, pricing is above 100k$ a year).
BusinessEvents is not very well suited for Cloud native solutions, but it is suitable for traditional enterprise self-maintained data center deployment. And it gives the business the power to define/modify/update the business rules, in a visualized way, instead of asking IT team to maintain them. Generally speaking it is a very comprehensive rule engine solution, but not suitable for "hook on" some other complex computation/data processing logic
Apache Kafka is able to handle a large number of I/Os (writes) using 3-4 cheap servers.
It scales very well over large workloads and can handle extreme-scale deployments (eg. Linkedin with 300 billion user events each day).
The same Kafka setup can be used as a messaging bus, storage system or a log aggregator making it easy to maintain as one system feeding multiple applications.
The Kafka Tool is a community-made Java application that looks and feels from the past century.
Logging can be confusing. This certainly shows when we have to do troubleshooting.
Hybrid scenarios - pub/sub, but there are services in and outside a Kubernetes cluster. Then there are a ~3 options, but only 2 (the harder ones) are production-safe.
We had to write our own business rules interface that matched how our previous systems operated. Web Studio has gone through some great changes but in that time we have made a decision to move to Kafka, Kinesis, and Spark for our events streaming solution in AWS.
We did not modify our business process flow to take advantage of BE. If you are not truly running an adaptive business process effort, then BE could be overkill.
Kafka has suited our use case very well so far. Going forward we are planning to expand our platform manifold so the load on Kafka and our reliance on Kafka is going to increase only.
Apache Kafka is highly recommended to develop loosely coupled, real-time processing applications. Also, Apache Kafka provides property based configuration. Producer, Consumer and broker contain their own separate property file
Support for Apache Kafka (if willing to pay) is available from Confluent that includes the same time that created Kafka at Linkedin so they know this software in and out. Moreover, Apache Kafka is well known and best practices documents and deployment scenarios are easily available for download. For example, from eBay, Linkedin, Uber, and NYTimes.
Apache Kafka is built for scale. From high throughput and real-time data streaming, it has a strong advantage over RabbitMQ with its low latency. This put Apache Kafka at the forefront as the platform of choice for large datasets messaging and ensuring scalability when data scale up tremendously. RabbitMQ however has its strengths in traditional messaging. Routing and message delivery reliability are the bedrock of RabbitMQ and this is where RabbitMQ excels. In my previous workplace, RabbitMQ was of choice as reliability matters more than scale. In two words. Apache Kafka for scale, RabbitMQ for reliability. And for cloud deployment and large dataset messaging in what I am doing now, Apache Kafka is the default choice.
Drools is an open source alternative for CEP solutions, that provides a business rules engine. Unfortunately it comes without support, while the TIBCO support for BusinessEvents is very efficient. Additionally, TIBCO BusinessEvents suite provides several additional components that could satisfy many requirements, and it can be integrated with existing TIBCO stack, giving great interoperability with other TIBCO products. As well as could be used in stand alone way.
Positive: bursts of traffic on special holidays are easy to handle because Kafka can absorb and buffer all the messages we need to process long enough to let an understaffed set of back-end services catch up on processing. Hard to put a number to it but we probably save $5k a month having fewer machines running.
Positive: makes decoupling the web and API services from the deeper back-end services easier by providing topics as an interface. This allowed us to split up our teams and have them develop independently of each other, speeding up software development.
Negative: our engineers have made mistakes such as accidentally dropping a few thousand messages due to the CLI being confusing to use, and as a result a customer lost some of their precious data. I'd say that was more our fault than Kafka's though.
Positive: dashboard is very informative and extremely powerful
Negative: we need to have more capability for data integration - OR for prototyping data integration and analytics, without resorting to something complex and big like StreamBase (which is truly amazing) but requires too much specific knowledge for industrial application. something easier to learn would be great. for example, I was able to learn KNIME and prototype a solution in a week. But StreamBase is too complex.