I am planning to design an application whos job is to manage and control some devices. There are some settings that can be set on the device through a GUI. At same time those devices trigger some events that need to be processed ( So will have multiple services to process events). Communication to devices are mostly through USB but some devices are Bluetooth and wireless. So I will have a middleware for communication between hardware and software services. Finally each device has a configuration settings that need to be stored in some cloud just for backup propose.
I want to understand how to design this system. The key input data is:
My questions are:
Is this system can be considered as a standalone application? Can we refer to it as networked application because of communication between device and services? Or some Bluetooth and Wireless communications?
Can we suppose to use event driven architecture just because of processing events (software or hardware events)? Note: It is important to handle events in the least time (to be real time)
In general what kind of architecture fits the requirements for this system? [Multi Layer, Event Driven...] and also if any suggestion about related design patterns.
Thanks.
This is a difficult problem. Even experienced teams of engineers would struggle to this well. It is much more complex than a design pattern. But it is a fun design challenge. I created an architecture. I didn't have time to include the cloud backup. The Cloud will be easy compared to everything else.