Multi-server architecture
Zoho Analytics now supports a distributed architecture to handle highly intensive data processing needs at enterprise scale. This configuration allows for load distribution across several servers, thereby boosting performance, reliability, and scalability.
Main objective
Customers with moderate data processing needs can easily handle their analytics workloads using a single, monolithic Zoho Analytics deployment. However, for larger deployments with greater processing demands, horizontal scaling and distributed processing are essential.
To address the demand of large-scale applications, the self-hosted/on-premises version of Zoho Analytics has been enhanced with a distributed architecture model to improve scalability. This setup enables users to scale the application horizontally and add additional servers (processing power) as their processing needs grow.
The architecture
The following are the key components of the deployment architecture:
App Server
The App Server is the core component of Zoho Analytics, acting as the application's frontend and the primary interface for end users. All features and functionalities of Zoho Analytics are accessed through the App Server. In a distributed architecture, multiple instances of the App Server collaborate to manage processing and user access, with one server designated as the primary server.
CStore nodes
CStore is Zoho's proprietary columnar database, designed in-house to manage large volumes of data and deliver it to users on-demand. Columnar databases like CStore are optimized for swift read operations, making them well-suited for analytics applications. It already powers the cloud versions of Zoho Analytics, providing infinite scalability and swift read performance.
We are now extending this technology to self-hosted versions, providing scalability and performance comparable to SaaS applications. In a distributed deployment of Zoho Analytics, multiple CStore nodes are used to balance the load of read operations efficiently.
The CStore nodes continuously synchronize data from the primary database. Data retrieval and display requests from users are directed to the CStore nodes, while write-back operations are managed by the primary database. Essentially, the CStore nodes manage all read operations, while the primary database handles write operations.
Database
Zoho Analytics relies on PostgreSQL as its main backend database for storing all imported and processed data. This database is bundled with the App Server, and both are hosted on the same server.
Load balancer
When using multiple App Servers, Zoho Analytics requires a third-party load balancer, such as Nginx, to effectively manage and distribute traffic across the servers. This load balancer is not included with the application package and must be acquired and configured independently.
Click here to learn more about deploying the multi-server architecture.
How this works?
The multi-server deployment enables the use of multiple App Servers and CStore nodes to manage large volumes of data and a high number of users.
When users access views in Zoho Analytics, their requests are first routed through a load balancer, which assigns an App Server based on the current load distribution. The designated App Server then retrieves the relevant data from the CStore node cluster. Once the data is received, the views are displayed accordingly.
Horizontal Scaling
As user demand and data processing needs grow, organizations can scale Zoho Analytics horizontally by adding more App Servers and CStore nodes. Typically, an increase in the number of regular users will necessitate additional App Servers, while a higher demand for data processing will require more CStore nodes. The decision on which components to scale depends on various factors, and our team of experts is available to provide tailored recommendations. For assistance, please contact us at onprem-support@zohoanalytics.com.
Before considering horizontal scaling, please refer to the section on performance fine-tuning to optimize your current configuration and maximize the application's performance.
Capacity expansion guidelines
It is crucial to scale horizontally as the application load increases to ensure optimal performance. Postponing capacity upgrades can result in sluggish user experiences, while adding capacity too early may waste resources. Key factors such as data model complexity, data volume, and the number of active users should be considered when determining additional capacity. The table below provides an indicative guide for the load a single server can handle and the capacity added by each additional application server. However, the actual load each App Server can handle might vary slightly based on the conditions stated earlier in this section.
Primary App Server | With 1 Additional App Server | With 2 Additional App Servers | |
Users | 50 | 100 | 200 |
Viewers and Concurrent Guests | 1000 (w/o load balancer) | 5000 (with load balancer) | 10000 (with load balancer) |
Rows of data | Up to 499 Million | Up to 1 Billion | Up to 1.5 Billion |
Volume of data | Up to 499GB | Up to 1TB | Up to 1.5 TB |
* Above table includes indicative figures. Actual load-bearing capacity for each App Server might vary slightly in each environment.
Please contact us at onprem-support@zohoanalytics.com to determine the accurate capacity based on your needs.
High availability
Zoho Analytics supports deployment in an active-passive high availability (HA) mode, which requires a secondary deployment of both the primary App Server and the primary database. This app+database combo operates in passive mode, continuously monitoring the availability of the primary components while replicating data and configurations. If the primary components go offline, the high availability configuration goes live and takes over to ensure uninterrupted service for users.