IMPLEMENTATION OF IoT SENSOR PLATFORMBack Case Studies
Client: Cloud Platform Solution Provider
Project Duration: 12 months
Goal: Build a scalable IoT platform that supports storing, viewing and analyzing the collected measurements
Tech: Scala, MongoDB, Apache Cassandra, Mosquitto, ZeroMQ
Build a scalable big data platform capable of storing millions of measurements per second generated by thousands of devices. Provide measurements with graphical representation but also process and analyze data. Based on analysis and predefined limitations, generate messages and alarms and notify other systems or end-users to take appropriate action.
Proof of concept phase with protocol and messaging implementation was enough to confirm the product idea. The initial storage solution was MongoDB which provided enough flexibility for frequent data model changes but wasn’t sufficient as a long term solution for the targeted requirements of scalability and performance.
Once the data model reached a certain level of maturity and changes wound-down and once the proof of concept phase generated enough information to give us confidence, we had to move to a more scalable and robust solution. Cassandra was introduced as a storage choice since the collected metrics are time series data and that is a perfect use case. Node to node benchmarks gave obvious benefits to MongoDB since it stored everything in memory, but as soon as it came to the challenge of scaling (especially in production) it was obvious that Cassandra was a better fit.
Cassandra provides unrivaled scalability and performance when it comes to time series data. Natural fit accompanied with scalable-by-design architecture gave the best possible performance. We managed to support 10,000 sensor devices with a single application instance and a 3 node cluster and ability to scale out on demand.