-
Notifications
You must be signed in to change notification settings - Fork 7
ADR
What communication protocol to use?
- Open Data Protocol
- Lightweight
- Commonly used
- Reliable
- MQTT
- HTTP
- CoAP
Chosen option: "MQTT", because it is lightweight, so it can work in very low bandwidth networks, MQTT allows communication between nodes in both reliable and unreliable networks.
What MQTT broker to use?
- Open Source
- Commonly used
- Large Community
- Customization options
- Available as a Docker container
- Mosquitto MQTT Broker
- HiveMQ-CE
Chosen option: "Eclipse Mosquitto", because it is a lightweight, open-source, and easy to use MQTT broker. The biggest problem with HiveMQ-CE is that it doesn't seem to offer many customization options. While you can change the port that it runs on via the docker command, you can't change the default username and password, and you can't enable encryption. There also doesn't appear to be any sort of bridging options. It's a very basic broker that is easy to get running, but it doesn't seem to offer much in the way of customization.
What database to use?
- Open Source
- Commonly used
- Large Community
- Available as a Docker container
- Fast queries
- mongoDB
- PostgreSQL
Chosen option: "mongoDB", because it is faster and more scalable. Queries in NoSQL databases can be faster than SQL databases.
What message queue to use?
- Available on AWS
- Commonly used
- Large Community
- Available as a Docker container
- Amazon SQS
- Kafka
- RabbitMQ
Chosen option: "Amazon SQS", because it is ease of setup and to use. It is sufficient for this project.