Search code examples
azureazure-functionsazure-webjobsazure-iot-hubazure-application-gateway

How should I link a backend solution to an IoT Hub


So, I am working on an IoT solution on Azure, we have been using a partner solution where we had the partner's devices linked to his cloud solution that exposes the data to us Via REST services. Right now we want to have our own IoT Cloud Solution on Azure.

At first, I am planning to build a Bridge between our IoT Solution and the partner's cloud solution via its REST Services that will link to our IoT Hub in order to ingest the data to our cloud.

Also, the data will not be only telemetry data but we'll have to send commands as well to those devices.

My question: I would like to know what would be the appropriate technology/solution to use a gateway (Data Grid, Azure Function, Azure WebJob)

Overview of the architecture

The numbers in the picture represent the step that I am considering to tackle this problem.

1- First we are implementing an Application gateway that will have to get the data from the partner's system and sending commands to their system. It will allow us to first build the other components of our system and make sure that it can handle what is in place right now.

2- Second, the partner's devices will connect directly to a device gateway that is connected to our IoT Hub. In this case, we will not be using the gateway made in 1 anymore.

3- Finally, we will have our own devices connected to our IoT Hub, the partner's devices will always be connected to our IoT Hub via the gateway built in 2.


Solution

  • After some time working on the subject, I did implement an AZURE Function app for the following reasons :

    • Supports Continuous Deployment and Integration Even though Azure Functions is serverless architecture, it still supports Continuous Deployment and Continuous Integration
    • Capabilities for implementing code - Being event-driven, the application platform has capabilities to implement code triggered by events occurring in any third-party service or on-premise system.
    • Compute-on-demand: This delivery model ensures that computing resources are available to the users as per their demand.

    I have also used Azure Table Storage as database storage technology.