Overview
This article explains different deployment models supported for deploying VIDIZMO application, infrastrucuture and software requirements, and deployment considerations that may fit your business needs.
Before you start deployment
To deploy VIDIZMO application, make sure you have all the artifacts you need for the deployment. Reach out VIDIZMO support ([email protected]) to get the latest build. The artifacts include:
- Vidizmo.zip – holds all the web application components including Web Application and all the services. Depending on the deployment architecture chosen, the deployment of these components will vary slightly
- Database.zip – holds all the database scripts needed to deploy databases from scratch as well as to update existing deployments
- License key – the latest version of the application requires a new License Key and hence it is a clever idea to get it before starting a fresh deployment or an update to the existing version
Infrastructure Requirements
You are going to need the following to complete initial configuration:
- Servers – VIDIZMO would need server systems to host web application, content processing and databases. The application components can be distributed across multiple server systems to achieve redundancy and high availability. Both physical systems and VMs are supported for the deployment of VIDIZMO application
- Domain setup – web application needs a domain (FQDN) to run. Make sure you have figured out a domain name to configure. VIDIZMO does supply multiple portals that can be either created on directory under the main domain or set on different domains of their own altogether. So based on the portal configurations intended you may need one more domain mapped to the IP (Internet Protocol) address of the Web Application server
- TLS Certificate – though not a requirement to run VIDIZMO application, some of the features do require having a TLS certificate deployed and portal using HTTPS. Most organizations now mandate using HTTPS anyways
- SMTP Details – application generates emails that are sent out to the end users at various steps. This requires setting up SMTP in the portal
- Content Storage – all the portals need physical content storage to store uploaded content. VIDIZMO supplies multiple options including the Local File System, Azure Blob storage, AWS (Amazon Web Services), Wowza Media server etc. Make sure to have one ready for each of the portals to be configured. For Azure and AWS, you can run Setup Wizard which takes care of provisioning of the storage accounts
- Broker Service – acts as a broker between microservices to handle message exchange. You would need supply configuration under application runtime config based on the type of broker service being used in your environment
Deployment Architecture
Deployment Architecture depicts the mapping of a Logical (Component) Architecture to a Physical Architecture (Servers/Containers/Virtual Machines). VIDIZMO supplies a lot of flexibility and options in terms of the Deployment Architecture needed that serves special business needs.
The choice of Deployment Architecture depends on a range of factors including Capacity that the application must support, Performance and scalability targets as well as guidelines related to High Availability, DR, RTO/RPO etc. set by IT team of the organization.
A few options that customers would like to go with based on their needs are discussed below:
Single Server Deployment
This deployment model entails deploying all the VIDIZMO components including Web Application, Services as well as the databases on a single server. This model is only good for testing application in dev environment and is not recommended for Production use.
Two-Tier Deployment (Application and Database)
This deployment requires having at least two servers, one running all the Application components and the other hosting and running the databases. This model is only good for small organizations who do not expect to have a lot of incoming content, especially video, since all the components including Workflow service exist on a single machine that can take up most of the CPU during processing.
Three-Tier Deployment (Application, Encoder, and Database)
This deployment model means having a dedicated Web Application server and a dedicated Encoder server for processing all the incoming content including video. This is a more preferred deployment model in most scenarios since encoding content does not affect the performance of web portal.
Note: This is the scenario being discussed in the rest of the article. However, the same set of steps can be applied to other deployment models as well.
Below is the illustration of this deployment model:
Highly Available Deployment (multiple Application, Encoder, and Database systems)
This deployment model is suited for large organizations who are looking to setup a Highly Available environment either because they cannot afford to lose service at all or have lot more users or content to service and process.
All the VIDIZMO components can be deployed on separate machines as well as scaled out if needed. This means that based on the needs, only select components can be scaled out.
For example, if enormous number of users are expected using the portal to access content but the expected content files uploaded are not that much, then only Web Application can be scaled out on multiple servers behind load balancer while single instance of rest of the services is deployed.
Similarly, if a lot of content is expected to be uploaded while the users are not that many, then only Workflow Service can be scaled out to allow processing of enormous number of content files.
Below is the illustration of this deployment model:
Deployment Considerations
A three-tier farm does require some planning before you can start the deployment process. This includes:
- Sizing of Machines – based on the load and target performance parameters the machines must be right sized. Generally, Web Application has more pressure on CPU, Network and Disk; Database is consuming Memory, CPU and Disk and Workflow Service is all about CPU and Disk.
- Networking – all the components that make up VIDIZMO in the end, talk to each other which requires the ability for them to communicate on IP/ports.
- Firewall – Enable Firewall port exceptions. Below Firewall port exceptions would need to be enabled on the network. Also, enable these firewall port exceptions on your windows firewall on web application server, content processing and database server systems.
Network Port Requirements
Table 1:
# | Description | Service | Port # | Protocol | Source | Destination | Direction | Action |
1 | Web | HTTP | 80 | TCP | Any | Application Server | Inbound | Allow |
2 | Web (Secure) | HTTPS | 443 | TCP | Any | Application Server | Inbound | Allow |
3 | Memcache | Memcache | 11211 | TCP | Any | Application Server | Inbound | Allow |
4 | Notifications | SMTP | 25 | Any | Application Server | Any | Outbound | Allow |
5 | License Activation | VLMS | 443 | TCP | Application Server | license.enterprisetube.com | Outbound | Allow |
6 | AMQP | Broker | 5671 | TCP | All VIDIZMO Servers | Broker Server | Inbound | Allow |
7 | AMQP | Broker | 5672 | TCP | All VIDIZMO Servers | Broker Server | Inbound | Allow |
Note: Azure Service Bus is a cloud-based broker service provided by Microsoft. It uses AMQP to transmit messages over the network. The table above lists the port requirements for Azure Service Bus.
Table 2:
# | Description | Service | Port # | Protocol | Source | Destination | Direction | Action |
1 | Rabbit MQ client-server connection | Rabbit MQ | 5672 | TCP | VIDIZMO app and encoder servers | Rabbit MQ server | Inbound | Allow |
2 | Rabbit MQ management | Rabbit MQ | 15672 | TCP | VIDIZMO app and encoder servers | Rabbit MQ server | Inbound | Allow |
Note: RabbitMQ is an on-premise broker service provided. The table above lists the port requirements for RabbitMQ.
Table 3:
# | Description | Service | Port # | Protocol | Source | Destination | Direction | Action |
1 | Kafka client-server connection | Kafka | 9092 - 9094 | TCP | VIDIZMO app and encoder servers | Kafka server | Inbound | Allow |
2 | Kafka zookeeper | Kafka | 2181 - 2188 | TCP | VIDIZMO app and encoder servers | Kafka server | Inbound | Allow |
4. Domain Name and IP Address – The web application server would need an IP address. This IP address is mapped to a DNS name that would need to be configured in the web application. To configure your VIDIZMO app with the required domain, please follow the article https://help.vidizmo.com/en/support/solutions/articles/17000083958-how-to-set-custom-domain-for-a-portal
5. Web Application Firewall – Web Application Firewalls are special firewalls that function at layer 7 of the OSI model. Most of these firewalls support policies or custom rule sets that are used to protect the servers and applications behind them. These policies protect against cross site scripting (XSS), SQL injection and other threats. If you choose to use a Web Application Firewall, you will need to make sure that these policies or rules are not blocking any required traffic into Vidizmo. This can typically be carried out by creating custom rules to whitelist traffic that is needed.
6. GPU vs CPU – processing of content such as video, audio etc. requires a lot of computation and can consume the processor completely. A way to free CPU cycles is to use GPU instead to do processing. To do this GPUs must be given on the machine running Workflow service; Not only does this keep CPU free to lot extent but also gives better performance because of the nature of computation needed for multimedia processing. VIDIZMO can use Nvidia Cuda cores to boost processing speed and improve overall performance.
Configuration Requirements
This section provides information about prerequisite software which would need to be installed on web application, content processing and database server systems.
Note: The Web Application and Content Processing Services can either be on the same Server or separate servers depending on requirement.
The list below outlines requirements for the deployment and configuration.
- Domain name(s) mapped to Web Application: Domain name entry(ies) mapped to IP address (multiple entries if you want to have separate domains for each portal).
- SSL/TLS Certificate for the Domain Name(s): SSL Certificate installed on the Web Server covering all the domains that will be used by VIDIZMO Web Application.
- SMTP configuration: To allow application send out emails during various steps. Email service is essentially needed to allow application send out emails. Emails are needed for various VIDIZMO operations such as new user registrations, video upload/transcode notifications, etc.
Installation of Prerequisites
Based on our deployment model (three-tier deployment) in this article, there are three servers for which below are the prerequisites described separately:
- VIDIZMO Database Server
- VIDIZMO Application Server
- VIDIZMO Encoding Server
Starting with each server, consider below prerequisites:
VIDIZMO Database Server
Install following prerequisites on the database server system:
- Download and install .NET Framework 4.8: https://go.microsoft.com/fwlink/?LinkId=2085155
- Download and install SQL server 2019: https://www.microsoft.com/en-us/sql-server/sql-server-downloads
- Download and install SQL server management studio: https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15
Reference - SQL server installation guide: https://docs.microsoft.com/en-us/sql/database-engine/install-windows/install-sql-server?view=sql-server-ver15
Note: VIDIZMO supports cloud services to host database. You can use cloud services such as Azure SQL, AWS RDS, etc.
The installation of SQL server must include following features and options:
- Database Engine Services
- Full-Text and Semantic Extractions for Search
- SQL Client Connectivity SDK
- Authentication: Mixed-Mode
Additional requirements:
Create a SQL database user account with ‘db_owner’ permissions on VIDIZMO databases, this account will be used to connect application to VIDIZMO databases. To create SQL database user account, please see: https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver15
Note: Consider SQL database backups to protect your VIDIZMO databases.
VIDIZMO Web Application Server
Download and install prerequisites software on VIDIZMO web application server system.
Note: You would need to Unblock your downloaded executable files (.exe) prior to start installation. Right click the downloaded file > click properties > and check the box that says “Unblock”. Click Apply and Ok to confirm changes and close the properties dialog box.
Please download and install below prerequisites:
- .NET Framework 4.8 - Download here: https://go.microsoft.com/fwlink/?LinkId=2085155
- ASP.NET Core Runtime 5.0.13 - Download here: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-aspnetcore-5.0.13-windows-hosting-bundle-installer
- URL Rewrite 2.1 for IIS - Download here: https://www.iis.net/downloads/microsoft/url-rewrite
Note: .NET Framework needs restart, please make sure to restart computer.
VIDIZMO Encoding Server (Content Processing)
Download and install the following software on VIDIZMO content processing server system.
Note: You would need to unblock your downloaded executable files (.exe) prior to start installation. Right click the downloaded file > click properties > and check the box that says “Unblock”. Click Apply and Ok to confirm changes and close the properties dialog box.
- .NET Framework 4.8 - Download here: https://go.microsoft.com/fwlink/?LinkId=2085155
- ASP.NET Core Runtime 5.0.13 - Download here: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-aspnetcore-5.0.13-windows-hosting-bundle-installer
- Python 3.9.5 - Download here: https://www.python.org/ftp/python/3.9.5/python-3.9.5-amd64.exe
Note: .NET Framework needs restart, please make sure to restart computer.
Note: Internet access (to https://www.python.org/*) is required to complete python configuration.