splitio / split-synchronizer

Golang agent for Split SDKs
Other
16 stars 15 forks source link

Split Synchronizer

build workflow PkgGoDev Documentation Split Synchronizer Documentation Splut Proxy

Overview

Split Synchronizer

By default, Split’s SDKs keep segment and feature flag 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 service.

This tool coordinates the sending and receiving of data to a remote datastore that all of your processes can share to pull data for the evaluation of treatments. Out of the box, Split supports Redis as a remote datastore, and so the Split Synchronizer uses Redis as the cache for your SDKs when evaluating treatments. It also posts impression and event data and metrics generated by the SDKs back to Split’s servers, for exposure in the web console or sending to the data integration of your choice. The Synchronizer service runs as a standalone process in dedicated or shared servers and it does not affect the performance of your code, or Split’s SDKs.

Split Proxy

The Split Proxy enables you to deploy a service in your own infrastructure that behaves like Split's servers and is used by both server-side and client-side SDKs to synchronize the flags without connecting to Split's actual backend directly.

This tool reduces connection latencies from the SDKs to the Split server to the SDKs transparently, and when a single connection is required from a private network to the outside for security reasons.

Twitter Follow

Compatibility

Split Synchronizer supports Go version 1.18 or higher.

Getting started

Below is a simple example that describes the instantiation of Split Synchronizer:

Usage via Go

  1. Install dependencies via go build || go mod vendor
  2. Then, execute go run main.go -apikey "<YOUR_SDK_KEY>" -redis-host "<YOUR_REDIS_HOST>" -redis-port <YOUR_REDIS_PORT> -redis-prefix "<YOUR_PREFIX>"

Docker

  1. You can pull the Docker image from Docker Hub and run it into your container environment.
docker pull splitsoftware/split-synchronizer:latest
  1. Run the image:
docker run --rm --name split-synchronizer \
 -p 3010:3010 \
 -e SPLIT_SYNC_APIKEY=<YOUR_SDK_KEY> \
 -e SPLIT_SYNC_REDIS_HOST=<YOUR_REDIS_HOST> \
 -e SPLIT_SYNC_REDIS_PORT=<YOUR_REDIS_PORT> \
 -e SPLIT_SYNC_REDIS_PREFIX=<YOUR_PREFIX> \
 splitsoftware/split-synchronizer

Please refer to our official docs to learn about all the functionality provided by Split Synchronizer and this doc for Split Proxy.

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 hello@split.io, or get started with feature flags for free at https://www.split.io/signup.

Split has built and maintains SDKs for:

For a comprehensive list of open source projects visit our Github page.

Learn more about Split:

Visit split.io/product for an overview of Split, or visit our documentation at help.split.io for more detailed information.