In my previous blog, we discussed the concept of IoT. Now let’s look at a current real-life example of an “Internet of Things” application so we can think about how such systems will work in the future. Most IoT examples are along the lines of the “smart coffee cup” example in the previous blog, or intelligent appliances. While these are certainly valid examples, they are also very narrowly focused on “Things”, which is only one part of IoT. The real game-changing aspect of IoT is not so much the “Things”, as it is the systems that reason about things and that cause those things to act. Over time, these full-featured IoT applications will impact the way we live and work just as profoundly as “Web 2.0” applications like Facebook, Twitter and other social media apps do today. And as we’ll see in our example, this is already starting to happen.
Uber is a mobile application that connects people with taxis and cars for hire. Uber may not be an obvious candidate to be considered an “Internet of Things” application, but I would argue that it is a very good example of what IoT really is, and where it is headed. It also has the advantage of being a current real-world, functioning, revenue-generating system–unlike the rather silly (though hopefully evocative) “smart coffee cup” example above.
By the way, I’m intentionally picking an example of which I personally have no inside or proprietary knowledge; that way, I don’t disclose anybody’s secrets. Note this also means that I am speculating on some of the implementation details, and my selected application—Uber (uber.com)—may implement something differently than the way I describe it. Nonetheless, my guess is I’m not too far off.
If you haven’t used Uber before, here’s how it works. Download the app on your mobile device and register with Uber using your credit card.
That’s all there is to it. I can summon a car to take me home with a couple of key presses, and without taking money or a credit card out of my pocket. There are various wrinkles and refinements. For example, you can choose the type of car you want (e.g. taxi, limo, SUV, or personal car) which will be reflected in the price you pay; you can rate the driver and car; you can split fares; and various other passenger conveniences. There are also numerous features for the driver, including the ability to rate passengers, and the best places to go to look for new passengers (based on current demand plus movie and show times, seasonal patterns, and so on). Every driver and passenger I’ve talked with agrees this is a very cool system. It’s also a fairly lucrative one. Uber earns its money by taking a 20% cut of each fare, which yielded an estimated $220M in revenues in 2013, on estimated total fares collected of $1.1B.
Now cool as this may be, why is it a good example of IoT? First, note the central role played by the locations of both the car and the passenger, and the near real-time nature of the information that is exchanged. The GPS (global positioning system) chip as well as other location-determining systems that run on each person’s smartphone are what provides the location information. While these location sensors and services are contained in our mobile devices, they are typical of any sensor in any “thing” connected to the Internet of Things. In the Uber case, the “thing” is actually the sensors contained in our and the driver’s smart mobile devices, not literally the passenger, driver or the car. The “Internet” piece is the connection of each sensor, through the mobile device, to Uber’s “brain” and “memory”, which is hosted in the cloud.
I think it’s quite revealing that few people I’ve talked with actually think of Uber as an IoT application even though—as we shall see—it’s a great example. Other than perhaps the car, I didn’t really talk much about “Things” when I described Uber, and I think most users would do the same. Instead we talk primarily of the people involved; that is, passengers and drivers. This is partly because our mobile devices and the sensors they contain have become shorthand for ourselves. We also think of our human needs for transportation and, perhaps, for comfort; that is clearly more important to us than the car itself, as a thing. And unless we’re technically oriented, we never even give a thought to the sensors contained inside of our smart phones.
Our tendency to focus on people and human needs will continue, even in the Internet of Things era. If we ever have that sensor-enabled coffee cup I described in part 1 of this series, I bet we will think “I need more coffee” rather than “my cup says it’s time to refill it”. Our needs and ourselves will remain at the center, no matter how smart our devices become—at least for a very long time.
Continuing our analysis of Uber, once the app is launched, the location sensors associated with both the passenger’s and the driver’s mobile devices (the actual “things” being monitored) are regularly broadcasting their location to a “back end” system that is hosted by Uber on the “Internet Cloud”. While it seems to us like we are directly summoning a car closest to us, that’s not exactly what happens. What happens instead is that our mobile device sends a message to Uber’s Cloud service, saying that person “x” (you, as identified by your physical phone) at such-and-such a geographic location (determined by the sensor inside your phone) wants a car sent to that location, or to another location nearby.
When it receives such a request, Uber’s Cloud service then uses near-real time analytics to determine which car is the best fit to service the request. I am not privy to Uber’s specific algorithms—and could not talk about them even if I was, as these are core to Uber’s business proposition—but presumably they look for geographic proximity / time to arrive, loyalty and lifetime value of that particular driver to Uber, lifetime revenue of the driver (to break ties if two people request service), customer ratings, how lucrative the fare is likely to be, and other factors such as how recently a given driver has been given a fare, the expected duration of the trip, and maybe the driver’s work schedule. Some of this information will be computed on-the-fly, given the most recent information available—such as the current location of each car. Other information, such as the average fare paid by pick-ups in a given location at a particular time, or the total lifetime value of a particular driver to Uber, are likely to be pre-computed on a scheduled basis, in batch mode.
The net result is that a car is assigned to the passenger very quickly–probably within about a tenth of a second after the system receives your request. Because complex calculations like “lifetime value” are pre-computed, sophisticated metrics can be used to improve the value of business decisions even while making them very quickly. In theory, this allows much better split-second decision making than all but the very best human dispatcher could make. Finally, the result of a decision is “actuated”; that is, put into effect. In the case of Uber, this actuation takes the form of sending a notification to a driver’s phone asking them to pick up a certain passenger at a certain location. In addition to this instant response, sometimes a complex process may be initiated or taken to the next step as well—for example, perhaps Uber rewards drivers for reaching a certain number of miles, and a particular journey may trigger the process to produce and mail the driver a trophy or gift card.
Figure 1: Basic IoT System Architecture—assigning meaning to data
Other IoT applications tend to follow a similar architecture pattern to the one we’ve just outlined for Uber:
While well suited for the Internet of Things, a similar architecture pattern can be useful in many situations. Whenever quick “contextualized” action is needed in response to a stream of incoming data and requests this approach can be useful. We’ve found elements of this “IoT” architecture very well suited to situations as apparently diverse as mobile advertising and information security, for example.
The key to IoT is the ability to put current observations and requests in a “context”, and then respond to them intelligently. When these observations come from sensors and the response is delivered through mechanical or electronic actuators, the “Internet of Things” label most obviously applies. But the heart of any IoT system is its ability to respond intelligently to events by taking autonomous action. In the Uber case, the heart of their business is their system’s ability to intelligently assign drivers to passengers in a way that encourages the loyalty of both–it’s not just the sensors and actuators in the phones, important as those are. When we talk about the Internet of Things, it’s important to remember that it’s not just the things but context-driven intelligence—or analytics—that will determine the success of the next generation of Internet applications.
The next post in this series describes how an Internet of Things application can quickly make context-aware decisions.
Dr. Jim Walsh is CTO at GlobalLogic, where he leads the company’s innovation efforts. With a Ph.D. in Physics and over 30 years of experience in the IT sector, Dr. Walsh is a recognized expert in cutting-edge technologies such as cloud and IoT.