Overview of VIDIZMO Software Architecture  

VIDIZMO V9 architecture ensures adaptability across diverse deployment environments, on-premises, Microsoft Azure, AWS, and private cloud infrastructures. This version, V9, has been meticulously developed from the ground up, focusing on flexibility, high performance, and seamless integration. 

This comprehensive guide sheds light on the software architecture underlying the VIDIZMO V9 application. It delves into the various services, components, and their interconnections, catering to a technical audience seeking a deep understanding of the architecture. The aim is to give readers insights into the considerations involved in installing and deploying the VIDIZMO platform. 

VIDIZMO Architectural Principles 

VIDIZMO's architectural foundation is grounded in fundamental principles: Event-driven architecture, Loosely Coupled APIs, Service-oriented architecture, and Open Architecture. The design strategically adheres to cutting-edge architectural standards, embracing open architecture, modular design, and scalable infrastructure.  

This approach ensures the software's high flexibility, interoperability, and scalability, contributing significantly to its overall effectiveness and reliability. These principles offer numerous benefits, including seamless integration with existing systems, maintaining data consistency, adapting effortlessly to emerging technologies, and achieving unparalleled performance. 

Event-Driven Architecture  

Event-Driven architecture is a design framework where events are the catalysts for data flow within a system. In Event-Driven Architecture, there are event producers responsible for generating a continuous stream of events and event consumers that actively listen for these events. The delivery of events occurs in near real time, allowing immediate responses from consumers as events unfold. 


In the context of VIDIZMO's architecture, the adoption of an Event-Driven approach holds paramount importance. This design choice enhances the system's flexibility and openness. VIDIZMO, with its complex event processing requirements, benefits from the smooth integration and communication facilitated by Event-Driven Architecture.


The architecture ensures that multiple subsystems efficiently process the same events in real-time, minimizing time lag. This real-time processing capability is crucial for VIDIZMO, making Event-Driven Architecture a significant contributor to its successful execution. The inherent scalability and distribution of the architecture further enhance its capabilities. 

Loosely Coupled APIs  

VIDIZMO adopts a loosely coupled architecture for APIs. Loosely Coupled APIs are an architectural approach in which components or modules within the VIDIZMO architecture interact with one another using APIs without strong dependencies. VIDIZMO's APIs adhere to industry-standard protocols and practices like RESTful API design principles to enable seamless communication with external systems. 

In VIDIZMO, various modules like content ingestion and user authentication may communicate through APIs. If one module is updated or modified, the loosely coupled nature of the APIs ensures that other modules are not directly impacted, making the system more resilient to changes. This architectural approach prevents adverse effects on other components. APIs operate independently for easy maintenance, flexibility, and scalability.

Open Architecture   

Another approach that VIDIZMO follows is an open architecture, which implies that the system is designed to be extensible and adaptable and emphasizes the use of open standards, interoperability, and modularity. VIDIZMO complies with the principles of Open Architecture through various functionalities. It supports multiple encoding providers, encourages the integration of third-party tools, and supports multiple storage providers. An open architecture facilitates customization, allowing users to choose their preferred solution and seamlessly integrate it into the system. 

Service Oriented Architecture

VIDIZMO is designed with a Service-Oriented Architecture (SOA) approach. In this approach, services function independently and provide functionality or data exchanges to their consumers. The consumer requests information and sends input data to the service. Upon receiving the data, the service processes it, executes the required task, and subsequently provides a response.

The modular nature of SOA allows for more accessible adaptation to evolving business requirements. New services can be readily integrated or existing ones modified without impacting the entire system. SOA benefits VIDIZMO by increasing scalability through the independent scaling of individual services to handle fluctuating demands efficiently.  

VIDIZMO's SOA implementation is achieved through a microservices architecture comprised of smaller, independent services with clear, defined purposes, such as user management, content processing, or notification delivery. The services communicate through a message broker, acting as an intermediary. This decoupled approach eliminates tight dependencies between services, fostering greater flexibility and resilience. This allows VIDIZMO to be a flexible content management platform that can adjust to changing business requirements and user expectations.

Architecture Components and Services 

Prior to deploying and configuring VIDIZMO, understanding its high-level system and component design is crucial. This section provides essential details about the VIDIZMO software and its components, which are required for VIDIZMO to operate.  

