This is an old revision of the document!
Volmer Mihai-Cristian - AAC
A backend server for an IoT project is a server that collects data from sensors. It can also process the data and display it on a web page or provide ways to access the data.
I have studied some of the available backend solutions for IoT projects. There are many options to choose from. However, each comes with its advantages and flaws.
Some of the available backend solutions are: AdafruitIO, DeviceHub, ThingSpeak, Sense IoT etc.
InfluxDB is a timeseries database with an SQL-like syntax. This means that the entries are indexed by a timestamp so they are easier to process.
Unlike other backend solutions, this provides only the database with HTTP and UDP endpoints that allow remote devices to insert or query data.
InfluxDB is free and open-source. This means that it can be deployed on any user-owned machine running Linux or Mac OSX. This is a great advantage because it provides greater flexibility. It can also run on multiple machines in a cluster-like infrastructure.
We have chosen InfluxDB in our project because we were able to deploy it on our machines and configure it how we wanted. Also, we were able to try different configurations without affecting other users. Another important reason is that the InfluxDB community is very active at this moment.
Deploying an InfluxDB is very straight forward. The official website has extensive documentation regarding deployment, configuration and usage.
InfluxDB is highly configurable. This is a great feature because it makes it flexible for a wide range of usages. The configuration is made by modifying the /etc/influxdb/influxdb.conf file.
We have temporarily disabled the Meta Service option since we did not use the server in a cluster-like infrastructure. We also enabled the Continuous query service.
For connectivity, we have enabled the HTTP endpoint and one UDP listener.
We have used a t2.micro (1 core of 2.4 GHz, 512MB RAM) AWS machine and a Lenovo Thinkpad W540 laptop (8 cores * 2.8GHz, 16GB RAM) to host our InfluxDB instances.