Skip to content

StatesTitle/split-synchronizer

 
 

Repository files navigation

Split Synchronizer

Build Status

Overview

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.

Twitter Follow

Deploying to Heroku

  1. 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 space space with the container stack and a Heroku Redis attachment of plan_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 named stp-split-sync--example in the st-staging space with the hobby-dev plan of Heroku Redis
  1. Attach the new synchronizer app to the st-split pipeline via

heroku pipelines:add st-split -a <app_name>

  1. Add the appropriate API key from Split's Admin Settings->Workspace settings->API keys as an environment variable SPLIT_SYNC_API_KEY on the new synchronizer via

heroku config:set SPLIT_SYNC_API_KEY=<api_key> -a <app_name>

  1. 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>

  1. 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.

Doma specific changes

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.

Submitting issues

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.

Contributing

Please see Contributors Guide to find all you need to submit a Pull Request (PR).

License

Licensed under the Apache License, Version 2.0. See: Apache License.

About Split

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:

For a comprehensive list of opensource projects visit our Github page.

Compatibility

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.

About

Golang agent for Split SDKs

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 94.9%
  • HTML 2.6%
  • Shell 2.3%
  • Other 0.2%