top | item 39802120

Show HN: Wirequery – Full-stack session replay and more

80 points| wnederhof | 1 year ago |github.com

8 comments

order

maartenh|1 year ago

Seems interesting. I can't decipher from the docs nor demo if this is about debugging _live_ behavior of the systems under observation, (e.g. it only captures stuff for which there are queries), or if it actually stores all your requests and responses in a psql db.

wnederhof|1 year ago

Just to add to that: yes, it actually starts querying once the query has been entered. It basically sends that instruction to the application that has the WireQuery SDK integrated, which, in turn, only sends back data to WireQuery that meets the requirements of the query. Thus, it does not store hundreds of thousands logs in a very large database like most logging tools do. This way, you can deploy the application with _far_ fewer resources - yet, by allowing the end-user to instantiate a session (as well as a WireQuery user), you only capture what is actually relevant to be captured.

wnederhof|1 year ago

When using the Explore functionality, the data is directly captured and sent back to the user when the query is entered. However, when the query is part of a Session or if it's saved as a Query, the data is stored in the database :-)

codethief|1 year ago

Interesting project!

How does this compare to rrweb[0], the library that Sentry and many other commercial offerings for frontend monitoring use?

[0]: https://www.rrweb.io/

wnederhof|1 year ago

WireQuery uses rrweb for capturing the frontend interactions. However, perhaps I can answer a similar question, which is how it compares to other offerings.

The main difference between existing tools and WireQuery is that WireQuery was designed for capturing the interactions within the complete stack. This manifests itself in the following ways:

- The frontend recording is paired with the network calls on the backend, which can consist of the entire trace (i.e. the data of system A calling system B, system B calling system C, etc.), including the actual request and response bodies, headers, etc; - There is an exploration and query-in-the-background feature. These features allow you to run arbitrary queries against a backend system that will capture any network request that meets your criteria, optionally paired with the complete trace and some transformations. For instance, this can be helpful when you want to know what the API calls were with their payloads when a system in the middle of your landscape retuns a status code of 500. - The SDKs contain masking facilities to ensure that sensitive data is scrubbed. For instance, using Java, you can simply use @Masked on a field to have the sensitive data removed. Similar offerings often require you to do that manually.

fulafel|1 year ago

TLDR: it's for web app sessions.