Design Question -

We are in IoT era, and most of new bee’s like me having the challenges to choose the right architecture or design implementation for securely send messages from device to any cloud without any data loss.

So based on my analysis, I have started with MQTT and below is high level design

Good news is it works, and send data to cloud. But I am not able figure out how to trace the messages which are successfully sent to cloud or not! How do I make sure message delivery is success. Do I need to have internal small SQL lite DB to store the messages and mark it as success if it delivered to the cloud?

Secondly, Is it secure design? What happens device landed in to wrong hands, will he/she start flooding my cloud data center? I am planning to use certificates but does it solve the needs?

I am using MQTTnet from https://github.com/chkr1011/MQTTnet

I am planing to try out RabbitMQ. Is it right choice for my need?

Secondly. sending messages to cloud is right design? do we need a server in between to filter or trace messages? may be some security appliances can be placed between device and cloud?

Hi Deepak,
Cloud is the thing now. Everyone is migrating to cloud.
You can add any type of security to your data you wish. You can encrypt the data itself and then send over encrypted connections using TLS or SSL. Almost all servers or brokers support it. If you use established standard services like AWS IOT, you can use ready-made security solutions as needed by these services.
MQTT has something called as Quality of Service. It defines the guarantee of data being received by the receiver. Read about it.
When i design these devices and use mqtt, I send the packet and discard after receiving the acknowledgement.

The architecture sounds good.

Thanks for response

Where I can see pro’s and con’s between RabbitMQ, MQTTnet and others like EMQ ?

Basically scaling is the concern!

Second, do we need any server between device and cloud to filter messages? like to keep security appliances in between.

I don’t think so. There are adequate security measures to connect to cloud IOT servers like Azure or AWSIOT. You dont need extra server.

For comparision, you need to google and you will find if someone did comparison and posted online if you are lucky. Normally companies post benchmarks about their softwares against other competitions. Check the official websites of these.