In Part 1, we were able to learn a bit about what Microsoft’s Azure IoT Edge does, ran a sample app, and modified it. In Part 2, you got a couple simulated devices sending data to the cloud, all on your development machine. And Part 3, you put Azure IoT Edge on an actual, real device that you could install somewhere (in this case, the Raspberry Pi 3).
Microsoft’s IoT Edge is a versatile swiss army knife for IoT. With the ability to write modules in Node.js, Java, C#, and C, and to mix and match modules in different languages with each other, and then compile the whole thing to run on Windows or Linux, it’s accessible to most developers.
In a very helpful move for an early-stage project targeted at a market in its infancy, the code is open source and easily modified for those who would like to. The codebase of Azure IoT Edge is larger than most GitHub projects for obvious reasons at 610 files not including the samples, but for most scenarios you can just make the default project and get on your way. If you do want to modify the source, the code is easily traversed.
What I found surprising and as a bit of a letdown was the build and install process. There are different prerequisites for different operating systems to run IoT Edge, understandably, but the install process involves quite a few commands in the command line. I would like to see a bundled utility that bootstraps the entire project from source in various environments, for example.
As a concrete example of the pain felt, in Raspbian on a Raspberry Pi 3 I struggled for hours with setting up a bluetooth connection that would work with the LightBlue Explorer app, an app that can mock bluetooth signals so you can develop against them. I was able to use my PC to connect and read the fake bluetooth peripheral, but could never figure out how to do the same in Rasbian. The blame lies partly on my lack of Linux familiarity (an operating system I’m admittedly not as familiar with), but I also believe the process could be made much easier.
In contrast to the uneven experience of installing Azure IoT Edge and it’s dependencies, developing and installing modules is fairly straightforward. Using the JSON configuration file to identify modules being used and how they relate to each other feels familiar and friendly as a developer.
At a future point, I could see a GUI application that can accomplish the same thing being useful for non-technical employees that still want to mix and match modules created by developers. Think WordPress for IoT.
Although the top story in everyone’s news feeds regarding Azure IoT Edge is the intelligence it can bring from the cloud to the Edge, I’m not entirely convinced this is the primary objective.
Sure, the intelligence of the cloud at the edge bit is the show horse, and that’s what Microsoft can have keynotes about and get mid-level managers excited about. Ultimately, it’s that and a whole lot more.
Under the hood, it’s still the workhorse of a very flexible IoT gateway. Having evolved from Azure IoT Gateway SDK, that makes sense. This arena is the core of the product and where the grunt work is going to happen.
There are times when you won’t want to use Azure IoT Edge. Have a bunch of secure low-power IoT WiFi, LTE, or LPWAN devices that connect directly to the cloud? Maybe you don’t want or need the complexity of a gateway. If you don’t want a single point of failure, maybe the Azure IoT Edge is not for you (although you could in theory fall back to another device). Are you building a consumer product or other single micro-controller device? Azure IoT Edge probably isn’t the right answer.
Still, there are many times when it might very well be. When you have a bunch of disparate devices that need to have their data rounded up and securely sent to the cloud, as is the case in warehouses and manufacturing floors and hotels and retail outlets across the world, Azure IoT Edge shines. When you have product teams comfortable in different languages that would like to build robust features within that gateway, again, Azure IoT Edge.
And yes, if you’d like to reduce cycle time and cost between edge and cloud by bringing some of the intelligence of the cloud to the edge, Azure IoT Edge is there.
Pardon my wordplay, but there are still quite a few rough edges in Azure IoT Edge. It’s clearly an early-stage, albeit very capable product. If you don’t mind working through some of the kinks to be early to market or just simply serve your clients, it’s a robust, flexible, and well-supported option that will likely get even better over time.