Add guide for estimating and managing Feature Flags costs - #38666
Add guide for estimating and managing Feature Flags costs#38666A-Rindone wants to merge 3 commits into
Conversation
Adds a new guide covering how to estimate Feature Flags usage and costs before rollout, and concrete levers to manage and reduce costs after going live. Links the guide from the Feature Flags guides index.
Preview links (active after the
|
Clarifies that the 10x multiplier applies to a server-side request's raw count, matching the precise definition in the new Monthly Flag Configuration Requests concepts page.
- Clarify that client applications/end users drive client-side usage and backend services drive server-side usage in the overview - Drop the RUM-backed qualifier from the client-side usage bullet - Remove the environments factor from the estimation section, since it implied environments themselves are billed rather than the running SDK instances deployed to them
|
Thanks for the PR, I've created DOCS-15284 for documentation team review |
There was a problem hiding this comment.
Thanks for adding this great info to the docs! Flagged a broken link similar to #38667 (comment), will follow up with @A-Rindone on merge strategy to resolve.
Mostly line-edits for other comments, including pluralizing MFCRs in most instances as that seems clearer and more readable.
|
|
||
| For a server-side example, an organization running the SDK on 33 hosts generates 2,880 configuration requests per host per day at the default 30-second polling interval (86,400 seconds per day / 30 seconds). That's 33 x 2,880 x 30 days = 2,851,200 (approximately 2.85 million) MFCR before the server-side multiplier, or approximately 28.5 million MFCR after it. | ||
|
|
||
| Usage under 1 million MFCR per month is included at no cost. For current pricing tiers above that allotment, see the [Feature Flags pricing page][4]. |
There was a problem hiding this comment.
We should avoid stating specific pricing/free usage amounts, as they can change and make the docs stale. We're already linking to the pricing page so we can lean on that as source of truth for pricing. Also, omit temporal words like "current":
| Usage under 1 million MFCR per month is included at no cost. For current pricing tiers above that allotment, see the [Feature Flags pricing page][4]. | |
| Feature Flags includes a monthly MFCR allotment at no cost, with usage above it billed by pricing tier. For details on the included allotment and tiers, see the [Feature Flags pricing page][4]. |
|
|
||
| ### Adjust the configuration polling interval | ||
|
|
||
| For agentless server-side delivery, `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_POLL_INTERVAL_SECONDS` controls how often the SDK requests configuration, with a default of 30 seconds and a maximum of 3600 seconds (one hour). A longer interval reduces request volume at the cost of slower flag propagation. Extending the interval on lower-priority environments, such as development or staging, is one way to lower volume where fast propagation matters less than in production. |
There was a problem hiding this comment.
| For agentless server-side delivery, `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_POLL_INTERVAL_SECONDS` controls how often the SDK requests configuration, with a default of 30 seconds and a maximum of 3600 seconds (one hour). A longer interval reduces request volume at the cost of slower flag propagation. Extending the interval on lower-priority environments, such as development or staging, is one way to lower volume where fast propagation matters less than in production. | |
| For agentless server-side delivery, `DD_FEATURE_FLAGS_CONFIGURATION_SOURCE_AGENTLESS_POLL_INTERVAL_SECONDS` controls how often the SDK requests configuration, with a default of 30 seconds and a maximum of 3,600 seconds (one hour). A longer interval reduces request volume at the cost of slower flag propagation. Extending the interval on lower-priority environments, such as development or staging, is one way to lower volume where fast propagation matters less than in production. |
|
|
||
| Server-side MFCR multiplies with every environment running an instance of the SDK. Review which [environments][3] genuinely need live server-side flag delivery. Ephemeral or short-lived infrastructure, such as per-branch or CI environments, adds request volume without adding rollout value if it doesn't need targeting. Consolidate environment queries where multiple `env` values map to the same logical environment, so you're not duplicating configuration delivery unnecessarily. | ||
|
|
||
| ### Turn off feature flags where they aren't in use |
There was a problem hiding this comment.
Optional — this section is about disabling the SDK provider/polling, not turning off individual flags; a more precise heading is a stronger retrieval anchor.
| ### Turn off feature flags where they aren't in use | |
| ### Disable the flags provider where it isn't used |
|
|
||
| ## Overview | ||
|
|
||
| Feature Flags usage scales with how you deploy flags. For client-side usage, it depends on the number of client applications and end users connecting to Datadog. For server-side usage, it depends on the number of backend services polling for configuration. Two organizations with the same number of flags can generate different amounts of usage, depending on this deployment footprint. This guide helps you estimate usage and cost before you roll out broadly. It also covers the levers available to manage and reduce cost after you're live. |
There was a problem hiding this comment.
Just to break up a long paragraph:
| Feature Flags usage scales with how you deploy flags. For client-side usage, it depends on the number of client applications and end users connecting to Datadog. For server-side usage, it depends on the number of backend services polling for configuration. Two organizations with the same number of flags can generate different amounts of usage, depending on this deployment footprint. This guide helps you estimate usage and cost before you roll out broadly. It also covers the levers available to manage and reduce cost after you're live. | |
| Feature Flags usage scales with how you deploy flags. For client-side usage, it depends on the number of client applications and end users connecting to Datadog. For server-side usage, it depends on the number of backend services polling for configuration. Two organizations with the same number of flags can generate different amounts of usage, depending on this deployment footprint. | |
| This guide helps you estimate usage and cost before you roll out broadly. It also covers the levers available to manage and reduce cost after you're live. |
|
|
||
| {{< partial name="whats-next/whats-next.html" >}} | ||
|
|
||
| [1]: /feature_flags/concepts/monthly_flag_configuration_requests/ |
There was a problem hiding this comment.
As with #38667 (comment), this link will 404 until the target page actually exists. Not a big problem if we're expecting to merge both PRs nearly simultaneously. But if there's a substantial delay between them I'd remove the link in the first PR to merge, then add it in the subsequent PR.
| For example, an organization with 1.2 million daily active users on flagged client applications generates approximately 36 million MFCR per month (1.2 million x 30 days). | ||
|
|
||
| For a server-side example, an organization running the SDK on 33 hosts generates 2,880 configuration requests per host per day at the default 30-second polling interval (86,400 seconds per day / 30 seconds). That's 33 x 2,880 x 30 days = 2,851,200 (approximately 2.85 million) MFCR before the server-side multiplier, or approximately 28.5 million MFCR after it. |
There was a problem hiding this comment.
| For example, an organization with 1.2 million daily active users on flagged client applications generates approximately 36 million MFCR per month (1.2 million x 30 days). | |
| For a server-side example, an organization running the SDK on 33 hosts generates 2,880 configuration requests per host per day at the default 30-second polling interval (86,400 seconds per day / 30 seconds). That's 33 x 2,880 x 30 days = 2,851,200 (approximately 2.85 million) MFCR before the server-side multiplier, or approximately 28.5 million MFCR after it. | |
| For example, an organization with 1.2 million daily active users on flagged client applications generates approximately 36 million MFCRs per month (1.2 million x 30 days). | |
| For a server-side example, an organization running the SDK on 33 hosts generates 2,880 configuration requests per host per day at the default 30-second polling interval (86,400 seconds per day / 30 seconds). That's 33 x 2,880 x 30 days = 2,851,200 (approximately 2.85 million) MFCRs before the server-side multiplier, or approximately 28.5 million MFCRs after it. |
|
|
||
| ## Manage and reduce Feature Flags costs | ||
|
|
||
| Because MFCR tracks configuration requests rather than flag count, reducing the number of flags you maintain doesn't by itself reduce cost. The following levers target what actually drives MFCR: how many client sessions initialize the SDK, how many server instances poll for configuration, and how often. |
There was a problem hiding this comment.
| Because MFCR tracks configuration requests rather than flag count, reducing the number of flags you maintain doesn't by itself reduce cost. The following levers target what actually drives MFCR: how many client sessions initialize the SDK, how many server instances poll for configuration, and how often. | |
| Because MFCRs track configuration requests rather than flag count, reducing the number of flags you maintain doesn't by itself reduce cost. The following levers target what actually drives MFCRs: how many client sessions initialize the SDK, how many server instances poll for configuration, and how often. |
|
|
||
| ### Review environment sprawl and server SDK footprint | ||
|
|
||
| Server-side MFCR multiplies with every environment running an instance of the SDK. Review which [environments][3] genuinely need live server-side flag delivery. Ephemeral or short-lived infrastructure, such as per-branch or CI environments, adds request volume without adding rollout value if it doesn't need targeting. Consolidate environment queries where multiple `env` values map to the same logical environment, so you're not duplicating configuration delivery unnecessarily. |
There was a problem hiding this comment.
| Server-side MFCR multiplies with every environment running an instance of the SDK. Review which [environments][3] genuinely need live server-side flag delivery. Ephemeral or short-lived infrastructure, such as per-branch or CI environments, adds request volume without adding rollout value if it doesn't need targeting. Consolidate environment queries where multiple `env` values map to the same logical environment, so you're not duplicating configuration delivery unnecessarily. | |
| Server-side MFCRs multiply with every environment running an instance of the SDK. Review which [environments][3] genuinely need live server-side flag delivery. Ephemeral or short-lived infrastructure, such as per-branch or CI environments, adds request volume without adding rollout value if it doesn't need targeting. Consolidate environment queries where multiple `env` values map to the same logical environment, so you're not duplicating configuration delivery unnecessarily. |
|
|
||
| ### Scope client-side SDK initialization to where you use flags | ||
|
|
||
| Client-side MFCR tracks sessions or app opens in applications that initialize the flags provider. Initialize the provider only in the applications and properties where you gate features with flags, rather than universally across every client property. |
There was a problem hiding this comment.
| Client-side MFCR tracks sessions or app opens in applications that initialize the flags provider. Initialize the provider only in the applications and properties where you gate features with flags, rather than universally across every client property. | |
| Client-side MFCRs track sessions or app opens in applications that initialize the flags provider. Initialize the provider only in the applications and properties where you gate features with flags, rather than universally across every client property. |
|
|
||
| ### Clean up stale and unused flags | ||
|
|
||
| [Stale flags][7] don't directly add to MFCR, since a configuration request covers all your flags regardless of count. Archiving them still reduces flag debt and the risk of maintaining logic tied to services or environments you no longer need. Reviewing stale flags is also a useful signal for decommissioning entire environments or SDK deployments that are no longer in use, which does reduce server-side request volume. |
There was a problem hiding this comment.
| [Stale flags][7] don't directly add to MFCR, since a configuration request covers all your flags regardless of count. Archiving them still reduces flag debt and the risk of maintaining logic tied to services or environments you no longer need. Reviewing stale flags is also a useful signal for decommissioning entire environments or SDK deployments that are no longer in use, which does reduce server-side request volume. | |
| [Stale flags][7] don't directly add to MFCRs, since a configuration request covers all your flags regardless of count. Archiving them still reduces flag debt and the risk of maintaining logic tied to services or environments you no longer need. Reviewing stale flags is also a useful signal for decommissioning entire environments or SDK deployments that are no longer in use, which does reduce server-side request volume. |
|
[Automated message] This PR has merge conflicts caused by the recent docs repo reorg (files moved from the repo root into Please follow the instructions in the PR description. This is an automated comment, but if you have a question, you can mention me in this PR (external contributors) or reach out in #docs-repo-reorg-support on Slack (internal contributors). |
What does this PR do? What is the motivation?
Adds a new Feature Flags guide covering how to estimate usage and costs before rollout, and concrete levers to manage and reduce costs after going live. Links the guide from the Feature Flags guides index.
Merge readiness
For Datadog employees:
AI assistance
Drafted with Claude Code based on existing Feature Flags product documentation and internal technical references; reviewed and lint-checked (Vale) before submission.
Additional notes
This guide links to
/feature_flags/concepts/monthly_flag_configuration_requests/, which is being added in a separate, parallel PR.