Tuesday, September 5, 2017

Tech Tuesday: Internet of Things Enterprise Edition

Technology / Innovation

What is IoT?

The Internet of Things (IoT) is upon us whether you have noticed it or not – in fact, not only is Gartner predicting 8.4B (yes, that's B for Billion) devices to be in active use by the end of this year, but the rate of deployment is accelerating. By 2020, Gartner has estimated 20.4B connected devices. There's no doubt that those numbers are impressive, but what does it mean? 

The simple explanation is that the term IoT covers all electronic devices with embedded software that have some mix of sensors, actuators and network connectivity. So what exactly constitutes an IoT device, then? Here are a few examples:

  • Have a Nest product in your home? Their thermostats, smoke/CO alarms and cameras count as home automation IoT devices because their sensors monitor the conditions of your home and the thermostat can remotely control your furnace. 
  • Take public transportation to work? Many transit agencies have devices embedded in their vehicles that report their location, speed and bearing – these also count as IoT devices.
  • Rightpoint has built our own IoT system called Pourcast to make sure we always know what's in our kegs – and more importantly, monitor how much beer is left!

Planning for IoT Development

IoT presents an important challenge in the technical space because the massive amount of data collected and sent over the wire by deployed devices can quickly overwhelm an application that's not built for scale. Before you start thinking about what to do with all the data you plan on collecting from your devices, it's important to talk about scale and application performance.

How does IoT scaling differ from other types of applications? The short answer is that it doesn't differ much other than pure volume. A quick back-of-the-envelope calculation says that if I were to deploy 10,000 devices that all provide regular status updates, we might have to plan for something north of 1,000-2,000 requests per second. Since all of these requests require further I/O-heavy processing (unlike web browsing requests, which tend to be primarily reads), it's a good idea to take some steps to familiarize yourself with a few concepts that enable that kind of volume.

Building IoT Middleware at Scale

The following are a few examples of components that your hosted application—also known as middleware – might require to enable IoT scale: 

  • MQTT message broker (edge) – MQTT is a lightweight communication protocol meant for simple device communications in low-bandwidth scenarios. Using this protocol in conjunction with a message broker that supports queueing will provide you with a bi-directional, durable messaging capability. The primary benefit of the message broker is that it does not depend on your application's processing time; the devices publish and receive messages to and from your broker, and your application can subscribe to the broker and process messages as soon as it is able. Consider: Azure IoT Hub 
  • Micro-service architecture on horizontally-scalable infrastructure – The micro-service concept is somewhat broadly defined, but the purpose in this case is to achieve independent vertical (more resources) and horizontal (more instances) scale for application components that need it. The type of application is not as important as the ability to create multiple parallel consumers with appropriate resources during periods of peak load to manage message queue length. Long-running or I/O-intensive loads should be scaled out so that your system can handle the total load within defined parameters. Consider: Azure FunctionsAzure Container Instances 
  • Messaging service (internal) – In the case of an architecture with multiple deployable services, communication can be managed by either direct REST calls between services or a messaging service like MQTT (simple routing), AMQP (complex routing) or service bus. Messaging services allow individual application components to communicate without knowing anything about each other. When choosing your methodology, consider your requirements for real-time processing and message durability in the case of service instance outages. Consider: Azure Service Bus 

Bottom Line

The value of the Internet of Things is now being understood on the enterprise level; in 2017 alone, businesses will spend nearly $1T on IoT hardware. Even better news is that these days, deploying services that support IoT has become easier due to cloud providers' focus on delivering managed infrastructure that can handle just such workloads – I've mentioned a few examples above. With a few software architectural decisions, enterprises and small businesses alike can participate in this new wave of growing technology.

Rightpoint’s technologists are deeply invested in finding new ways to leverage emerging technologies to make our existing solutions better, and unlock new ways of approaching problems and new kinds of problems to solve. Learn more about how we can help build IoT solutions into your business.

Brandon Barnett is a Senior Solution Architect, Application Development, at Rightpoint. Follow Brandon on Twitter and LinkedIn.