rudderlabs / rudder-server
- вторник, 1 октября 2019 г. в 00:23:41
Go
Privacy and Security focused Segment-alternative, in Golang and React
Short answer: Rudder is an open-source Segment alternative written in Go, built for the enterprise. .
Long answer: Rudder is a platform for collecting, storing and routing customer event data to dozens of tools. Rudder is open-source, can run in your cloud environment (AWS, GCP, Azure or even your data-centre) and provides a powerful transformation framework to process your event data on the fly.
Rudder runs as a single go binary with Postgres. It also needs the destination (e.g. GA, Amplitude) specific transformation code which are node scripts. This repo contains the core backend and the transformation modules of Rudder. The client SDKs are in a separate rep Rudder Client SDKs. We will open source the UI code soon.
Rudder server is released under SSPL License
Please register here https://app.rudderlabs.com and follow the instructions below to setup Rudder.
Questions? Join our Discord or Slack channel. Or please email soumyadeb at rudderlabs.com.
We are building Rudder because we believe open-source and cloud-prem is important for three main reasons
Privacy & Security: You should be able to collect and store your customer data without sending everything to a 3rd party vendor or embedding proprietary SDKs. With Rudder, the event data is always in your control. Besides, Rudder gives you fine-grained control over what data to forward to what analytical tool.
Processing Flexibility: You should be able to enhance OR transform your event data by combining it with your other internal data, e.g. stored in your transactional systems. Rudder makes that possible because it provides a powerful JS-based event transformation framework. Furthermore, since Rudder runs inside your cloud or on-prem environment, you can access your production data to join with the event data.
Unlimited Events: Event volume-based pricing of most commercial systems is broken. You should be able to collect as much data as possible without worrying about overrunning event budgets. Rudder's core BE is open-source and free to use.
Join our Discord or Slack channel
The docker setup is the easiest & fastest way to try out Rudder.
https://app.rudderlabs.com and set up your account. Copy your workspace token from top of the home page.<your_workspace_token> in build/docker.env with the above token.git submodule init and git submodule update to fetch the rudder-transformer repo.docker-compose up to bring up all the services../scripts/generate-event <writeKeyHere>https://github.com/rudderlabs/rudder-dockerIf you want to run each of the services without docker please follow the following steps
createdb jobsdb
createuser --superuser rudder
psql "jobsdb" -c "alter user rudder with encrypted password 'rudder'";
psql "jobsdb" -c "grant all privileges on database jobsdb to rudder";
git submodule init and git submodule update to fetch the rudder-transformer repo.
and navigate to the transformer directory cd rudder-transformernode userTransformer.js and node destTransformer.jscd rudder-server. Copy the sample.env to the main directory cp config/sample.env .envCONFIG_BACKEND_TOKEN environment variable with the token fetched in step 4go run -mod=vendor main.gohttps://app.rudderlabs.com and start sending events using the test script (mentioned in step 5 of Docker setup instructions) or our SDKs.The following is a brief overview of the major components of Rudder Stack.

The UI to configure the sources, destinations etc. It consists of
Config backend: This is the backend service that handles the sources, destinations and their connections. User management and access based roles are defined here.
Customer webapp: This is the front end application that enables the teams to set up their customer data routing with Rudder. These will show you high-level data on event deliveries and more stats. It also provides access to custom enterprise features.
Data plane is our core engine that receives the events, stores, transforms them and reliably delivers to the destinations. This engine can be customized to your business requirements by a wide variety of configuration options. Eg. You can choose to enable backing up events to an S3 bucket, the maximum size of the event for the server to reject malicious requests. Sticking to defaults will work well for most of the companies but you have the flexibility to customize the data plane.
The data plane uses Postgres as the store for events. We built our streaming framework on top of Postgres – that’s a topic for a future blog post. Reliable delivery and order of the events are the first principles in our design.
Conversion of events from Rudder format into destination-specific format is handled by the transformation module. The transformation codes are written in Javascript. I
The following blogs provide an overview of our transformation module
https://rudderlabs.com/transformations-in-rudder-part-1/
https://rudderlabs.com/transformations-in-rudder-part-2/
If you are missing a transformation, please feel free to add it to the repository.
Rudder also supports user-specific transformations for real-time operations like aggregation, sampling, modifying events etc. The following blog describes one real-life use case of the transformation module
https://rudderlabs.com/customer-case-study-casino-game/
The client SDKs provide APIs collecting events and sending it to the Rudder Backend.