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.