Saturday, January 20, 2018

"FOG Computing" with Windows 10 IoT Core - Flashing old wine in small bottle


Windows 10 IoT Core


Windows 10 IoT Core is the next version of Windows 10 embedded, which got enhanced for the need of IoT requirements. Windows 10 IoT Core is a light weight windows OS for small mother board  IoT devices. This version is light weight by stripping all the UI and other heavy items of the Windows 10 OS. There is also another version of this Windows 10 IoT Enterprise as it is a commercial version.

Actually this blog is based on my previous blog "FOG Computing" with Azure Stack, where the discussion was about "Fog Computing" for IIoT (Industrial IoT), this blog is about Fog Computing for smart devices like Home appliances, Drones, vehicles, etc.

Smart Devices


Unlike the IIoT where the plant will be in remote location and numerous sensors and machine signals to be processed and sending all the data back and forth the could or processing the data at cloud be a drawback. Smart devices have minimal inputs or data needs to be processed within the device. These devices as mentioned above are mostly single unit devices and connected to an internet and data can be transferred back and forth easily.  


Why "Fog computing" Then ?


For a smart device, implementing "fog computing" through a separate physical layer is not be an optimal solution.  But smart device is not like plant where it will be a single unit of high volume data, rather smart devices constitute a huge number in collection.  Assume collection of cars running in a city, collection of home appliances in a community. This will be a huge collection and data transfer of  all the devices would be a high volume data transfer and decision making  for each of the device could be a very costly operation.  To constraint the huge volume of data and to reduce first response time, Fog computing would be better option  if there is an intermediate layer which process the data, does decision making and the first responses.

Fog computing with Smart Devices


Fog computing, implementing a separate physical layer(between the devices and the cloud) is still a costly and not a viable solution for the issues discussed above.  Coming out of the concept "intermediate physical layer" as Fog computing. Lets consider concept of "Fog computing" as intermediate logical layer where all the functionalities like process the data, decision making and first responses are done without reaching the cloud. Then Smart devices are not devices which just connect to the internet and communicate with the cloud for any intelligence.  Rather smart device, is a device which implement the intermediate logical layer of the Fog computing. Smart device extends from the existing thumb rule of connecting to the internet to AI decision making and first responses before connecting to the cloud.  

For Smart Devices to achieve this capabilities needs lightweight software infrastructure to support  the device input/output and should have the capability to run high performance AI computing. Win10IoTCore with some of its built in features provide a great support for Fog computing at device level. Win10IoTCore currently being supported by Intel,Qualcomm or Boardcom and supported numerous devices. Full Flash update is available for certain devices like Raspberry Pi,MinnowBoard MAX,etc.. making it easy for doing POC and initial development. The developer just need to download from IoT dashboard and flash it in the device.



Windows 10 IoT Core Features

Note: As listed in the Azure portal and based on my understanding. I have not done hands-on on all the features it is listed. Each of the below section will be covered as a separate blog in future

Windows 10 Container Service 
One of the main features from Win10IoTCore a Fog Computing perspective is Windows Container Service. Container Service is an application packaging technology at OS level. Windows Container Service allow to run applications in a isolated memory space directly interacting with the OS Kernel. As the containers run in a isolated memory space, it should not exceed the memory space, all the binaries which is needed by the App to executed will be inside the memory space (No shared binaries) .  Microsoft has released the IoT Hub, Stream Analytics, ML Studio as container based apps. which can be downloaded as a image file and hosted to the Device by simple commands.

Pros
As it is isolated at the OS level , the deployment of the containers or application will not hurt  other Application's or the existing systems in the smart device. making it securely run without interruption. The best part of the container service is that is can host any application (IoT bridging applications) using any platform like nano server, .NET core framework.

The How's

1. As it is commonly know that container service is a not that stable and can easily prone to "explode", "crash" or "go down" (unavailable) in everyday scenario. That is the reason Kubernetes became so popular with part to container services. The "How" here is the availability of container in the smart-devices? smart devices run on a minimum memory space in a disconnected session.In those scenarios either we have to run a additional monitoring software either inside the smart device or wait  for the device to get connected to spun-off the container and definitely losing the data in mean time..

2. The container as isolated kernel space of the OS. Then how the communication between the two containers inside the smart device will work ? I did some deep drive in it and came across this topic and came across multiple scenarios. This need is still a grey (to be frank a bigger area) and will be covered a separately (not to bore or confuse  the users). The "How" is how is the modules hosted in a smart device going to communicate with each other and how is the communication between the smart devices and  Cloud central , communication between the user and the smart device is going to happen.


Universal Windows App

Universal Windows App is a new feature available in windows 10 OS.  The UWP is a set of core windows API for developers to write the app. These core API's can be extended to a particular device type like IoT, Phone Tablet, Desktop and Surface. I have  not done hands-on on this especially with the IoT Device Extension., I am planning to do a separate blog on this.

Pros
As the the application need to run is a small memory space, installation of big frameworks to run small apps is not a viable option. In this case applications can be run uisng .NET core or Windows nano server.

The How's
From high level, I see this as a markup language based application just like Bootstrap where based on the device deployed the UI renders automatically. I need to explore "How" this fits in IoT smart devices.


Arduino Wiring API

This is the more fascinating and the important topic I want to ponder. This is a open source community for developing device interface  with peripherals like sensors, LED displays and breakout boards. The Arduino community is a open source community and developers can really expands the horizon with respect to Azure IoT extensions.

Pros
The microsoft's support for UWP and Arduino Wiring API show, that they should have developed a mechanism to bridge (can be integrated together) these two technologies.



Conclusion



Windows 10 IoT Core is a child of a old well proven industry know Windows OS. But still it has need reached the zenith with respect to embedded technologies which is still owned by C, C++, MATLAB, etc. But IoT is more of internet connectivity and step closer to the user in terms of interaction. When it comes to user Interaction and user Interface ,windows has always pioneered the  industry, provided it has a large developer base and a user baser to get easily reach the market. 

No comments:

Post a Comment