Giter VIP home page Giter VIP logo

GitHub Discord

Streamdal is an open-source 'Code-Native Data Privacy' solution for running data tasks directly in your application code.

Think of it as a "workflow engine" or a "pre/post data processor" that is executed client-side via WebAssembly in your application code.

It is at least 10x faster, 10x cheaper and 10x easier to operate than traditional data pipelines.


This is what it looks like:

Benefits

There are major benefits to running pipelines directly within your app:

  • Eliminates the need for a separate data pipeline infrastructure
    • Pipelines execute from within your app, using existing compute that your app is already using
  • Eliminates the need for a separate data pipeline team
    • No more waiting for the data pipeline team to make pipeline changes
  • Is ridiculously fast
    • Streamdal uses Wasm to execute pipelines at near-native speeds
  • Is actually real-time
    • Not "near real-time" or "max-30-seconds-real-time" - but actually real-time - data is processed as soon as your app reads or writes data
  • And many other reasons

Live Demo

You don't have to install the server, the console or instrument any of your apps to see Streamdal in action. We've got a live demo :)

While the demo is read-only, it will give you a good idea about the capabilities of Streamdal.

The demo showcases real-time:

  1. PII detection & masking
  2. Schema inference/detection & validation
  3. Data extraction & truncation
  4. Stream debugging & monitoring
  5. Data source and destination visualization & exploration

You can read more about how this is achieved in the "how does it work?" docs.

Getting Started

Getting started consists of two steps:

  1. Installing the server, console and their dependencies
  2. Instrumenting your code with one of our SDKs

Install

The easiest way to get Streamdal running is via curl | bash:

curl -sSL https://sh.streamdal.com | bash
  1. The install script will verify that you have git, docker and docker-compose installed
  2. The install script will clone this repo to ~/streamdal
  3. The install script will bring up all components via docker-compose

Once done:

🎉 Openhttp://localhost:8080 in your browser! 🎉

You should be presented with a beautiful (but empty) UI! To populate it, we will need to instrument some code. Onto the next section!

For alternative installation methods, check the docs dir.

Instrument

Once you have installed the server and console, you can begin instrumenting your code.

Instrumentation involves calling our SDKs .Process() method either after your application reads data from somewhere OR before your app is about to write data somewhere.

SDKs

To see an example of a complete instrumentation, take a look at one of our shim examples or the Go demo client that is bundled with the ./apps/server.

How Does It Work?

Streamdal consists of three main components:

The basic flow is that you install the server and console and wrap any reads or writes in your app with one of our SDKs. Once that's done, you will be able to see the app and the data your app is reading or writing in the console (or use the CLI).

You will also be able to enforce rules on your data (such as "this should be valid JSON", "message should contain a field called foo", "strip all email addresses" and so on).

Important

For a more in-depth explanation of the flow and the various components, visit our docs.

Repo Layout

This repo is a monorepo that has the following layout and usage:

# ┌── assets                 <--- Static assets 
# │   ├── img
# │   └── ...
# ├── apps
# │   ├── cli                <--- CLI UI 
# │   ├── console            <--- Web-based UI
# │   ├── docs               <--- https://docs.streamdal.com 
# │   ├── server             <--- Server component
# │   └── ...
# ├── docs
# │   ├── install
# │	│    ├── bare-metal
# │	│    ├── docker
# │	│    └── ...
# |   ├── instrument
# |   └── ...
# ├── libs
# │   ├── protos             <--- Common protobuf schemas
# │   ├── wasm               <--- Wasm funcs used in pipeline steps
# │   ├── wasm-detective     <--- Wasm lib used for data parsing and validation 
# │   ├── wasm-transformer   <--- Wasm lib used for data transformation
# │   └── ...
# ├── scripts                   
# │   ├── install
# │   │	  └── install.sh     <--- Install script for installing Streamdal
# │   └── ...
# ├── LICENSE
# ├── Makefile               <--- Makefile with common tasks; run `make help` for more info
# └── README.md

Community

We're building Streamdal in the open and we'd love for you to join us!

Join our Discord!

Resources

Getting Help

Stuck? Something not working right? Have questions?

  • First and easiest way to get help is to join our Discord
  • If you're not in the mood to chat - there's docs
  • If all else fails, open an issue!

Manifesto

To get a better understanding of what we're trying to do, our ethos, principles, and really, our state of mind - check out our manifesto.

Roadmap

You have control over what we're building - our roadmap is 100% public!

Feel free to stop by to discuss features, suggest new ones or just keep an eye on what's in the pipeline.

Contributing

We ❤️ contributions! But... before you craft a beautiful PR, please read through our contributing docs.

License

This project is licensed under the Apache-2.0 license.

See the LICENSE file for more info.

Streamdal's Projects

Streamdal doesn’t have any public repositories yet.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.