From docker containers to hypervisors, one can find the concept of virtualization in many facets of modern computing. The server handling this very website is most likely hosted on a virtualized server. Here, we will discuss the relevance of virtualization in the IoT space and how we handle the emulation of the various boards and sensors readily available on the Simuli platform.
What is Virtualization?
Let us start with a quick primer on virtualization. As the term suggests, it is the process of making something physical into virtual. An alternative way to consider this would be to think of it as an abstraction of the physical resource. To simplify this further, one can think of the difference between a house and a hotel. For a tenant to move into a house, it is often a more arduous process than staying at a hotel for a short while. It can also be observed that space and resources would be more efficiently utilized in the case of a hotel. There are also hotel staff and managers to take care of the various tenants for the duration of their stay - from welcoming them to when they leave. While a house is undoubtedly more comfortable, for the sake of this example, we can argue that it has limitations such as the overhead to move in and move out, the restriction on who can share a given space and the dependency on the people sharing the space.
Similarly, for a service to be deployed directly on the hardware (often called bare-metal deployment), the process of setting up, maintaining and tearing down the service is much more complicated than the alternative. Drawing further from the hotel analogy, virtualization also ensures more efficient use of resources and also involves management software to ensure that the service is running in a healthy manner. Furthermore, the most significant advantage is the compartmentalized nature of the environment in which you run the software. This means that you can run your services in isolation with controlled dependencies without fear of things breaking due to some other service sharing the same resource. Virtualization has many more advantages that you can try exploring.
Virtualization takes various forms depending on which aspect of computing we are dealing with. The most common element would be the virtualization of computers in the form of Virtual Machines or Docker Containers. This is a very broad spectrum to cover and would be best left to an article of its own.
The need for Virtualization in IoT
The recent past has brought to light many latent issues in various systems we took for granted, from supply chain and sourcing issues to the lack of good digital infrastructure for remote learning. These are a few scenarios where virtualization can be a boon in the IoT education space. In addition to this, virtualization allows us to reach scales that are not practical for experimental purposes with real hardware. Simuli was conceived to address this gap that has existed in the IoT space for a very long time - Using virtualized hardware to solve problems in IoT education that has caused it to fall behind other domains like AI, Web development etc. in which all one needs to get started is an IDE and a basic computer.
How do we do it?
The simple answer - QEMU. This may be a term familiar to those acquainted with virtualization, in which case you may also understand the complexities involved in setting up an embedded device in such an environment. Through Simuli, we have simplified this to the extent that the user has a one-click-launch experience.
For those unfamiliar with QEMU, it is an open-source virtualization platform that supports full-system virtualization and offers near-native performance. What this means is that you get access to all the software-level features of the devices you are working with and are not limited by factors like a programming language or the need for any custom code. You can even run Assembly code on our Raspberry Pi!
In addition to having a digital version of the board itself, we have in addition, modeled a suite of sensors to go along with it. These peripherals can communicate with the boards over hardware protocols like I2C and SPI because of our near-hardware level emulation. This offers the user the freedom to develop a project on our platform and then later use their existing code to implement the same on hardware as well. This is what we like to describe as one-to-one device emulation - ie. What works in real life works on our platform as is.
The advantage in a lab environment.
As anyone who has conducted a lab course can relate, Labs can get quite chaotic really quick - especially when dealing with diverse hardware. We have seen several universities leverage Simuli both alongside or independent of their hardware setups to conduct IoT courses in a quick and efficient manner while also giving their students meaningful exposure to key concepts so that they learn by doing. Furthermore, Simuli has proven to be a valuable asset to online universities conducting IoT courses that would otherwise have to deal with the logistics and complications of sending out hardware kits to students across the globe.
I hope this has given you a sneak peek into how Simuli works under the hood. Sign up at app.simuli.co today to get a few free credits to try out the platform. Please reach out to us at firstname.lastname@example.org if you need any assistance or if you wish to evaluate the platform for a course at your university.