The following is an overview of the VIDIZMO software architecture (diagram).

 
VIDIZMO Web Application 

The VIDIZMO platform is designed as a Single Page Application (SPA), serving as the user interface for end users to execute diverse operations such as content uploading, user management, and portal settings configuration. This application uses Web APIs for interactions, facilitating seamless user experiences within the browser. During the bootstrap process, the application dynamically downloads and incorporates various compact packages of JavaScript, HTML, and CSS, thereby furnishing users with the necessary functionalities directly within their web browsers. The server hosts VIDIZMO's web application, necessitating Internet Information Services (IIS) version 10/11 or later and the Microsoft .NET 6.0.12 framework. 

Web API 

The Web API exposes various API endpoints utilized by the Single Page Application (SPA) or other interface applications. Within the Web API, numerous middleware components are in place, processing each request before it reaches the intended API endpoint. These middleware functionalities scrutinize the API request for authentication, authorization, tenant context, etc., playing a crucial role in ensuring the seamless execution of operations. Additionally, a dedicated middleware for exception handling is incorporated to capture and log any errors that may arise during API calls. 

The Web API is typically deployed on Internet Information Services (IIS), and its proper functioning requires the installation of .NET Framework 6 along with the .NET Core Hosting Bundle. The .NET Core Hosting Bundle includes the installation of an IIS Module known as the 'ASP .NET Core Module,' facilitating the compatibility of ASP.NET 6 applications with IIS. 

Individual API Usage  

VIDIZMO API can also be used individually, allowing developers and administrators to selectively leverage specific functionalities without being tightly bound to the entire system. This modular and loosely coupled API design promotes flexibility, scalability, and ease of integration with other applications or services.  

Broker Services  

Within VIDIZMO, all components of the application use a publish/subscribe pattern for messaging, utilizing a dedicated broker service to manage message exchange between microservices. Each event generated by an API endpoint is transmitted to the broker, where one or more subscribers wait to process the incoming messages. The broker serves as the core message-routing component in the system, facilitating the transfer of messages between client and server. These messages encompass requests for services, responses to those requests, and notifications about exceptions. 

Requests are structured as calls to the broker's API, with the broker also managing error handling in response to reported exceptions. VIDIZMO supports multiple options for the broker service, providing flexibility in handling real-time data feeds and enabling seamless communication between microservices. The available options include.  

  • Azure Service Bus  

Azure Service Bus is a cloud-based broker service provided by Microsoft, utilizing AMQP to transmit messages. Azure Service Bus acts as a messenger that works smartly as a helpful middleman that makes sure that different programs and services in your system communicate together smoothly in a reliable and organized way. 

  • Kafka 

Apache Kafka, often referred to as a message broker service, is a distributed event streaming platform designed to handle real-time data feeds. 

  • DAPR 

DAPR is not a traditional broker service but offers features for messaging and communication between microservices. 

  • RabbitMQ 

RabbitMQ, an on-premises broker service, is an option for message handling within VIDIZMO.   

To know more about their ports, refer to “Prerequisites for VIDIZMO Application.” 

VIDIZMO Services  

In the VIDIZMO application, there are different services working, which are as follows: 

Event Logger Service 

The Event Logger Service records and stores all events originating from user actions or system activities. These logged events serve as the data for the Audit Log and Chain of Custody features within the application. The data captured by the Event Logger Service encompasses the user's information, details of actions executed, and the associated data linked to each specific action. 

Workflow Service 

The Workflow Service functions as the workflow engine within VIDIZMO, driving numerous long-running operations such as transcoding, artificial intelligence processing, data extraction, redaction, video processing, content search, and cognitive services.  

A workflow is designed for handling long-running tasks, such as redaction. For instance, when making an API call to redact data, the redaction process cannot be completed within a single API call due to its time-consuming nature. In this scenario, the API triggers an event to signal the start of the redaction process and immediately provides a response to the user. The workflow service then receives this event and initiates the long-running task. 

Redaction, being a comprehensive process, takes time to execute. The workflow application not only triggers the process but also displays the progress of its execution. This allows users to track the status of the redaction task as it progresses. 

Notification Service 

The notification service is like a messenger that deals with sending emails and communicating with VIDIZMO Webhook out of the system. Webhooks enable you to subscribe to the various events taking place within the VIDIZMO portal and receive notifications based on those events within your application. As soon as a subscribed event occurs within the VIDIZMO Portal, it will trigger a notification payload request and send it to the specified endpoint URL.  

