Ask Learn
Preview
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
In this blogpost I show an end-to-end approach for DevOps methodology applied to an IoT application based on software available today. Why? Because you can!
When you talk about DevOps typical scenarios referenced are mostly related to (web-) service development in the cloud or some kind of advanced web page. While there’s nothing wrong with this it is important to note that the DevOps approach is not really bound to a certain technology or type of application. Instead DevOps mindset is something that works for all kinds of applications. However of course, in some scenario challenges might be bigger than in others.
The IoT scenario leads to some additional challenges and I’m considering this posting as a proof of concept for the technology chosen. And of course I’m looking forward to reading your feedback.
So for my scenario I want write an IoT application – let’s say a refrigerator control application. The application has a very simple four button user interface which is – in fact – a copy of the interface of my refrigerator in my kitchen (without the stickers). Of course it won’t really control the refrigerator. Instead it will be running on a Raspberry PI. While a Raspberry PI is not exactly the kind of hardware you would choose if you’re manufacturing refrigerators, it serves as a good sample device for my purpose.
I want to be follow all the well-known DevOps best practices. Some of them of course are not really related to technology at all – I’m going to skip those. Instead I want to focus on the things which make the DevOps for IoT case special, which is basically the fully automated end-to-end CI/CD chain.
So here’s the challenges written in User Story style.
The approach I describe in this blogpost is validated by a prototype I set up. Of course I picked technology and tools in a way that made it easy for me to handle things, however there’s a bunch of stuff which can be reused no matter what your technology is.
Maybe you’re interested in other challenges around this scenario. Please let me know in the comments.
As a summary of the challenges you see that a lot of them are related to automating certain things. My approach here is to see which tools are already available today which need to be plugged in the appropriate order to create an end to end scenario without extensive custom implementations. Here’s the approach I took.
The IoT application I created is a Windows Universal App (UWP app) targeting Windows 10 IoT Core. If you’re not familiar with Windows 10 IoT Core: It’s Microsoft’s operating system for IoT applications. There’s a reason why I picked an UWP app and I’ll come to this later. However most of the approach should work (with slight modifications of course) if you picked something totally different as well.
The orchestration platform I chose for supervising all the automation is Visual Studio Team Services. VSTS doesn’t really care about the type of application you are hosting so if you’re into another technology you’ll get things going as well. VSTS has been built with DevOps in mind so this really fits like a glove, however I wonder if anybody ever used it in a DevOps for IoT scenario like this before.
The management platform for all the devices (refrigerators) is Azure IoT Hub. Again Azure IoT Hub is very open to any kind of devices you are trying to connect. In fact it doesn’t care at all and you can chose from a couple of programming languages to talk to Iot Hub. My communication with IoT Hub is based on Node.js and .NET.
The platform for application telemetry I chose is Hockeyapp. Hockeyapp was initally meant to be used for mobile applications (iOS and Android) but it offers support for desktop applications and Universal Windows Apps as well and there’ even an SDK for UWP apps which made integration really easy.
The basic workflow will look like this:
In subsequent posts I’m planning to show you some details of the implementation so that you are able to follow along and try things yourself. Let me know what you think of this scenario in the comments below.
Thanks to Gunter Logemann and Holger Kenn from the Microsoft OEM Team who worked with me on some challenges when it came to the deployment of the software.
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign in