Frequently Asked Questions
Get clarification or answers for the most common questions we receive about Streamdal. Canât find what youâre looking for, or need more details? Get in touch with us.
-
Streamdal is an open source observability tool.
Itâs comprised of a server, a UI, and a bunch of Wasm-powered SDKs. By using our SDK and deploying itâs server, youâll get a dynamic graph of your producers and consumers as they scale up and down, with the ability to tap in and view all the real-time data flowing through them with Tail.
You can use Tail from the Console UI. Or, for those who prefer a terminal, you can use the CLI.
The stuff you can use to modify your âin-flightâ data such as stripping PII, masking, obfuscating, or validating data is of a certain format or structure, etc is done with rules. Currently, rules and the preventive/data governance features are in beta.
-
- Import our SDK for your language.
- Weave the
Process()
method into the fabric of your code where data production or consumption takes place. - Deploy the Streamdal server where the services using the Streamdal SDK are running.
Check out the quickstart guide.
You can find more details in our guides on instrumentation and deployment.
-
Any source, and any destination.
The way Streamdal is instrumented, there isnât a need for connectors or interfacing with various APIâs. The SDK uses a
Process()
method that is wrapped around the parts of your code where data production and consumption take place. -
The work all happens locally in the SDK, and on the client. The server component is just there to configure things on the client by shipping down rules created in the Console UI.
This happens with only a negligible resource hit to the client (usally <0.1ms, thanks to Wasm). There is no sending data, or shipping logs, metrics, or traces anywhere.
Check out our benchmark tests on GitHub.
-
In order for the data graph to visually populate services:
- The SDK should be imported and properly instrumented for your language. See the Golang example on importing the SDK.
- The server needs to be accessible by the SDK.
If you have confirmed the containers are up, try running
curl <streamdal-server>:<endpoints>
. Check out the various endpoints exposed by the server components for further testing.- The
STREAMDAL_URL
default environment variable value islocalhost:9090
. If you are running the server somewhere other than where your instrumented services live (which is generally not recommended), you will need to update this value to the correct address.
- The
-
Rules are currently in beta along with the other data governance features of Streamdal.
They are being tested by a select group of contributors, companies, and design partners.
These features arenât production-ready! But, if you would like to get test access or become a design partner, contact us or hit us up on
discord. -
The observability aspects and features of Streamdal, including Tail, will always be free and open source using the Apache License v2.0.
Currently, the data governance features are in beta, but once they are fully fleshed out and production-ready, they may be a paid feature. We havenât decided which parts of the governance features might need to be paid.
Regardless of how that decision pans out, we will not be rug-pulling anything we put out as open source.
Check out our launch manifesto for details on this design decision.
-
The Data Graph is real-time and dynamic.
What that means is so long as the server component is running, and new services are instrumented with the SDK, the Data Graph will not require maintenance.
The view you get will always be an accurate representation of data flowing through your systems regardless of scale.
-
Currently, there is no need to manage schemas. Once you have instrumented the SDK, you will be able to view the active schemas of data throughout your systems.
When you weave the
Process()
method throughout your code, behind the scenes the SDK will infer and decode schemas, and present them in a human-readable format via the Console UI.We have big plans to expand schemas in the future. This could include tools, management capabilities, or functionality such as history and diff views.
Reference the roadmap for more information.
-
Tail gets its name from the Unix command and argument
tail -f
.It is a feature that can be used via the Console UI (or CLI) which will allow you to tap into any of your producers or consumers and view the real-time data flowing through them.
Because schemas are inferred and decoded, youâll be able to observe your data in a human-readable format.
-
Observability can be a really loaded term, which is why we also define it in our glossary and have a whole section dedicated to it. Depending on what youâre working with or who youâre speaking to, it can mean many different things.
When we say observability, we mean:
The ability to simply see the actual real-time data, its schema, and the services generating data or interacting with it.
DORA (DevOps Research and Assessment) also has a good definition on observability within this context, which defines it as:
âŚtooling or a technical solution that allows teams to actively debug their system. Observability is based on exploring properties and patterns not defined in advance.
We see Tail as a crucial part of this, and the primary function enabling data observability with Streamdal. Here are the following features we consider as âobservabilityâ features:
đThat list is subject to additions over time, and not subtractions. Check out our manifesto for more information on this design choice.
-
Wasm is WebAssembly.
-
We make significant use of Wasm.
Rules are supported by Wasm 100%. Schema inference, rules, and any sort of business logic is going to be executed by Wasm in the SDK.
The reason weâre able to have such a low impact on any given clientâs resources, usually less than 0.1ms, is because itâs being executed via Wasm. Itâs open source.
Get more information on how we use it in the Wasm section of the monorepo, or read about this design choice in our manifesto.
-
Streamdal is open-source using the Apache License v2.0.
Review our contributing guidelines for more information.
-
We are unabashed fans of and experts with Protobuf. Itâs used in the primary API - we use it everywhere. We have even released previous open source tools like plumber which has extensive protobuf support.
Right now Streamdal will only work with JSON or non-binary data, but we have plans to add support in the near future.
Check out our roadmap for updates.
-
Nearly everything.
The app is always connected to the backend and the server. It will receive and react to every update that happens on the server:
- Throughput information
- the Data Graph (i.e. when a new SDK is instrumented and the
Process()
is called, it will start showing up on the data graph) - Tail
- Schemas
-
We refer to these as the audience, which identifies a specific service + operation type (consume or producer), and name for the operation type and component.
You will always see these. There is an envar for some of them, but these are declared when the SDK is instrumented.