This article presents a hybrid architecture for video streaming and analytics. It runs latency-sensitive applications in Azure public MEC, and runs other services, such as control-plane, AI, and machine learning services, in an Azure region.
Note
The low-latency streaming that this architecture provides to web users applies only to those users that are routed to the Azure public MEC that does the video processing and hosts the web app. In general, this doesn't include users in other geographical areas.
Architecture
Download a Visio file of this architecture.
Workflow
Camera video is streamed to the video processing service endpoint, which runs in Azure public MEC. A telco 5G network carries the stream.
The video processing pipeline runs in an Azure Kubernetes Service (AKS) cluster and processes the video. Having the service in Azure public MEC reduces the network round-trip time and bandwidth costs compared to sending the video to the cloud for processing.
The AI inferencing service, which also runs in Azure public MEC, analyzes the video after it's processed by the processing pipeline, and provides insights.
After the inferencing pipeline analyzes the video, the web app takes the video stream from the publishing service and distributes it to web users. It can also distribute static files by using Azure Content Delivery Network profiles.
The video insights and metadata generated by the inferencing service are sent to the cloud where they're stored in Azure SQL Database. The video processing pipeline can store the raw video to an Azure Blob Storage account in the cloud for further processing.
The data captured in storage can be used for various purposes:
- Azure Machine Learning can run machine learning batch processes to improve its models.
- Microsoft Power BI and Azure Notification Hub can use the data to send notifications and to populate dashboards.
Machine Learning updates the AI inferencing models that run in Azure public MEC.
Components
There are two lists of components in this section, those that are in Azure public MEC, and those that are in the Azure region.
Azure public MEC
- Video processing in Azure public MEC: The video processing pipeline, AI inferencing service, and web app are microservices-based applications that run in the Azure Kubernetes Service (AKS) cluster. The AI inferencing service uses AI inferencing models to analyze the video streams and provide insights. The web app distributes the processed video to web users.
- Video processing pipeline: A typical video processing pipeline has services that capture video feeds from cameras, process them, and publish them. Deploying these services at the edge reduces latency and bandwidth use compared to sending the video to the cloud for processing.
- AI inferencing service: This service takes as input the processed video and provides insights about it. You can deploy Azure AI models or AI models from other sources that can help with such tasks as object and people detection and tracking, image classification, anomaly detection, and security alerts.
- Web app service: The web app service hosts the web page that supplies videos to users. The web app takes input from the publishing service of the video processing pipeline and transmits the live feed.
- Azure Content Delivery Network profiles: The web app can use Content Delivery Network profiles to transmit static images of the web app to help improve the responsiveness of the application.
Azure region
- Database service: Azure provides various database offerings, such as Azure SQL Database, Azure Database for MySQL, Azure Database for PostgreSQL, and Azure Cosmos DB. You can use any of these to store the output of the inferencing service.
- Azure Blob Storage: You can use blob storage to hold the video stream for future uses, such as video on demand and video analytics.
- Azure Machine Learning: In this architecture, Machine Learning takes input from the database to train machine learning models, and then updates the models that the inferencing service uses.
- Other services: You can use Azure Notification Hubs to alert users about anomalies detected in the video, Microsoft Power BI to populate dashboards and generate reports, and Azure Stream Analytics to gain insight into your video streams.
Alternatives
An alternative to deploying AKS is to deploy Azure IoT Edge in Azure public MEC and run Azure modules that provide similar functionality to the services already mentioned. You can use:
- Azure Video Analyzer to create the video processing pipeline.
- Azure Cognitive Services to analyze the video to provide insights.
- Azure Stream Analytics to deploy analytics services on the streamed video.
- Azure Functions to run actions on the analysis and the insights.
Scenario details
Hosting applications at the edge can make them more responsive and ease network bandwidth requirements. Azure public multi-access edge compute (Azure public MEC) is an edge computing solution that brings together a portfolio of Microsoft compute, networking, and application services that are managed from the cloud. You can use it to exploit the speed of 5G and unlock key low-latency and high-bandwidth scenarios.
However, Azure public MEC isn't meant to host your entire application stack at the edge. It's critical to understand which pieces of your application should run in Azure public MEC and which should run instead in an Azure region or on-premises.
Live streaming of events requires fast video processing to provide users a real-time and personalized view, so it's a good candidate for an edge solution.
Potential use cases
Organizations needing fast application response, even in high-demand situations, should consider using Azure public MEC to host latency-sensitive parts of the application.
In particular, video analytics based on computer vision models is used by various industries, including next-gen retail, smart cities, connected vehicles. Such applications are candidates for this architecture.
Considerations
These considerations implement the pillars of the Azure Well-Architected Framework, which is a set of guiding tenets that can be used to improve the quality of a workload. For more information, see Microsoft Azure Well-Architected Framework. The framework consists of five pillars of architectural excellence:
- Reliability
- Security
- Cost optimization
- Operational excellence
- Performance efficiency
Deployment
There's usually a pricing premium associated with deploying resources in the Azure public MEC. To keep costs down, it's important that you identify the latency-sensitive and critical components that can benefit from running in the Azure public MEC. All other components of the application should be deployed in the Azure region to reduce costs.
Scalability
Azure public MEC supports AKS and Azure Virtual Machine Scale Sets that you can use to scale your compute and latency-sensitive workloads to match the requirements of the applications.
Load balancing options
AKS internally supports multiple options to load balance incoming traffic. The NGINX Ingress Controller is shown in the architecture diagram, but there are other load balancers that you can use with AKS. For more information, see Use an internal load balancer with Azure Kubernetes Service (AKS).
Performance
Azure public MEC provides various virtual machine SKUs, including GPU-specific SKUs for compute-intensive video stream processing.
Storage options
Azure public MEC doesn’t support Azure Storage accounts, so the blob Storage can only reside in the Azure region.
Cost optimization
Cost optimization is about looking at ways to reduce unnecessary expenses and improve operational efficiencies. For more information, see Overview of the cost optimization pillar.
- See Azure pricing for pricing information.
- Use the Azure pricing calculator to estimate the cost of implementing this solution.
Contributors
This article is maintained by Microsoft. It was originally written by the following contributors.
Principal author:
- Adhip Gupta | Senior Program Manager
Next steps
- Azure public multi-access edge compute (MEC)
- Azure Kubernetes Service (AKS) documentation
- Azure Machine Learning documentation
- Azure CDN documentation