By default, Split’s SDKs keep segment and split data synchronized as users navigate across disparate systems, treatments, and conditions. However, some languages, do not have a native capability to keep a shared local cache of this data to properly serve treatments. For these cases, we built the Split Synchronizer.
- Create a Heroku app for the new Split synchronizer via
heroku create <app_name> --space= -s container --addons=heroku-redis:<plan_type>
- This command creates a Heroku app named
app_name
in spacespace
with thecontainer
stack and a Heroku Redis attachment ofplan_type
. Note that adding the Heroku Redis attachment can take 10-30 minutes. - For example, running
heroku create stp-split-sync--example --space=st-staging -s container --addons=heroku-redis:hobby-dev
would create an app namedstp-split-sync--example
in thest-staging
space with thehobby-dev
plan of Heroku Redis
- Attach the new synchronizer app to the
st-split
pipeline via
heroku pipelines:add st-split -a <app_name>
- Add the appropriate API key from Split's
Admin Settings->Workspace settings->API keys
as an environment variableSPLIT_SYNC_API_KEY
on the new synchronizer via
heroku config:set SPLIT_SYNC_API_KEY=<api_key> -a <app_name>
- If either
REDIS_TLS_URL
is present or if using a Premium Heroku Redis plan (which forces TLS), we need to update how we handle TLS name validation because of how Heroku handles Automatic Certificate Management:
heroku config:set SPLIT_SYNC_REDIS_TLS_SKIP_NAME_VALIDATION=true -a <app_name>
- Push this codebase to the newly created app via
git push https://git.heroku.com/<app_name>.git master:master
See How to deploy Synchronizer Docker Container in Heroku for details.
Heroku Redis cycles credentials/Redis URLs periodically, and that would invalidate the environment variables that were derived from that Redis URL, which would break the synchronizer's functionality.
We opted to parse the Redis URL that is autogenerated by the Heroku Redis attachment such that the regenerated Redis URL gets translated into the environment variables the synchronizer needs in entrypoint.sh
instead.
This allows us to both keep our synchronizer functional even after credential/Redis URL updates and avoid redundancy in our environment variables.
The Split team monitors all issues submitted to this issue tracker. We encourage you to use this issue tracker to submit any bug reports, feedback, and feature enhancements. We'll do our best to respond in a timely manner.
Please see Contributors Guide to find all you need to submit a Pull Request (PR).
Licensed under the Apache License, Version 2.0. See: Apache License.
Split is the leading Feature Delivery Platform for engineering teams that want to confidently deploy features as fast as they can develop them. Split’s fine-grained management, real-time monitoring, and data-driven experimentation ensure that new features will improve the customer experience without breaking or degrading performance. Companies like Twilio, Salesforce, GoDaddy and WePay trust Split to power their feature delivery.
To learn more about Split, contact [email protected], or get started with feature flags for free at https://www.split.io/signup.
Please refer to Split's official docs to learn about all the functionality provided by Split Synchronizer and the configuration options available for tailoring it to your current application setup.
Split has built and maintains SDKs for:
- Java Github Docs
- Javascript Github Docs
- Node Github Docs
- .NET Github Docs
- Ruby Github Docs
- PHP Github Docs
- Python Github Docs
- GO Github Docs
- Android Github Docs
- IOS Github Docs
For a comprehensive list of opensource projects visit our Github page.
Split Synchronizer supports Go version 1.8 or higher.
Learn more about Split:
Visit split.io/product for an overview of Split, or visit our documentation at docs.split.io for more detailed information.