|
This is legacy documentation
CloudBees Feature Management is now part of CloudBees Unify. For current feature management documentation, go to CloudBees Unify Feature management. This documentation covers the original CloudBees Feature Management product (formerly Rollout.io), which is end-of-life. It remains available only for existing customers who are migrating to CloudBees Unify. |
|
Support during the extension period
Because CloudBees Feature Management is an end-of-life product, support during the extension period is limited to critical items only:
This coverage is consistent with the CloudBees end-of-life policy in the support Terms & Conditions. |
Changes in the CloudBees Feature Management UI affect flag values on the client device, such as a mobile app, web app, or backend system. You can control these changes using flag update flow.
|
Stateless architecture CloudBees Feature Management uses a stateless architecture by default, which means that each SDK pulls a static JSON file from CloudBees Feature Management cloud storage. The CloudBees Feature Management stateless architecture includes the following advantages:
Note - CloudBees Feature Management uses Server Sent Event (SSE) to alert the SDKs to download a new JSON config file in response to any configuration changes, so all changes are propagated to the clients instantly upon modification. |
Client-side SDK update flow
SDK setup flow
The client SDK setup flow operates in the following sequence:
-
Synchronous local storage fetching:
-
The application calls the Rox SDK setup function
-
The SDK checks for existing configuration in local storage
-
The configuration is applied synchronously
-
Setup function returns with all configured flags applied on the device
-
-
Asynchronous network fetching
-
In parallel to the local storage flow, an asynchronous network request is called from the SDK to the CloudBees Feature Management storage services
-
When the network request is returned:
-
Configuration is applied
-
Configuration is saved in local storage
-
-
SDK foreground configuration fetching flow
When the SDK identifies a foreground event on clients such as mobile or TV, it triggers an asynchronous configuration fetching sequence to get a new configuration, if one exists, on CloudBees Feature Management servers.
| Refer to Understanding a flag freeze for more information. |
Server-side SDK update flow
Server-side SDKs fetch a new configuration file periodically. Various settings for each SDK are listed below:
| SDK | Default (in seconds) | Minimum (in seconds) | Additional notes |
|---|---|---|---|
JVM |
60 |
30 |
|
.NET |
60 |
30 |
|
Node.js |
60 |
30 |
|
JS SSR |
60 |
30 |
|
Python |
60 |
30 |
|
Go |
60 |
30 |
The optional parameter type is |
PHP |
30 |
30 |
PHP differs from other server-side SDKs in that it is not a live server, but a cache on the storage with a strategy that expires every 30 seconds. CloudBees Feature Management uses |
C |
60 |
30 |
There is an additional |
C++ |
60 |
30 |
There is an additional |
To change the default time frame, use FetchInterval / fetchIntervalInSec at the RoxOptions object. Refer to the following example:
RoxOptions options = new RoxOptions.Builder() .withFetchIntervalInSeconds(50) .withVersion("1.2.0") .build(); Rox.setup(this, options);
RoxOptions options = new RoxOptions(new RoxOptions.RoxOptionsBuilder{ Version = "1.0.4", FetchInterval = 60 }); await Rox.Setup(appKey, options);
Rox.register('', container); const options = { version: '2.0.0', fetchIntervalInSec: 60 }; Rox.setup(ROLLOUT_KEY, options);
from rox.server.rox import Rox from rox.server.rox_options import RoxOptions # setup configuration_fetched_handler in the options object options = RoxOptions( version="1.3.1" fetch_interval=60 ) cancel_event = Rox.setup('<key>', options).result();
import ( "time" "github.com/rollout/rox-go/v5/server" "github.com/rollout/rox-go/v5/core/model" ) var rox *server.Rox func setupRollout() { options := server.NewRoxOptions(server.RoxOptionsBuilder{ Version: "2.0.0", FetchInterval: time.Minute }) rox = server.NewRox() }
use Rox\Server\Rox; use Rox\Server\RoxOptions; use Rox\Server\RoxOptionsBuilder; $roxOptionsBuilder = (new RoxOptionsBuilder()) ->setVersion("2.0.0") ->setConfigFetchIntervalInSeconds(60); Rox::setup(ROLLOUT_KEY, new RoxOptions($roxOptionsBuilder));
#include <rox/server.h> RoxOptions *options = rox_options_create(); rox_options_set_fetch_interval(options, 60); rox_setup(DEFAULT_API_KEY, options);
#include <roxx/server.h> Rox::Options *options = Rox::OptionsBuilder() .SetFetchInterval(60) .Build(); Rox::Setup(DEFAULT_API_KEY, options);
Configuration fetched handler
Refer to Configuration fetched handler for how to identify when the SDK has loaded the configuration from local storage or the network.