Skip to content

[doc] Add a pitch on the measurement of the performance of Sirius Web based applications#6327

Merged
sbegaudeau merged 1 commit intomasterfrom
sbe/specification/performance-testing
Mar 25, 2026
Merged

[doc] Add a pitch on the measurement of the performance of Sirius Web based applications#6327
sbegaudeau merged 1 commit intomasterfrom
sbe/specification/performance-testing

Conversation

@sbegaudeau
Copy link
Member

Signed-off-by: Stéphane Bégaudeau stephane.begaudeau@obeo.fr

Pull request template

General purpose

What is the main goal of this pull request?

  • Bug fixes
  • New features
  • Documentation
  • Cleanup
  • Tests
  • Build / releng

Project management

  • Has the pull request been added to the relevant project and milestone? (Only if you know that your work is part of a specific iteration such as the current one)
  • Have the priority: and pr: labels been added to the pull request? (In case of doubt, start with the labels priority: low and pr: to review later)
  • Have the relevant issues been added to the pull request?
  • Have the relevant labels been added to the issues? (area:, difficulty:, type:)
  • Have the relevant issues been added to the same project and milestone as the pull request?
  • Has the CHANGELOG.adoc been updated to reference the relevant issues?
  • Have the relevant API breaks been described in the CHANGELOG.adoc? (Including changes in the GraphQL API)
  • In case of a change with a visual impact, are there any screenshots in the CHANGELOG.adoc? For example in doc/screenshots/2022.5.0-my-new-feature.png

Architectural decision records (ADR)

  • Does the title of the commit contributing the ADR start with [doc]?
  • Are the ADRs mentioned in the relevant section of the CHANGELOG.adoc?

Dependencies

  • Are the new / upgraded dependencies mentioned in the relevant section of the CHANGELOG.adoc?
  • Are the new dependencies justified in the CHANGELOG.adoc?

Frontend

This section is not relevant if your contribution does not come with changes to the frontend.

General purpose

  • Is the code properly tested? (Plain old JavaScript tests for business code and tests based on React Testing Library for the components)

Typing

We need to improve the typing of our code, as such, we require every contribution to come with proper TypeScript typing for both changes contributing new files and those modifying existing files.
Please ensure that the following statements are true for each file created or modified (this may require you to improve code outside of your contribution).

  • Variables have a proper type
  • Functions’ arguments have a proper type
  • Functions’ return type are specified
  • Hooks are properly typed:
    • useMutation<DATA_TYPE, VARIABLE_TYPE>(…)
    • useQuery<DATA_TYPE, VARIABLE_TYPE>(…)
    • useSubscription<DATA_TYPE, VARIABLE_TYPE>(…)
    • useMachine<CONTEXT_TYPE, EVENTS_TYPE>(…)
    • useState<STATE_TYPE>(…)
  • All components have a proper typing for their props
  • No useless optional chaining with ?. (if the GraphQL API specifies that a field cannot be null, do not treat it has potentially null for example)
  • Nullable values have a proper type (for example let diagram: Diagram | null = null;)

Backend

This section is not relevant if your contribution does not come with changes to the backend.

General purpose

  • Are all the event handlers tested?
  • Are the event processor tested?
  • Is the business code (services) tested?
  • Are diagram layout changes tested?

Architecture

  • Are data structure classes properly separated from behavioral classes?
  • Are all the relevant fields final?
  • Is any data structure mutable? If so, please write a comment indicating why
  • Are behavioral classes either stateless or side effect free?

Review

How to test this PR?

Please describe here the various use cases to test this pull request

  • Has the Kiwi TCMS test suite been updated with tests for this contribution?

We should have a tool and some patterns to perform performance testing.
It should allow us to measure the performance of the GraphQL HTTP API, the REST API and the WebSocket API simultaneously in one test if necessary.
It should provide us with clear reports allowing us to track the performance of various use cases over time.
We should be able to have keep some history of those performance reports.
Copy link
Contributor

Choose a reason for hiding this comment

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

We should keep a history of those performance reports. instead ?

Copy link
Member Author

Choose a reason for hiding this comment

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

Done


== Problem

We want to be able to measure the performance of Sirius Web based applications.
Copy link
Member

Choose a reason for hiding this comment

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

Maybe make the why more explicit.

Measure and track the changes across time to:

  • detect any significant performance regressions;
  • identify the most important performance issues to prioritize them;
  • track progress on any future performance improvement work.

Copy link
Member Author

Choose a reason for hiding this comment

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

Done

@pcdavid
Copy link
Member

pcdavid commented Mar 25, 2026

The document does not indicate what kind of performance we want to focus on.
The most obvious is "how long does it take to perform such and such individual operation on a non-busy server", but there could be others:

  • latency vs throughput
  • memory usage
  • network usage (e.g. how much data is produced and transferred to the front when sending an updated version of a diagram).

@sbegaudeau
Copy link
Member Author

The document does not indicate what kind of performance we want to focus on. The most obvious is "how long does it take to perform such and such individual operation on a non-busy server", but there could be others:

  • latency vs throughput
  • memory usage
  • network usage (e.g. how much data is produced and transferred to the front when sending an updated version of a diagram).

I'll mention something about that because right now, I don't know. We will need to start measuring things and see what it reveals but these are good ideas to explore.

… based applications

Signed-off-by: Stéphane Bégaudeau <stephane.begaudeau@obeo.fr>
@sbegaudeau sbegaudeau force-pushed the sbe/specification/performance-testing branch from d782226 to 697e239 Compare March 25, 2026 10:00
@sbegaudeau sbegaudeau requested a review from frouene March 25, 2026 10:04
@sbegaudeau sbegaudeau merged commit 523f186 into master Mar 25, 2026
2 checks passed
@sbegaudeau sbegaudeau deleted the sbe/specification/performance-testing branch March 25, 2026 13:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants