AI Research and Product Accelerator

Distributed Cloud computing

Topics around how to build scalable distributed systems.

Picking Messaging Systems

In order to build complex distributed systems,  one needs to figure out how to deliver messages from point one-one or one-many scenarios.

Obviously there are so many messaging systems and vendors out there. Ones I have used are Kafaka, Kinesis and RabbitMQ.  It is important to understand difference between message brokers(RabbitMQ for peer-peer messaging) Vs Kafka/Kinesis type realtime streaming systems which work on publish-subscribe model.

Apart from making sure these are high performing and highly available, it is also important to understand what are the use cases in the system you are building and use accordingly...In lot of existing systems, these choice have been made, so it could come down to how to migrate existing messaging services to one of these. If you are building new system from scratch, you may want to consider hosted cloud services like Apache Kinesis(if you don't want to get into hosting/managing systems..Obviously it all depends upon tech strategy for your business case(considering short/long term cost etc).

Following are some good articles

https://content.pivotal.io/blog/understanding-when-to-use-rabbitmq-or-apache-kafka

Using Spring and RabbitMQ.

https://spring.io/guides/gs/messaging-rabbitmq/

Kafka Use Cases

https://kafka.apache.org/uses

Amazon Kinesis

https://aws.amazon.com/kinesis/

If you are considering, whether to choose kafka or kinesis, you might want to read following article.

https://medium.com/aws-activate-startup-blog/the-tale-of-two-messaging-platforms-apache-kafka-and-amazon-kinesis-654963bdbf35

you can learn more,

BlackPepper Labs