Telemetry Service 

VIDIZMO's telemetry service automates the recording and transmission of usage data within an account to the database, facilitating the generation of consumption reports. This comprehensive process encompasses metering services, data categorization, associated metrics within each category, and the identification of the corresponding source for each record. 

Tracking Service 

In VIDIZMO's architecture, the event-driven tracking service subscribes to the broker service. This tracking service monitors users' actions during video or audio playback to measure their engagement. It records data on how frequently media is played, the duration of user engagement, and instances of pausing or resuming. These real-time insights are presented as Events in VIDIZMO's Media Analytics or Quality of Experience (QoE) reporting interface, providing a comprehensive overview of user activity on media content. 

Scheduler Service 

The Scheduler Service is responsible for handling time-sensitive tasks, such as updating analytics, reports dashboards, and managing content purge cycles. One critical activity involves running every fifteen minutes to refresh and fetch the latest results for these processes. 

Caching Service 

The Caching Service enhances performance by providing a memory caching store for data retrieval. For fetching data, almost every API call checks the Caching Service initially to see if the data is already saved in the memory. If the data is not found in the Caching Service, the call is then directed to the database. In these cases, the data retrieved is saved back in the Caching Service for future use. 

VIDIZMO Database 

The VIDIZMO application relies on SQL databases, such as SQL Server 2022 Standard or Enterprise Editions, to store extensive metadata related to content, users, groups, and more. While the content itself is stored as files in storage, the metadata housed in databases enables the application to index, search, and organize the data for reporting and display purposes. The back-end operations of the VIDIZMO application are supported by two distinct databases: the main application database and the notifications database. 

Content Storage 

VIDIZMO provides support for various types of content storage, such as local disk file storage, Azure Blob Storage, AWS S3, and WOWZA Media Server. This diverse range of storage options highlights the system's flexibility, allowing users to choose the most suitable storage solution based on their specific requirements. Each storage type has prerequisites, like ensuring user permissions for local file systems or having the necessary AWS Access Key for AWS storage. This adaptability in storage options enhances VIDIZMO's versatility and accommodates different user needs. 

Elastic Search 

Elasticsearch, a distributed and scalable search and analytics engine, enables users to store, search, and analyze large volumes of data quickly and in near real-time. This choice of using Elastic Search within the VIDIZMO application empowers users to tailor their selection based on scalability, performance, and search needs. Elasticsearch is an optional component of the system. However, it becomes more significant when handling extensive amounts of content.  

In our implementation of Elasticsearch, we utilize a distributed architecture, allowing it to scale horizontally across multiple servers. This design enhances search and retrieval speeds, ensures high availability, and provides fault tolerance. Elasticsearch uses shard and replication mechanisms to distribute data across nodes, guaranteeing continuous data availability and accessibility, even in the event of failures or network issues. 

Communication Protocols  

In VIDIZMO, various communication protocols facilitate seamless interaction between different components, ensuring efficient data exchange and system functionality. These protocols make sure that the data (information) travels quickly from one part to another, so everything runs smoothly; these protocols ensure efficient communication between the various parts of VIDIZMO. 

  • HTTP/HTTPS 

VIDIZMO relies on HTTP/HTTPS for communication between web browsers and application servers. HTTPS encrypts data during transmission, enhancing overall security. 

  • AMQP 

VIDIZMO uses AMQP protocol to facilitate communication between the Application and Encoder servers. This protocol is used by the broker service, managing the exchange of messages between microservices and ensuring efficient and reliable communication within the system. 

  • RTSP 

VIDIZMO may leverage RTSP for real-time streaming applications, ensuring smooth and low-latency video playback. 

  • SMTP 

In VIDIZMO, the notification service leverages SMTP to send email notifications. When certain events or triggers occur within the VIDIZMO system (such as user activities or system alerts), the notification service can generate email messages. These messages are then sent using the SMTP protocol to the designated recipients. 

Component Installation  

The installation and configuration of VIDIZMO encompass multiple components, and the procedure may differ based on the version and deployment scenario. Before proceeding with the installation, it is essential to consult our "Prerequisites for VIDIZMO Application" article. This resource provides guidance on necessary prerequisites, covering hardware specifications, compatibility with operating systems, and other software dependencies.