Under the Hood: Scalable Multi-tenant Cloud
Progress Rollbase consists of a number of multi-tenant components that can be spread across multiple physical or virtual servers for scaling purposes or consolidated on the same server for smaller loads. The following table briefly describes each type of Progress Rollbase component that makes up a full Progress Rollbase instance. Each component can be isolated on its own server or combined with any other group of components on a shared server:
Progress Rollbase Components
||System monitoring, tenant provisioning, subscriber management, published application management, etc.
||1-N production servers; tenants are dynamically loaded onto the production server with the least load.
||1-N database servers; MySQL, OpenEdge RDBMS, Oracle or SQL Server; each tenant's data resides in a shared database.
||Manages all scheduled workflow event processes and automation.
||Manages all user authentication and routing of requests to the appropriate production server.
||A Lucene-based search engine that manages all indexing and search activity.
||Manages all document and file storage either directly or via Amazon S3.
||Manages all SOAP API requests.
||Manages all REST API requests.
||Manages all RSS feeds.
How It Works
While all of these components can, and by default do, run on the same physical or virtual server, a unique advantage of Progress Rollbase is that any one of them can be moved to its own dedicated physical or virtual server for scalability purposes with a minimum amount of configuration changes and minimal interruption to the Rollbase runtime. All Progress Rollbase components communicate with each other via streamlined XML messaging. The Master component monitors the current status of all other components and can raise alerts when issues arise.
Add Multi-tenant App Servers as Needed
Progress Rollbase supports an arbitrary number of production components (i.e. app servers) allowing customers to scale to support as many concurrent users and tenants (i.e. customers) as needed. Tenants are not assigned to any particular production component. Rather, Progress Rollbase dynamically loads tenants onto the available production component with the lowest current resource utilization and load balances users across all available production components. Tenants are dynamically unloaded from production components after a configurable period of inactivity to minimize resource consumption. The dynamic tenant loading process consistently clocks in at sub-second times on the order of 700ms.
Add Multi-tenant Databases as Needed
Progress Rollbase also supports multiple databases allowing the infrastructure to scale as needed. Each tenant's data resides in a single shared or dedicated database and can be easily moved to another database instance using administrative tools in the Master component's user interface. In addition, tenants can be copied for testing and sandboxing purposes.
Application Publishing and Installation
Applications developed by tenants can be published in a proprietary XML format and stored in the Master component. Based on permissions, other tenants may install published applications into their own accounts. The application installation process involves parsing this XML and creating all of the appropriate application metadata and seed data in the tenant's account. All application components are tagged with unique identifiers allowing applications to intelligently receive updates as well as share components (such as object definitions) among multiple applications without causing conflicts or overwriting tenant-specific customizations.