Choose your IoT platform with care Published: 30.05.2016 - 14:00:00 Back to References Expertise Embedded Systems When creating an IoT (Internet of Things) system, you have to pay attention to many details. One is choice of the right IoT platform. There are many IoT platforms, and they’re difficult to compare. They are in some ways very similar, but also very different and not directly comparable. “IoT platform” can mean many different things. It usually refers to an IoT application platform, in other words a software platform that collects data from various sensors and IoT devices. The collected data can then be analyzed and used in various applications. Such platforms are usually in the cloud. Five main platform groups IoT platforms can be grouped into, for example, five main categories as illustrated in the figure below. IoT HW platforms are typically devices, various kinds of microchip hybrid computer platforms with a sensor on top. They are typically platforms for prototypes or very small production series. Examples of HW platforms could be devices like Arduino, Raspberry Pi, Beaglebone, ESP8266, Spark Core. Another group is the so-called proximal connectivity platforms, which refers to action happening nearby. For example, the thermometers and thermostats of the different rooms of a house can be wirelessly connected to a sensor network. Examples of this group are for instance Qualcomm AllJoyn, Intel IoTivity, Google Brillo and Thread. The third group is the IoT infrastructure platforms, which are used to transfer data from sensors to the cloud. Examples here would be the likes of PubNub, Mocana, Robomq, RabbitMQ, Mosquitto. The fourth group are the IoT data platforms, which are used to store, use, and analyze data. Examples of data platforms are Hadoop, Apache Storm, Spark Streaming, AWS Kinesis, Azure Stream Analytics. Finally there are comprehensive IoT software platforms, in other words background platforms for general use offered by Amazon, IBM, and Microsoft, for example. This article will focus on this last group, the IoT comprehensive software platforms. Four building blocks In principle, an IoT system consists of four building blocks. A device, in other words a source of data, a physical device, sensor, regulator, etc. Data transfer systems and protocols Data management and storage, integration, and analysis Data presentation and use. This produces added value for the users. IoT comprehensive software platforms consist of the above building blocks 2 and 3. No platform as such provides ready-to-use applications, but the advantage of a comprehensive software platform is that it provides a variable selection of different tools for compiling applications. A single comprehensive software platform is usually sufficient for building an IoT system. The software platforms on the market usually provide all necessary services. In addition, a device platform or an existing device is required. An adaptation of the application has to be implemented on top of the platform. Some things are better in some platforms than in others. One can also choose different parts from different platforms, but this option should be analyzed carefully to avoid future complications. In choosing a software platform, you may have to compromise. You may have to choose it depending on the focus of your area of application and depending on from where you can get the best functions. There are no major price differences between platform providers, and they usually use the same criteria. So in practice, the competitiveness of different platforms doesn't depend on pricing. Processor time can be more expensive for one platform than another, but the situation can be the opposite with data storage. It’s important to choose a platform that provides tools for doing quick tests. It’s best to always make a solution prototype and test whether it works on the platform. Your background and experiences can also influence the platform choice. If you have expertise in using Microsoft tools, Microsoft Azure can be the best choice. If you already use Amazon’s cloud platform, there may be contract-related reasons to use the same for IoT. An important business aspect is continuity. Many new platforms have appeared in recent years, many of which are good, but there is no guarantee of how long they’ll be available. When starting a new business, it’s best to avoid the risk of a tool provider going out of business by using large and well-known providers like IBM, Amazon, and Microsoft. Four service models The different available service model options often confuse IoT users. In principle, you can buy a service in four different ways. The first option is to do everything yourself by buying a computer and installing everything yourself. That way you control and own everything yourself, the server hardware, operating system, and software. The second option is use of a virtual server (Internet as a Service, IaaS), where you rent the hardware but control and own everything else. The third option additionally provides the operating system and application platform, and you’re only responsible for the application. This is called Platform as a Service, PaaS. The fourth option, Software as a Service (SaaS), also provides all available applications. The two most important options for IoT are PaaS and SaaS. PaaS pricing is based on resource use, on how much you use processor capacity and the database. If you need to search the database often, you need fast access. This is typically rather expensive. A database for long-term storage, which is searched only seldom, is relatively inexpensive. Optimization of database use is important to ensure the best possible pricing and service. When designing a system, it’s a good idea to plan how much and what kind of storage space you’ll need. The main benefit of PaaS and SaaS services is paying for actual use. There is no need for prior investment in the system; you only pay for actual platform use. Typical pricing criteria for PaaS services are use of processor capacity, memory, databases, and storage space. Different kinds of storage space It’s important to understand that IoT systems need three different kinds of storage space. A reliable and stable cache memory, used for storing sensor data before transferring it for use in applications, for example. A fast database for use by the applications. Long-term data storage. It makes sense to optimize use of the different storage spaces according to your needs because this has a significant effect on the price of the service. You should plan how long you have to be able to quickly access the data needed by the applications and optimize the data amount you use accordingly. After data has been transferred to long-term storage, it’s not a good idea to retrieve it often. But this is where even terabytes of data can be stored for long periods of time. PaaS and SaaS services can be easily changed and increased, so they’re easy to scale up and down. Differences between the platforms IoT software platforms are very similar in terms of their technology and architecture. The differences are more in what they emphasize and in what the service provider considers important. For example, IBM’s platform is largely based on analytics whereas Microsoft’s Azure emphasizes remote services and parallel services and their integration. Amazon’s service is the most traditional cloud service. ThingWorx and Cumulocity services on the other hand have good tools for getting started quickly. Their strengths are in visualization and user interface creation. If your needs are heavy in analytics, IBM is a good choice. If the biggest need is data, it’s better to go to Amazon. Choosing the platform Many factors affect the choice of an IoT software platform. Fast prototyping. IoT in practice means new business activity models. It’s necessary to be able to try them out quickly and determine which models work. All the platforms mentioned in this article are good for fast prototyping. The best is perhaps IBM’s Watson because it doesn’t require any outside tools or programming. There is also no limit on the evaluation time (only the data amounts). At the other extreme is Azure, which requires the use of the Visual Studio tools. That’s no problem if these tools are already in use anyhow. Tools Different platforms provide support for different programming languages. If one of these is your organization’s forte, make sure that it’s supported on the platform you’re interested in. Continuity There are hundreds of new businesses in the world creating IoT platforms. Some may be very innovative, but it can be risky to base your business on one of them. It makes sense to use large and well-known providers like IBM, Amazon, and Microsoft. They are the winners in the long run. Small startups die or are bought up by one of these big companies. Vendor lock-in Each platform implements the services in its own way, and these are not compatible with other platforms. Moving services from one platform to another probably works best between platforms based on Cloud Foundry, for example IBM Watson and GE Predix. Hosting model If it is essential for your IoT application that data is stored in specific geographical areas or on otherwise precisely defined servers, you should check the IoT platform’s hosting model and the locations of its data centers. IBM, for example, offers a cloud-in-a-box model with which all IBM’s PaaS services can be put on your own server. You can of course also combine different services and providers. For example, if your application is closely connected with Microsoft systems and requires storing large amounts of data and doing cognitive analysis of the data, Azure can be seamlessly integrated with existing Microsoft Enterprise applications. Amazon’s AWS offers the powerful big-data service Kinesis, and IBM the unique analytics of Watson. About the author Anssi Rantamäki is an Inudstrial Internet professional with more than 15 years of experience in demanding IT development projects.