https://yoctobe.com/articles/middleware-vs-point-to-point-device-interfaces/