Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rfc(decision): Replay Issue Creation #92

Merged
merged 15 commits into from
May 22, 2023
Merged

Conversation

cmanallen
Copy link
Member

@cmanallen cmanallen commented May 15, 2023

This RFC proposes two possible paths for creating Replay issues.

Rendered RFC

2. Provide actionable feedback to developers that could not otherwise be captured in a performance span or error event.
3. Increase product awareness in free-tier customers and encourage adoption.

# Options Considered
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm trying to think of a way to make sure we're looking at an exhaustive list of options, even if some are bad.

here's where i'm starting from:

SDK Network data Relay & Ingest Result
@sentry/javascript error payload (call captureException() in browser) normal processing error quota risk
@sentry/javascript click detection (same payload as in experiment) server-side detector needed -
@sentry/replay existing breadcrumbs + rrweb events normal relay processing server-side detector needed
@sentry/replay click detection breadcrumb (same payload as in experiment) server-side detector needed replay must be sampled

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ryan953 @cmanallen Could we add a column here that is "Product Experience" or "Product Implications" so we can visualize what this means to our users?

**Cons:**

1. Poor rollout could impact service availability during testing period.
2. Requires coordination between the SDK and Ingest to create new issue types.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we know how perf/profiling teams have been handling their issue types?
IIRC perf issues have been rolled out by a getsentry option, I haven't heard of anything going wrong on their end and I imagine with DS they're also at risk of sampling from the SDK side

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Profiling does it in the back end. Performance I'm not sure exactly. I know they have a lot of back end detectors so at least some portion is handled there.


**Cons:**

1. Uses quota.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume you mean errors quota here. It would be good to state that specifically for the revised RFC content.

As an aside, is it possible to do Option 1 and exclude it from consuming errors quota?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

^ If the answer is 'yes' to the above question, we'll have to modify the pros/cons list

Copy link
Member Author

@cmanallen cmanallen May 17, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's an experimental REST API (that would not use error quota) but its not stable as of this RFC. We would need to coordinate with the issues team. I don't believe there is another alternative that would not use error quota.


# Summary

We want to detect certain categories of issues only available through the Session Replay product. These issues can only be detected on the SDK. The Replay back-end will never have enough data to find these issues. For that reason this is primarily an SDK driven workload. The question is: what role should the Replay back-end have in Replay issue creation? Should the Replay SDK use the Replay back-end to generate new issues or should the SDK generate those issues through a generic, non-replay-specific interface?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When we first worked on performance issues the initial spike was doing them via sdk. But there was a lot of pushback to move things to the backend, since implementing this logic across N sdks isn't really a scalable solution.

Maybe this isn't such a big deal if this only applies to the JS world though? Either way it might be worth checking that upper management isn't going to veto this approach later on.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this isn't such a big deal if this only applies to the JS world though?

Yeah I'm hoping thats the case.

Unfortunately this work has to be done on the SDK due to the large sizes of replays and the large time differences between segments (segments can refer back to any previous segment). This is probably something that should be documented in the RFC :P

@cmanallen cmanallen marked this pull request as ready for review May 22, 2023 15:49
@cmanallen cmanallen merged commit e905e0e into main May 22, 2023
1 check passed
@cmanallen cmanallen deleted the rfc/replay-issue-creation branch May 22, 2023 15:50
@bruno-garcia
Copy link
Member

The team decided to reopen this RFC in order to expand on the options further. Some of the goals:

Should an HTTP interface for creating issue events be created this RFC can be re-addressed.

  • Give more details on what this interface can look like.
  • Talk about a simple SDK-only approach with captureEvent

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants