Multitenancy on the GoodData Platform
The GoodData platform comes with built-in support for multitenancy for workspaces on the platform. Using multitenancy, you can easily manage multiple workspaces for multiple clients (tenants) that all share a common Data Source without necessarily sharing the same data.
Multitenancy allows you to:
- Use a single Data Source to distribute the data into multiple workspaces
- Simultaneously manage the data model, core metrics, dashboards, and the data flow for all client workspaces in a scalable manner from a central location
- Create and customize each of the client workspaces:
- Add client specific metrics, insights or dashboards
- Make sure the data of each client are securely separated
Running a multi-tenant setup requires that you prepare your Data Source to allow support for data distribution into multiple workspaces. In other words, you have to identify which data from your Data Source go into which client’s workspace. This is different from data permissions which are applied to workspace users. For more information about how to prepare your data for multitenancy, see the following pages:
- How Data Is Distributed Based on the Client ID for Data Warehouses
- How Data Is Distributed Based on the Client ID for Object Storage Services
Multitenancy Structure in GoodData
To run and manage multiple workspaces in a multi-tenant setup, the GoodData platform uses hierarchical segmentation. You create a workspace to manage the data load; organize workspaces into segments; and segments into data products. The structure is as follows:
- A service workspace to handle data distribution This is a workspace which does not have metrics, dashboards, or a data model in it. It contains only components to maintain the client workspaces and the whole multi-tenant setup. These include the segment data load (Automated Data Distribution for Data Warehouses or Set Up Automated Data Distribution v2 for Object Storage Services), tools for automated workspace and user provisioning (Workspace Provisioning Brick, User Provisioning Brick), or tools to deploy changes and new versions to all the client workspaces (LCM Release Brick, LCM Rollout Brick). Bricks are a part of Life Cycle Management. The availability of Life Cycle Management depends on your pricing plan. One service workspace can support multiple segments or data products.
- Segment A segment is a unit of multiple workspaces that are organized by the same Logical Data Model (see Data Modeling in GoodData). A segment consists of the following types of workspaces:
- A master workspace with a Logical Data Model defining metrics, dashboards, and insights In the multi-tenant setup, each segment has exactly one master workspace. The master workspace serves as a template for all the client workspaces. This workspace contains the Logical Data Model and all the core metrics and dashboards that you want to share to the client workspaces. There is always one master workspace per each segment at a time, but this workspace can be swapped for another one (i.e. as part of a release procedure).
- (Optional) A development master workspace The development master workspace is a copy of the master workspace where development can happen before being pushed to customers on the production environment. After development is done, you can copy the workspace into the target environment and propagate the changes to your client workspaces. The advantage to this approach is that instead of modifying the master workspace directly, you can keep a history of previous master workspaces so it is possible to rollback or compare changes.
- One or more client workspaces The client workspace refers to the actual workspace that is loaded with data for a particular client. It is where a customer works with their data and performs analytics. There is typically one such workspace per client and you can have dozens or even thousands of them in your setup. Each of them will be assigned to exactly one segment. Each client workspace in a multitenancy setup has its own workspace ID which is assigned at the time of the workspace creation. When you organize the workspace into a segment, you must specify a client ID for the workspace that you define in the Data Source. This means that while the data model, dashboards, and metrics available will depend on the master workspace, the data itself can be specific to a particular client. Organizing workspaces into a segment provides you with the ability to manage and organize multiple workspaces from a single point. At the same time, you can modify each workspace in the segment individually.
- Data Product A data product is an entity containing one or more segments. All segments must belong to a data product, and they can only belong to one data product at a time. Domains can contain multiple data products.
Hierarchical segmentation of workspaces for multitenancy can be configured through the API.
If you have questions, contact GoodData Support.