We are currently working on an app that will store IoT data in a database ( process it like average etc...) and make it available through Rest API. Our first though is of course to build one app (good old monolithic) that will get the data (over MQTT Endpoint mainly) and make them available with the rest API.
We were considering microservices (our use case would suit it I guess), but, we are not ready for that. We are two developers trying to build an app and I think, it is something that we could consider as soon as our monolith architecture will be not efficient anymore... We have worked on some project that use it and we understand the concept but there is some DevOps skill that we clearly do not have yet, and we are not Netflix, Google...
One of my workmate told me to split the app:
- One for MQTT endpoint (auth device)
- One for Rest API (login user and manage device for ex)
- One for proceed the datas (calc average etc...)
The MQTT endpoint will send the telemetries to a event-bus the data processor will get it and proceed it (calc average, store it...)
But it sounds like a distributed monolithic app and as far as I know, it's kind of terrible to manage (shared db model in a lib, everything is basically related to everything).
I still guess that the simple monolith app is more than enough for starting (we could run multiple replicas of the app), the microservices can come afterward and the distributed monolith described above is... original...
I know that this question could be "opinion based", but we are more looking at a pattern that could solve our technical problem.