-
Notifications
You must be signed in to change notification settings - Fork 69
Add enterprise setup guide #3693
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
mcho-statsig
wants to merge
4
commits into
main
Choose a base branch
from
enterprise-setup-guide
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+176
−1
Open
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,173 @@ | ||
| --- | ||
| title: Initial Setup Guide of your Workspace | ||
| --- | ||
|
|
||
| <Info> | ||
| Organizations and their related features are for Enterprise contracts only. Please reach out to our [support team](mailto:[email protected]), your sales contact, or our [Slack channel](https://statsigcommunity.slack.com/) if you need to enable Enterprise features as you use Statsig. | ||
| </Info> | ||
|
|
||
|
|
||
| ## Overview | ||
|
|
||
| This initial setup guide aims to provide a **step-by-step guide** for a set of essential configurations that you would need to get started with Statsig on an Enterprise plan. | ||
|
|
||
| This guide is primarily written for **organization admins** who need to set up the initial environment and put the guardrails in place for the broader teams to start using Statsig. | ||
| It also includes some **best practices** to increase your operational efficiency and set your team up for success in the long run. | ||
|
|
||
|
|
||
| ### Statsig Workspace Structure | ||
|
|
||
| <Frame> | ||
| <img src="/images/access_management_structure_diagram.png" alt="Statsig structure diagram" /> | ||
| </Frame> | ||
|
|
||
| In Statsig, we have three constructs to help you organize your workspace and scale it out more broadly within your organization. | ||
|
|
||
| **Organization** is an enterprise-level environment that allows companies to create project(s) and bring members to work inside the project. | ||
|
|
||
| **Project** is a workspace within the organization where the configs (e.g., feature gates, experiments, layers, etc.), metrics, and SDK keys you and your team created lives. | ||
|
|
||
| **Team** is a group of members at the project level that can help your organization manage the permissions and ownership of resources. | ||
|
|
||
|
|
||
| #### Our Recommendation | ||
|
|
||
| In Statsig, each project within the organization is isolated from one another. | ||
| This means that **none** of the resources or data is shared among different projects, even if they are part of the same organization. | ||
|
|
||
| The Statsig team believe that the **sensible default structure** for most customers is having an organization with a **single project** where multiple teams contribute and collaborate inside. | ||
|
|
||
| We believe that different teams and functions across your organization can stay well-organized within a single project by leveraging features such as **[teams](https://docs.statsig.com/access-management/teams), [roles](https://docs.statsig.com/access-management/projects#roles), [tags](https://docs.statsig.com/access-management/tags),** and **[templates](https://docs.statsig.com/experiments/templates/templates)**. | ||
| This also removes the risk of costly migrations if some projects ever need to be consolidated in the future for cross-functional collaborations. | ||
|
|
||
| <Frame> | ||
| <img src="/images/access_management_structure_anti_pattern.png" alt="Statsig structure diagram anti pattern" /> | ||
| </Frame> | ||
|
|
||
| Note that Statsig has rich support for **environments** within our resources. | ||
| We consider it an *anti-pattern* to create multiple projects just to manage lower environments separately from production. | ||
|
|
||
|
|
||
| ### Setup Guide | ||
|
|
||
| #### Step 1: Setting up the Organization | ||
|
|
||
| When you sign an enterprise contract with Statsig, we will provision your existing Statsig account into an enterprise account. | ||
|
|
||
| Once provisioned, you will see that the tab for Organization is now added to your account along with additional security and governance settings. | ||
|
|
||
|
|
||
| #### Step 2: Setting up SSO | ||
|
|
||
| We recommend configuring [**SSO**](https://docs.statsig.com/access-management/sso/overview) (Single Sign-On) for your Statsig organization to simplify the user experience while improving your security. | ||
|
|
||
| Statsig supports any Identity Provider that implements the **OIDC protocol** for SSO, such as [Okta](https://docs.statsig.com/access-management/sso/okta_sso), [Microsoft Entra ID](https://docs.statsig.com/access-management/sso/azuread), [Google](https://docs.statsig.com/access-management/sso/google), and more. | ||
| Additionally, consider integrating [**SCIM**](https://docs.statsig.com/access-management/scim/overview) (System for Cross-domain Identity Management) if you are using Okta as your identity provider. | ||
|
|
||
| New users who are provisioned via SSO will be assigned the *Member* Role unless you're using SCIM. | ||
|
|
||
|
|
||
| #### Step 3: Creating your Project | ||
|
|
||
| <Frame> | ||
| <img src="/images/access_management_project_view.png" alt="Organization project administration interface" /> | ||
| </Frame> | ||
|
|
||
| A project in Statsig serves as a workspace that contains everything you and your team will create. This includes configs (e.g., feature gates, experiments, dynamic configs, layers), metrics, integrations, and more. | ||
|
|
||
| When creating a new project, you can set its type to *Open* which would allow anyone in the organization to join freely, or to *Closed* which would allow people to join only by invitation or request. | ||
|
|
||
|
|
||
| #### Step 4: Setting up Roles | ||
|
|
||
| <Frame> | ||
| <img src="/images/access_management_roles.png" alt="Project roles interface" /> | ||
| </Frame> | ||
|
|
||
| Each person is assigned a role that defines their level of access within the project and organization. | ||
| We recommend reviewing the permissions set for each predefined roles so you can [assign the appropriate roles](https://docs.statsig.com/access-management/organizations#organization-members) or create a custom role that aligns with your organization's needs. | ||
|
|
||
| Common examples of custom roles include a *Metrics Admin* (responsible for managing metrics) and a *Data Warehouse Admin* (in Warehouse Native projects, responsible for managing warehouse connections). | ||
mcho-statsig marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
|
|
||
| #### Step 5: Inviting your team to the Organization | ||
|
|
||
| <Frame> | ||
| <img src="/images/access_management_invite.png" alt="Project invite interface" /> | ||
| </Frame> | ||
|
|
||
| If you’ve successfully configured SSO, your teams can now join the Statsig organization by signing in from the console and going through the request flow within your identity provider. | ||
|
|
||
| If you haven’t set up SSO yet, you can invite individual members to your organization and/or project in the console. | ||
|
|
||
|
|
||
| #### Step 6: Creating Teams within the Project | ||
mcho-statsig marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| [Teams](https://docs.statsig.com/access-management/teams) can be created within the project to help with organization and ownership. | ||
|
|
||
| Once a team is configured and users are added to team, any configs created will be associated with the team that the user belongs to. | ||
| And these configs will automatically inherit all the default settings and templates from the team when they are created. | ||
|
|
||
| <Frame> | ||
| <img src="/images/access_management_team_filter.png" alt="Team filter in experiments" /> | ||
| </Frame> | ||
|
|
||
| Team becomes extremely useful as multiple teams begin to use Statsig, as it helps with organization and governance, as well as onboarding of new users as it provides a set of defaults to work from. | ||
|
|
||
| As a best practice, you can require all resource creations to be attached to a team and have team admins (e.g., tech leads, engineering managers, etc.) add people to their corresponding teams, enabling them to start creating configs and metrics. | ||
|
|
||
|
|
||
| ### Best practices | ||
|
|
||
| #### Setting up Review Policies | ||
|
|
||
| <Frame> | ||
| <img src="/images/access_management_reviews.png" alt="Review setting interface" /> | ||
| </Frame> | ||
|
|
||
| Within Statsig, you can enable [reviews](https://docs.statsig.com/guides/setting-up-reviews) for any changes to config and metric, requiring a second pair of eyes to review the change before they get deployed to production. | ||
|
|
||
| Note that you can **customize** your review policies to align with your organization’s needs. | ||
| For example, you can set up a team of reviewers by giving their roles a permission to approve the reviews. | ||
| You can also give certain roles (e.g., oncalls) the ability to self-approve or require reviews for production environment only to allow for agility when needed. | ||
|
|
||
| Each **team** also has team-level **review settings** that can require reviews for configs and metrics owned by specific team and allow only members and/or admins (with roles that permit approving reviews) of that specific team to be able to approve the reviews. | ||
|
|
||
|
|
||
| #### Setting up your API Keys | ||
|
|
||
| <Frame> | ||
| <img src="/images/access_management_sdk_env.png" alt="SDK environment interface" /> | ||
| </Frame> | ||
|
|
||
| In Statsig, you have **Client API Keys** to initialize all Statsig [client SDKs](https://docs.statsig.com/client/introduction) and **Server Secret Keys** to initialize all Statsig [server SDKs](https://docs.statsig.com/server/introduction). | ||
|
|
||
| We believe there is a **"Crawl, Walk, Run"** phase when it comes to configuring your API keys: | ||
|
|
||
| - **Crawl:** Begin by creating API keys that are scoped to specific environment within Statsig for [environment-based evaluation](https://docs.statsig.com/guides/using-environments#1-environment-specific-sdk-keys). | ||
|
|
||
| - **Walk:** Next, create different API keys for each of the frontend clients (e.g., iOS, Android, and Web). | ||
|
|
||
| - **Run:** At scale, consider having different API keys at the service level where each backend service and its environments have their own keys. | ||
|
|
||
| This setup integrates seamlessly with [Target Apps](https://docs.statsig.com/sdks/target-apps) that can unlock additional performance and security. | ||
|
|
||
|
|
||
| #### Configuring Target Apps for API keys | ||
|
|
||
| <Frame> | ||
| <img src="/images/access_management_target_apps.png" alt="Target apps interface" /> | ||
| </Frame> | ||
|
|
||
|
|
||
| [Target app](https://docs.statsig.com/sdks/target-apps) is an attribute you can associate to your SDK keys and configs. | ||
| Through target apps, you can precisely set the scope of configs that will be accessed from each SDK key (which can also reduce the size of your payloads). | ||
|
|
||
| We highly recommend setting up target apps as you scale the usage of Statsig for [additional performance and security](https://docs.statsig.com/sdks/target-apps#motivation). | ||
|
|
||
|
|
||
| #### Setting up Notifications | ||
|
|
||
| Statsig has an integration with [Slack](https://docs.statsig.com/integrations/slack) that you can set up, so you can receive real-time notifications about the activities, status changes, and other useful alerts directly in your Slack workspace. | ||
|
|
||
| Additionally, you can configure to receive notifications in your [email](https://www.statsig.com/updates/update/email-notifs) as well for any alerts, reviews, reports, and more. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.