IoT Software Architecture


My question is only indirectly related to the Spark Core, but since I use for my edge-devices the Spark Core and I don’t know of any general IoT forums on the web I would like asking it here. Above that I think some other people as well might have similar questions.

My IoT architecture consists of edge-devices (=Spark Core) - Gateway device (Linux based) and the Cloud. For programming the edge-devices I use C/C++/Wiring. But I’m doubting as what software stack to use on the gateway and the cloud. I know there are other choices (like Python, …) the ones I consider are: Java, NodeJS and C#/.NET

  • For the gateway I consider Java or nodejs
  • For the Cloud (backend part: REST services, …) I consider Java EE, nodejs or C#/(ASP).NET
  • For (web) presentation I consider AngularJS
  • For IOS/Android presentation I consider Xamarin

I would appreciate receiving any insights/experiences related to these options?


We are using the following for the Spark Core and you can consider trying them out since everything has already been done and available for your usage.

1.) Wiring coding style aka Arduino-compatible on the MCU

2.) Nodejs for the REST Api and Cloud communication

3.) We have SparkJS for you to build web apps

4.) iOS and Android App example code is available for you to build on.

Best of all, everything up to this point in time is open-source! :fire:

Hope this helps. :wink:

1 Like

@kennethlimcp Thanks for the info. Besides the links to the github repos I would appreciate receiving insights/usesof of the 3 mentioned environments (Java EE, NodeJS and .NET/C#) on the gateway and in the cloud. Our intention is not to use spark-server and its cloud but MQTT with another Cloud service provider. For IOS and Android we go Xamarin. The reason we have chosen Xamarin:

  • “business” code can be shared between IOS and Android
  • native (not web or hybrid)
  • 1 language C# (no need to learn Objective-C and/or Android)


I have no experience with that and this discourse is meant to support the Spark Community.

You are welcome to be here but i guess there are better places to have your questions answered. :wink:


Thank you that i’m welcome here!

@gdillen, you can install Spark Server on your Gateway Device. Also you can extend the Spark Server to meet your needs like MQTT or something. This will eliminate writing all he codes for device management, Spark Server (which is installed on you Gateway) will take care of all the heavy lifting and you an concentrate on your business logic. Does it make sense?

1 Like

@krvarma Thanks. Indeed seems something I will consider/makes sense. Especially for device management Spark Server on the gateway can be a good fit. I’ll install Mosquitto MQTT message broker on the gateway. Can you explain a little bit what you mean with “extend the Spark Server to meet your needs like MQTT or something”?

@gdillen, what I mean by saying extending Spark Server is you have the Spark Server source code and you can always modify the server for your needs and deploy. You can find an extension point and create some plug-in modules. I have done similar to that but not a plug-in system. You can find it here

1 Like

@krvarma Thanks for the suggestions.

1 Like