The internet of things, big data and machine learning technologies are shaping the next generation of business applications. These smart applications power innovative digital enterprises by being:
- Intelligent: They make recommendations and guide users to take the next best action;
- Proactive: They predict what is likely to happen and trigger workflows telling users what to do when; and
- Context-aware: They are personalized, aware of users’ location and embedded in their processes.
What we will see over the next few years is that the app user interface as we know it will slowly disappear and the interaction with the app will be through push notifications, messaging systems and conversational UIs like chatbots, and plug-ins in existing productivity software.
These complex smart applications are in high demand from the business, looking to differentiate and learn more about their users, and from users, who expect personalized and contextual user experiences. However, building these applications is challenging and requires many different components and building blocks. Let’s break down the anatomy of a smart application.
The anatomy of a smart application
When thinking about what makes up a smart application, each building block fits into one of the following columns:
- Compute: Smart apps compute information, this translates to behavior.
- Communicate: Smart apps communicate information, this is the messaging.
- Store: Smart apps store information, this translates to the state of information.
We can apply this categorization on each layer of the anatomy stack that is necessary to build a smart app.
The real endpoint for IoT is obviously the thing that should be connected, whether physical products, like cars, jet engines and lighting systems, or other “things,” like livestock, crops, human beings or spatial areas like rooms or outdoor space. In order to build a smart app, you need to be able to connect to things. This is the first layer in the anatomy of a smart app.
This layer is made up of sensors that collect and report data on the actual status of things to which they’re connected. Sensors could be mounted on or embedded in things to monitor temperature, pressure, light, motion, location, etc.
Along with sensors, this layer is made up of actuators that control the physical or logical state of a product through signals they get from IoT apps or other systems, like opening a valve or turning a camera, motor or light on/off. This includes commands sent to embedded software, e.g. to reboot or update configurations.
Lastly, this layer includes the local storage in case the device is not connected when it receives new data.
Next, it is necessary to feed the data into the cloud, requiring a layer to ingest all of the data. This layer includes agents, components that mediate between a set of IoT devices and act as a bridge between the sensors/actuators and the cloud, deciding what data to send and when. In reverse, they also process commands and updates coming from the cloud.
The layer is where, for example, Amazon IoT, Azure IoT and Bluemix IoT live. They can filter, transform and act on events, as well as provide device management.
Within the communication column of this layer, it is necessary to have protocols to actually bridge the physical and digital worlds. For IoT device communication, the physical layer and communication protocols are distinguished. As far as the physical layer is concerned, gateways, mobile devices, mesh networks, and direct- or broadcast device communication are alternatives that may or may not be suitable depending on the use case. The choice for the physical layer will determine which communication protocols are most suitable (e.g. MQTT, CoAP, HTTP(S), AMQP, Zigbee, Z-Wave, etc.).
The next layer is the cloud infrastructure, made up of containers to run services and applications, messaging middleware and traditional database platforms as a service.
On top of cloud infrastructure comes the layer of app services that are crucial to building smart applications. These app services include predictive analytics, machine learning and cognitive services, along with the rest APIs to communicate with the things and trigger actions, and the data warehouses and big data stores to store all the information from the things.
When looking at all of the previous layers, it is evident that it is quite complex to build smart applications. There are many different components and building blocks necessary to build smart apps, most likely from a range of different providers. This means it is necessary to master a lot of skill sets to be able to build smart applications. In order to fill this skills gap, another layer must be added on top of these IoT, big data and machine learning services.
Model-driven platforms, also known as low-code platforms, provide a model-driven environment for collaborative, visual development of smart apps. In addition, core services for software configuration management, as well as branching and merging, are needed for development teams to commit their work, and create builds and application packages.
Model-driven platforms support omnichannel UI and the development of cross-platform, responsive and multichannel apps optimized for specific form factors.
These platforms provide a range of out-of-the-box connectors to connect with all the underlying smart services from different providers. They also include the domain models and data mappings to connect all the incoming data in a visual way to your application.
Last but not least, these platforms provide seamless integration with enterprise back ends and third-party services needed to manage workflows and make smart apps contextual.
The elements that define the anatomy of a smart app may come across as overwhelming. The type and level of sophistication of the system will determine how many of the elements and services described are needed to create an end-to-end solution.
Nevertheless, it’s clear that the diverse set of endpoints, network technologies, protocols, IoT software and application development services pose a challenge for enterprises planning to adopt IoT to transform their business operations. The question is: How do you make IoT technology development manageable? The answer lies in adopting a platform approach and including the additional model-driven platform layer.
Adopting a model-driven, low-code platform will significantly simplify the process of connecting, managing, getting insight from and building apps for IoT-enabled products and services. These high-productivity platforms are uniquely suited to help IT leaders and their teams address the challenges of lack of agility, technical complexity and skills shortage by facilitating rapid, iterative development essential to smart app success.
All IoT Agenda network contributors are responsible for the content and accuracy of their posts. Opinions are of the writers and do not necessarily convey the thoughts of IoT Agenda.