In 2017 I delivered design research for an improved IoT Edge developer experience in the Watson IoT Platform.
What is IoT Edge?
Edge devices generally live on the edge of the network within an enterprise. They are specific hardware sensors, industrial controllers, or other industrial devices residing on private or potentially proprietary networks at a physical location.
Edge devices are creating quite a challenge for systems integrators since most are generally building cloud-based applications which rely on receiving information from IoT devices to accomplish the business goal.
There are many challenges that exist in developing a path for this information flow, including message/network protocols, bandwidth requirements, redundant data reporting and data routing/orchestration
IoT Edge Challenges
Our design research summarises the insights of main challenges with IoT at the Edge
Latency and Time
- Time to response – Can not wait for a real-time cloud control response to a system state that may already have changed
- Loss of cloud connectivity – Loss of cloud-based control may block instrumented operations
Quality and Time
- Time to insight – It may be better to get less qualitative insights rapidly from a local computation, then wait for deep data insight from a cloud analytics service.
Bandwidth and Cost
- It may be expensive to transfer and store all data from connected devices
- Large IoT data traffic may choke the available bandwidth for other business solutions
- Data gravity plays in favor of IoT cloud vendors rather than the customer
Security and Vulnerability
- With more types of devices directly connected the vulnerability and risk of data loss increases
- Laws, regulations, confidentiality, and privacy may limit data to be shared or cross over borders
- Depersonalization and masking may be required at the edge before sending to the cloud
Maintenance and Operations
- The effort to manage instrumented assets at the edge at scale is generally underestimated
- Managing configuration upgrades and scheduling rollouts of updates
- Centralized management of distributed device and gateway status and health
User Research on IoT Edge Development
Based on our research we find that
- IoT Edge is today on the agenda for Solution Architects / Application and Device Developers / Executives / Operators
- Organisations today have already, or are planning, an IoT Edge strategy and are developing code for devices and gateways mostly in Python and Node JS
- Development teams are building new firmware and applications for IoT devices at the edge. They care about Remote updates / Edge analytics / Local messaging.
- They use ARM / Linux / MQTT / IP / Bluetooth
Devon the IoT Edge Device Developer
Devon develops and tests code for a device type that integrate sensors, actuators with analytics and control capability on the edge device. He reuses core IoT device capabilities for device security provided by chip manufacturer, MQTT messaging and device management. He develops his custom device behavior and protocols on the device.
He packages the device type configuration of capabilities and uploads to the IoT Platform for provisioning to devices of the type.
- Develops code for devices and gateways
- Tests and troubleshoots networking protocols
- Makes use of highly secure and scalable protocols for developing clients to talk to the platform
- Makes sure that the device passes tests on connection, data transfer, device management and security use/test-cases
- Connects devices to the cloud to transmit data and perform tests
- Code, test, debug, and maintain firmware for devices and gateways
- Optimises device performance by edge capabilities
- Monitors and reports on the performance and health of devices
- Simulates and analyzes device data to verify features
Chris the IoT Application Developer
Chris is developing services and applications in an IoT solution based on a cloud and edge service architecture in Bluemix that integrates with the IoT Platform.
He develops microservcies that respond to state and conditional events and implement the business workflows and application.
- Develops cloud applications and services that depend on data and events from the Watson IoT platform
- Uses IoT platform and database APIs to access device data
- Responsible for system architecture, technology selection, code development and validation, and system integration testing
- Minimum set up for new environment
- Implement data models
- Connect simulated devices and play with the data
- Create and test applications, micro-services and exposing APIs
- Use client libraries to code productively
IoT Edge Developer Journey
The developer journey for Chris and Devon
- Create or Join new Bluemix developer space(s)
- Select a Bluemix Starter Kit with Cloud and Edge services included and configured
- Configure local developer tools and shared team environments
- Configure build and stage delivery toolchains
- Define IoT solution architecture and components
- Develop micro-services containers
- Develop functions and packages
- Develop IoT Data Management resources
- Develop message routing and actions
- Distribute cloud components to the edge
- Distribute micro-services containers to the edge
- Distribute function packages to the edge
- Develop message routing and actions at the edge
- Distribute IoT Data Management resources to the edge
- Deploy and Operator in production
- Stage IoT solution (updates) to production
- Provision (updates) to devices and gateways at the edge
New designs are emerging in the Watson IoT Platform for IoT Edge.