mirror of
https://github.com/Unleash/unleash.git
synced 2024-12-22 19:07:54 +01:00
0b1d4fbd07
## What This PR adds a note to the constraint and the segment docs about using a large number of constraint values. ## Why This is a fairly common question in slack, and there is no clear documentation around this at the moment. As such, it's likely that people do this a fair bit without telling us. We don't think this is the right approach, so adding this bit of documentation should hopefully make it a little clearer.
54 lines
3.4 KiB
Plaintext
54 lines
3.4 KiB
Plaintext
---
|
|
title: Segments
|
|
---
|
|
|
|
import VideoContent from '@site/src/components/VideoContent.jsx'
|
|
|
|
:::info Availability
|
|
|
|
Segments are available to Unleash Pro and Unleash Enterprise users since **Unleash 4.13**.
|
|
|
|
:::
|
|
|
|
<VideoContent videoUrls={["https://www.youtube.com/embed/LWMCCFcRic0"]}>
|
|
|
|
Want a quick overview of what segments are and what they're used for? Well, then you're in luck: we've got this short segment explainer video to help you out 📽️
|
|
|
|
</VideoContent>
|
|
|
|
A **segment** is a reusable collection of [strategy constraints](../reference/strategy-constraints.md). Like with strategy constraints, you apply segments to [feature toggle activation strategies](../reference/activation-strategies.md).
|
|
|
|
You can apply the same segment to multiple activation strategies. If you update the segment, the changes will affect every strategy that uses that segment.
|
|
|
|
Segments let you create user groups based on data available in the Unleash context. These groups can be as simple or as complex as you want to make them. You could, for example, use segments to target:
|
|
|
|
- Users in a specific region
|
|
- Users on a specific device type
|
|
- Users who signed up before a specific point in time
|
|
- ... Or any combination of the above.
|
|
|
|
Because segments stay in sync across strategies, any changes will propagate to all the activation strategies that use them. This also makes them ideal for use cases such as activating or deactivating multiple feature toggles at the same time. In other words, you can use segments to
|
|
|
|
- release one or more new features at a specified time
|
|
- create events with start and end times and guarantee that features will only be active during that period
|
|
|
|
## Structure and evaluation
|
|
|
|
Segments are collections of strategy constraints. To satisfy a segment, _all_ the constraints in the collection must be satisfied.
|
|
|
|
If an activation strategy has a segment _and_ additional constraints applied, the segment _and_ the strategies must all be satisfied. Similarly, if an activation strategy has multiple segments, then they must _must all be satisfied_.
|
|
|
|
## Creating, updating, and deleting segments
|
|
|
|
Segments can be created, edited, and deleted from the segments page in the admin UI or via the API (see the [segments API documentation](/reference/api/legacy/unleash/admin/segments.mdx)).
|
|
|
|
A segment that is in use **cannot** be deleted. If you'd like to delete a segment that is in use, you must first remove the segment from all the activation strategies that are currently using it.
|
|
|
|
![The Segments page, listing two existing segments: "Mobile users" and "Users in the APAC region". The navigation menu with the Segments page link is opened and highlighted to provide navigation help.](/img/segments-page.png)
|
|
|
|
### A note on large segments and limits {#large-segments}
|
|
|
|
In theory, you could you create segments with a thousand constraints, each with a million values. But this wouldn't scale well, so there are limitations in place to stop you from doing this. Segments are just constraints, so any limitations that apply to constraints also apply to segments.
|
|
|
|
This means that if you want to add a hundred different user IDs to one of your constraints, you are most likely better off thinking about finding another way to solve this problem. That may be using a different abstraction or finding another pattern that you can use instead. Refer to the section on [constraint limitations](../reference/strategy-constraints.md#limitations) for a more thorough explanation.
|