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

[Synthetics] [ON Week] Refactor Synthetics Overview page for increased scalability #187092

Merged
merged 48 commits into from
Sep 4, 2024

Conversation

justinkambic
Copy link
Contributor

@justinkambic justinkambic commented Jun 27, 2024

Summary

Resolves #183622.

This is part of some ON Week PoC work I did that introduces React Window and its Infinite Loader to the Synthetics Overview page.

Additionally, I have refactored the way that duration fetching is done for the overview cards; the fetching is now handled at a top-level and as-needed during the infinite scroll. This results in a page that is scrollable all the way to the end of very large amounts of monitors. The example deployment I'm using has about 900 monitors, and in the latest versions of Kibana this dataset causes the overview page to crash the tab.

@justinkambic justinkambic added the Team:obs-ux-infra_services Observability Infrastructure & Services User Experience Team label Jun 27, 2024
@justinkambic justinkambic self-assigned this Jun 27, 2024
@justinkambic justinkambic requested a review from a team as a code owner June 27, 2024 16:58
@elasticmachine
Copy link
Contributor

Pinging @elastic/obs-ux-infra_services-team (Team:obs-ux-infra_services)

@botelastic botelastic bot added the ci:project-deploy-observability Create an Observability project label Jun 27, 2024
@obltmachine
Copy link

🤖 GitHub comments

Expand to view the GitHub comments

Just comment with:

  • /oblt-deploy : Deploy a Kibana instance using the Observability test environments.
  • run docs-build : Re-trigger the docs validation. (use unformatted text in the comment!)

@botelastic botelastic bot added the Team:obs-ux-management Observability Management User Experience Team label Jul 11, 2024
@@ -21,3 +28,49 @@ export function* fetchMonitorOverviewEffect() {
)
);
}

export const TRENDS_CHUNK_SIZE = 50;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

It is good to keep this set to around 40+ ideally, because on most screens where there are enough for the chunk size to matter, the first 40-or-so monitors are getting rendered. After we switched to using msearch this seems to be no issue from a perf perspective.

@shahzad31
Copy link
Contributor

On scrolling first page, it starts showing the footer , which says Showing All monitors , i think that should be visible when user is end of scroll !!

image

@shahzad31
Copy link
Contributor

on initial load, there is some hidden text behind first card

image

Copy link
Contributor

@shahzad31 shahzad31 left a comment

Choose a reason for hiding this comment

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

LGTM !!

Besides some ux concerns which should be addressed !!

@justinkambic
Copy link
Contributor Author

On scrolling first page, it starts showing the footer , which says Showing All monitors , i think that should be visible when user is end of scroll !!

20551af

@justinkambic
Copy link
Contributor Author

on initial load, there is some hidden text behind first card

Well-spotted. This is another product of us unconditionally rendering the footer. I've added an extra logic gate to rendering that component, now it should not show up during load.

5b3b506

@kibana-ci
Copy link
Collaborator

kibana-ci commented Sep 4, 2024

💚 Build Succeeded

  • Buildkite Build
  • Commit: 5b3b506
  • Kibana Serverless Image: docker.elastic.co/kibana-ci/kibana-serverless:pr-187092-5b3b5064abed

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
synthetics 1023 1022 -1

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
synthetics 938.8KB 965.2KB +26.4KB
Unknown metric groups

ESLint disabled line counts

id before after diff
synthetics 64 63 -1

Total ESLint disabled count

id before after diff
synthetics 70 69 -1

History

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

cc @justinkambic

@justinkambic justinkambic merged commit fd704de into elastic:main Sep 4, 2024
41 checks passed
@justinkambic justinkambic deleted the ON-WEEK-2024-06 branch September 4, 2024 19:04
@kibanamachine kibanamachine added the backport:skip This commit does not require backporting label Sep 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport:skip This commit does not require backporting ci:project-deploy-observability Create an Observability project release_note:enhancement Spacetime Team:obs-ux-management Observability Management User Experience Team v8.16.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Synthetics] Overview page performance issues with large number of monitors
7 participants