Amazon DynamoDB is a cloud-native, NoSQL, serverless database service.
$0
capacity unit per hour
Apache Kafka
Score 8.5 out of 10
N/A
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.
It’s great for server less and real-time applications. It would be great for gaming and mobile apps. However, if you need relational database and have fixed budget, do not use it. While budget can be managed, you need to be careful. Also this is not a tool for storing big data, there are other wide-column database types you could use for it ins the ad
Apache Kafka is well-suited for most data-streaming use cases. Amazon Kinesis and Azure EventHubs, unless you have a specific use case where using those cloud PaAS for your data lakes, once set up well, Apache Kafka will take care of everything else in the background. Azure EventHubs, is good for cross-cloud use cases, and Amazon Kinesis - I have no real-world experience. But I believe it is the same.
Really easy to configure. I've used other message brokers such as RabbitMQ and compared to them, Kafka's configurations are very easy to understand and tweak.
Very scalable: easily configured to run on multiple nodes allowing for ease of parallelism (assuming your queues/topics don't have to be consumed in the exact same order the messages were delivered)
Not exactly a feature, but I trust Kafka will be around for at least another decade because active development has continued to be strong and there's a lot of financial backing from Confluent and LinkedIn, and probably many other companies who are using it (which, anecdotally, is many).
Sometimes it becomes difficult to monitor our Kafka deployments. We've been able to overcome it largely using AWS MSK, a managed service for Apache Kafka, but a separate monitoring dashboard would have been great.
Simplify the process for local deployment of Kafka and provide a user interface to get visibility into the different topics and the messages being processed.
Learning curve around creation of broker and topics could be simplified
It's core to our business, we couldn't survive without it. We use it to drive everything from FTP logins to processing stories and delivering them to clients. It's reliable and easy to query from all of our pipeline services. Integration with things like AWS Lambda makes it easy to trigger events and run code whenever something changes in the database.
Functionally, DynamoDB has the features needed to use it. The interface is not as easy to use, which impacts its usability. Being familiar with AWS in general is helpful in understanding the interface, however it would be better if the interface more closely aligned with traditional tools for managing datastores.
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
It works very well across all the regions and response time is also very quick due to AWS's internal data transfer. Plus if your product requires HIPPA or some other regulations needs to be followed, you can easily replicate the DB into multiple regions and they manage all by it's own.
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.
The only thing that can be compared to DynamoDB from the selected services can be Aurora. It is just that we use Aurora for High-Performance requirements as it can be 6 times faster than normal RDS DB. Both of them have served as well in the required scenario and we are very happy with most of the AWS services.
I used other messaging/queue solutions that are a lot more basic than Confluent Kafka, as well as another solution that is no longer in the market called Xively, which was bought and "buried" by Google. In comparison, these solutions offer way fewer functionalities and respond to other needs.
I have taken one point away due to its size limits. In case the application requires queries, it becomes really complicated to read and write data. When it comes to extremely large data sets such as the case in my company, a third-party logistics company, where huge amount of data is generated on a daily basis, even though the scalability is good, it becomes difficult to manage all the data due to limits.
Some developers see DynamoDB and try to fit problems to it, instead of picking the best solution for a given problem. This is true of any newer tool that people are trying to adopt.
It has allowed us to add more scalability to some of our systems.
As with any new technology there was a ramp up/rework phase as we learned best practices.
Positive: Get a quick and reliable pub/sub model implemented - data across components flows easily.
Positive: it's scalable so we can develop small and scale for real-world scenarios
Negative: it's easy to get into a confusing situation if you are not experienced yet or something strange has happened (rare, but it does). Troubleshooting such situations can take time and effort.