IoT on AWS
The Connected Future Is Serverless, But Still Complex
At its core, The Internet of Things is about intelligent connectivity. Connecting endpoint hardware, mobile devices, cloud-based data sources and services, and key enterprise systems enables functionality that by almost any definition is “smart”. Together, this set of interconnected hardware and software operates in synchronicity to achieve purposeful, coordinated outcomes, with powerful implications for organizations of any type.
But the connectivity that powers The Internet of Things isn’t limited to the “things” that you can readily see, or even see at all. Connectivity must extend down to the core infrastructure layer of the cloud… the layer where compute, network, and storage services are constantly operating to power everything further up the stack. Modern IoT solutions rely on the cloud for nearly all of their functionality at all layers of the stack, reinforcing the trend of serverless computing and applications.
When developing a smart, connected solution, an organization must take the totality of this IT ecosystem into account. But with so many components, it can be difficult to know where to start with design and development. It can also be challenging to consistently deliver solution performance over time as different elements of the IT ecosystem evolve.
Developing smart, connected solutions starts with defining what you want to achieve. Some considerations are:
- What business requirements am I trying to address with my IoT solution, and how do these map to technical requirements?
- How can I accelerate the development cycle time for my IoT solution, and what would faster time-to-market allow me to achieve?
- How could a 100% cloud-based, serverless solution architecture allow me to achieve competitive advantage that would be difficult or impossible to achieve otherwise?
With so many options and parameters to consider, deciding what to build and knowing how it should work can be complex.
Some considerations are:
- What core features and functionality do I need to address my targeted use case, and how can I create a solution with differentiated capabilities while not “overbuilding”?
- How can the IoT-specific AWS products (IoT Platform, Greengrass, IoT Button) deliver essential and differentiated features and functionality for my solution?
- Which AWS products beyond those that are IoT-specific can or should provide essential functionality for my solution?
Your solution depends on a diverse and evolving ecosystem of elements to function properly and continue functioning. Some considerations are:
- How do I architect sophisticated, customized solutions across the cloud, mobile devices, and endpoint devices, when they all rely on different software and standards?
- How do I orchestrate the functionality to power my IoT solution across multiple AWS products, especially when those products are always evolving?
- Even if I have the knowledge, time, and resources to write code that orchestrates the functionality I need across this diverse IT ecosystem, where do I even put my code, and how do I keep it updated?
A Brief History of IoT on AWS
Enabling A Vision Of Smart, Connected Things
Once upon a time...
It all started with a small and innovative company called 2lemetry. The team understood the vast potential of the Internet of Things, and saw an opportunity to drive engineering and operational efficiency for IoT solutions by creating a cloud-based platform, right in the middle of the IoT stack. The platform would enable companies to rapidly consume and act on device data independent of scale and complexity.
2lemetry also realized that forward-thinking companies were accelerating their migration to the cloud for all enterprise apps, and that increasingly, AWS was the cloud of choice. AWS shared 2lemetry’s vision of translating raw device data into insightful business intelligence, but AWS had not yet developed products that addressed IoT functionality explicitly. AWS and 2lemetry decided to bridge this gap. In early 2015, AWS acquired 2lemetry, and 2lemetry’s cloud technologies became the basis for what we now know as AWS IoT.
Fast forward to now...
Whatever your enterprise information technology needs happen to be, AWS offers a product that either enables the functionality or makes it better. AWS offers over 90 discrete products, and the list keeps growing larger, even as the products themselves evolve to deliver even more capabilities and higher performance.
AWS products cover the full spectrum of infrastructure-layer cloud services, from compute, to network, to storage. Within the product lineup, 3 offer IoT-specific functionality. Nearly 50 additional products deliver functionality that is relevant to IoT solutions. For any IoT solution running on AWS, there may be 5, 10, or even more products working in tandem.
What does this mean for businesses? It means that AWS has all the right parts in place to enable market-leading functionality for a multitude of possible IoT solutions.
Highly capable, but often complex
Today, AWS functionality can address just about anything that a business could contemplate, and even things that many people may not have yet contemplated. The products are available as convenient cloud services that can be utilized as needed, at seemingly infinite scale, all in a high-performance, secure environment.
But architecting and operating IoT solutions on AWS can be confusing and frustrating. Doing so requires expert knowledge of the various AWS products and how they interoperate to deliver the intended functionality, reliability, scalability, and extensibility. Market-facing solutions must interface with multiple underlying infrastructure-layer components, instruct these components to interact with each other in prescribed ways, and ensure that data flows throughout the stack at the right moment in order to enable the intended solution functionality. As AWS updates its products and introduces new products, the owner of the IoT solution must understand how these changes impact solution performance and be able to make adjustments accordingly. It might also make sense to consider ways to integrate new AWS products into the solution.
This is a lot to manage for a single IoT solution. For an organization managing multiple solutions, it could quickly prove to be overwhelming.
What are the business implications of this complexity? Slow time-to-market for new solutions and upgrades, high engineering and maintenance costs, and high opportunity costs in terms of other activities that product development, engineering, and IT teams could have been performing.
Challenge: Enabling and Orchestrating Key Functionality
It Is All There, But How Does One Make It Work?
Market-facing IoT Solutions
You know what functionality you need. You know that AWS can deliver it. How do you bridge your solution architecture to the underlying AWS products to make your solution perform as you intend? Some common questions to consider:
- How do I assemble a market-facing solution that draws on the powerful capabilities of AWS infrastructure-layer products?
- What can I do to simplify my user experience while I am developing, testing, fielding, and managing my IoT solution?
- How can I integrate my other enterprise systems with the solution stack to enable front-end and back-end functionality?
- How do I manage the entire lifecycle of my IoT solution across a set of disparate AWS products, especially as they evolve over time?
- What should I do to incorporate new AWS products into my market-facing solution?
- Where do I even put the code that I write?
AWS Has Everything You Need for IoT... almost
Dozens Of Cloud Products to Power Your Solution, But How to Orchestrate Them?
- At the very least, you probably need AWS IoT Platform. Maybe you need Greengrass and perhaps you could just solve your problem with an IoT Button solution.
- You might also need DynamoDB, Amazon Kinesis, AWS Lambda, Amazon Machine Learning, Amazon Redshift, and Amazon S3…
- And of course, you might decide to architect your solution using even more AWS products… you have nearly 90 from which to choose!
- What is missing? A way to enable and orchestrate it all. Not just when you launch, but over the entire lifecycle of the solution.
Are you engineering your solution, or engineering the cloud architecture?