Creativa - Fotolia
The fact that your thermostat powered by Nest can tweet to all of your followers through a nifty little service called "If This Then That" is a sign that anything is possible with the Internet of Things (IoT). Everything is being connected, which means everything needs to be on all the time. It's no longer acceptable not to have high-speed Wi-Fi in your house, and everything needs to be available 24/7. The Internet is now as necessary to the modern user's life as electricity, and it's all because every little device we want is connected to it. Developers' application strategies must reflect these changes.
That being said, the Internet is not perfect, and everything needs to be able to fail gracefully. For example, your SmartWatch shouldn't stop counting your steps simply because your phone lost its data connection. We're at a crossroads between everything happening on individual "things" and everything happening in the cloud. Development application strategies need to strike a balance between offline and online functionality.
The best thing you can do as an application developer is create robust APIs and intercommunication support. Building a new application to track your daily calories? Don't be surprised when someone wants to integrate their FitBit to see how many calories they burned off, and flash a light on their Blink(1) when they've walked enough to burn off their lunch.
One issue you'll notice when working with IoT is the massive amount of data produced. Never before have we had so much access to raw data. So many new devices have come to market that a new standard for machine-to-machine communications, called MQTT, has been created. If you're making a new device, or you want to integrate with IoT devices, MQTT is probably a good place to start. To handle high volumes of scalability, you may want to consider using MQTT with the new AWS Lambda. AWS Lambda automatically provisions resources for you, so you don't need to worry about scaling; just write the code.
However, if you're getting this much input, you're probably also going to need a good way to analyze it all. This is where technologies like MapReduce shine, because they're designed to handle processing of very large volumes of data. You're probably not going to be able to store all of this valuable data in a simple MySQL database if you really want the ability to scale. Posting your data to an intermediary database like Amazon Dynamo Database or Amazon Simple Storage Service, processing it with AWS Lambda, and then post-processing with MapReduce is a good way to go.
Obviously, you can't integrate with everything, but if you create APIs and integrate with popular IoT integration services like IFTTT, you'll be better able to take advantage of all the devices in a user's life. If your software doesn't interact with more than a user's computer, you're losing valuable interactions.
Google acquires Nest
Strategies and best practices for SaaS app integration
Tips for making a mobile app strategy
Dig Deeper on IoT APIs, Applications and Software
Related Q&A from Chris Moyer
Can an application have Python as a container, run SQL queries on an external Microsoft SQL database and publish the results on an Apache web server ... Continue Reading
The wait is over, as you can now trigger Lambda functions with SQS messages. Follow these steps to get up and running with this new capability. Continue Reading
Event-driven computing means no IaaS provisioning and no data center to run. Can I migrate all enterprise apps to be event-driven? Continue Reading
Have a question for an expert?
Please add a title for your question
Get answers from a TechTarget expert on whatever's puzzling you.