Sergey Nivens - Fotolia
Enterprise architects face many challenges when building applications that work within the Internet of Things and its devices. New PaaS database architectures can help ease some complexities and improve application agility.
The Internet of Things (IoT) is still in an early phase and business managers are learning the most valuable ways to orchestrate information from associated applications. As such, enterprise architects must create agility and continue to fine-tune applications as new use cases evolve. One strategy lies in running platform as a service (PaaS) database applications on top of Amazon Web Services (AWS).
AWS PaaS and IoT devices
Key AWS products that work with Internet of Things applications include Kinesis, RedShift and Lambda. Kinesis enables real-time processing of incoming data from one or more providers to make key decisions; this service can be useful for IoT analytics.
Redshift provides a scalable, next-generation data warehouse to meet the requirements of IoT data. As big data grows and accelerates, the capital expenditure on storing and maintaining this data will be insurmountable to enterprise infrastructure teams.
AWS Lambda makes it possible to run code in response to events and automatically manage the compute resources. This simplifies the process of running customer code without spinning up new virtual machines, which is important as the nature of IoT evolves.
But one of the biggest challenges with IoT is that no single database will satisfy every implementation. Enterprises will need multiple applications and databases to collect data, connect to analytic stores and then report back to end users. Therefore, traditional single-vendor architectures won't work. And AWS won't always be the solution.
Enterprise architects need to think differently about how to handle and store data, which types of architecture to build, and how to create scalability for enterprises to find the most value in the evolving Internet of Things market.
Dealing with large volumes of data
Applications tied to IoT devices create data in a volume that's orders of magnitude larger than data traditional applications create. When storage and networking is easy and available, developers can use a model that collects as much data as is practical and eliminates what is not needed later.
Another strategy is to aggressively filter data collections. Instead of trying to gather everything, an enterprise architect should focus more on data that's related to important changes. For example, a car manufacturer might only care about a lower resolution of data to capture baseline information, but the company would keep higher resolution data associated with a service fault. There is no point in collecting information from the 300 sensors in a car every five seconds.
Building the right architecture
Internet of Things applications require a high degree of parallelism and data-ingestion rates. If too much data hits the back end that powers an IoT application too quickly, the app will either buckle because it can't process data quickly enough or because it can't do so in a way that is conducive to scaling. Although traditional database technologies and apps can do this to some degree, Internet of Things applications require a more modern and scalable data architecture for long-term success.
Another big challenge with the Internet of Things is writing applications to that are multi-tenant and support a real-world model, which can be difficult. Essentially, the IoT is a collection of endpoints that live within communities of interest. For example, if a house has several devices from one manufacturer collecting data and pushing that data to a PaaS database application in the cloud, how does that PaaS database application distinguish data from different houses? How does it properly secure that data and process it separately? Enterprise architects need to think about how to implement the application in a way that keeps each end user separate.
Looking to in-memory capabilities
Device interaction, which requires an orchestration of device-driven transactions done through network applications operating on the data, should look seamless to end users. If thousands of end user connections per second pose a problem for a REST service, the traffic from millions of IoT devices might require enterprise architects to use alternatives like MQTT or CoAP, said Ian Skerrett, director of marketing for the Eclipse Foundation, an open source development project.
Fusing databases and applications into in-memory computing platforms such as SAP HANA or Oracle is a necessity for the IoT, said Dan Skatov, head of development at Starcounter, an in-memory database engine and application server provider. AWS Kinesis lacks the integrity crucial for performance, said Skatov. While it's possible to emit data from Kinesis to DynamoDB or Simple Storage Service, in-memory platforms keep the data there in storage. That makes Kinesis a promising OLAP or business intelligence platform for Internet of Things applications, but not an integrated in-memory app development tool with IoT bindings, he added.
Focusing on scale-in, not scale-out
IoT devices and applications often cannot be lightweight agents; they need to store and process some data on-board. Therefore, a portion of this intelligence must run outside the cloud and closer to the device. This architectural pattern is often called scale-in versus the traditional scale-out reference.
For example, Oracle provides embedded Java and embedded BerkeleyDB for local IoT devices, making the scale-in trend extremely important. Rather than growing out the cloud system, enterprise architects shrink data and logic to the closest possible distance. Supplying an IoT device with an efficient data processing application pushes that portion of the app on-premises.
A look at AWS' Internet of Things strategy
More on the future of IoT devices
Get to the heart of today's IoT market
IoT cloud options appeal to manufacturers
Dig Deeper on AWS tools for development