Open Platform Architecture Overview
Open Platform is consist of multiple Azure services and configurations/settings to :
- Enable Ready to go solution
- Provision devices using Device Provisioning Service
- Connect provisioned IoT Devices to IoT Hub
- Ingest telemetry and events from IoT devices
- Build a data pipeline necessary for basic telemetry and events processing
- Visualize IoT devices, telemetry, device events, and device management events in a web site
- Enable real time visualization using SignalR messaging
- Store and visualize IoT data using Time Series Insights
- Enable location based services using Azure Maps
- Build publish-subscribe model using Event Grid
- Secure the solution by setting security policies and access controls
- Exhibit examples of IoT Data visualization and basic device management
Technical Goals and Requirements
- Ready to go solution
 A solution is ready to accept data from devices right after deployment
- Minimize manual operations
 Automate deployment as much as possible to avoid manual operations
- Pre-configure as much as possible
 Pre-configure all settings to avoid post deployment configurations
IoT Application Structure Pattern
IoT solutions are built with various Azure services. Typically IoT solution architects make following decisions and perform tasks :
- Selection of Azure services to meet requirements
 Each service provides hosting Environment to perform specific tasks.
 Blue boxes below
- Logical connections between services
 This is often done by defining and/or configuring inputs and outputs (a.k.a. endpoints).
 Red dots and arrows below
- Settings and configurations on services
 Typically this is done through settings in each service.
 Gray boxes below.
- Selection of application hosting environment
 There are many options to run custom applications, and IoT architects need to select right services.
 Pink boxes below.

Open Platform Design Principle
Considering IoT application structure pattern explained above, Open Platform is designed with 3 classes of components.
- 
    Ready-to-Run 
 Every IoT solution requires a set of components/features to be functional. For example, all IoT solutions have devices connected, data to be ingested. Open Platform is ready to accept data from IoT devices.
- 
    Pre-Configured 
 Each IoT solution requires some level of customization, however, these IoT solutions share design patterns. Therefore, Open Platform pre-configures Azure services by creating endpoints and making logical connection. For example, all IoT solutions receive data from IoT devices, but each IoT solution processes data differently.
- 
    Custom Components 
 Components that cannot be pre-configured. However, Open Platform attempts to make it easy to add these components. For example, each IoT solution analyzes data based on their goals and requirements, type of data, and format of data.
Open Platform Design Overview
Open Platform designed is based on typical IoT use cases. They are divided into following categories
- IoT Device Management
 Device provisioning and device management
- IoT data plumbing
 Data ingress and egress
- Data Pipeline
 Typical data inflow and outflow from key Azure services and to data processing components
- Data Storage
 Storage for various data types
- UI+UX
 User interface, interaction, and visualization for end users

IoT Device Management
Typically IoT device management involves :
- Provisioning
- Updates and maintenance
- Device lifecycle management
Open Platform deploys and configures :
- Azure IoT Hub
- Device Provisioning Service (DPS)
- Event Grid
Open Platform provides examples on :
- A web site to interact with IoT Hub to perform device management tasks
- Route device management events from IoT Hub to the web site
More on IoT Device Management : Open Platform Developer Guide : IoT Device Management

Data Plumbing
Data received from devices must go through several steps to be consumable.
- Accept data into Cloud through IoT Hub
- Route data to appropriate destinations
- Make data available for data processing components
These tasks are often referred to as Data Ingestion.
Open Platform deploys and configures :
- Azure IoT Hub
- Event Hubs
- Event Grid
Open Platform provides examples on :
- Route device data, telemetry and events, for data processing
- Route device management events
More on Data Plumbing : Open Platform Developer Guide : Data Ingestion and Data Pipeline

Data Pipeline
Ingested data must go through processing to be meaningful. Raw data often does not provide more than a fact, but data processing can add value.
Examples of data processing are :
- Filtering
- Analyzing
- Taking actions
- Modifying or combining
Open Platform deploys and configures :
- Event Hubs
- Event Grid
- Azure Functions
- Time Series Insights
Open Platform provides examples on :
- Receiving and processing telemetry data in Azure Functions
More on Data Pipeline : Open Platform Developer Guide : Data Ingestion and Data Pipeline

Data Storage
Storage options must be carefully selected, as Azure storage services are often tuned for specific use cases. Typically, selection of storage type depends on frequency of access.
- Hot storage
 Data is frequently accessed on fast storage
- Warm storage
 Data is accessed less frequently than that on Hot Storage
- Cold storage
 Data is rarely accessed on the slow storage
Open Platform deploys and configures :
- Storage accounts for various Azure services
- Time Series Insights
- Endpoints in various services
Open Platform provides examples on :
- A web site that can visualize IoT telemetry data stored in Time Series Insights
More on Data Storage : Open Platform Developer Guide : Data Storage

UX + UI
User experience (UX) is often provided through User Interface (UI).  For example a web site to host a dashboard, mobile app to receive notification, or a desktop application to input data.
UI components are highly dependent on UX the solution wants to provide, use cases for the solution, and type of users.  Therefore, Open Platform exhibits some of UIs as examples through deploying and configuring a few Azure services.
Open Platform deploys and configures :
- App Service
- Web App
- Azure Functions
- Azure Maps
- Time Series Insights
- SignalR
Open Platform provides examples on :
- 
    A web site to : - Visualizes telemetry
- Receive real-time notification
- Display map
 
More on UX and UI : Open Platform Developer Guide : User Experience and User Interface
