Skip to content

CHA-1570 Add benchmarking section to event platform documentation #1068

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

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions content/event-platform/benchmark.md
Copy link
Contributor Author

Choose a reason for hiding this comment

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

We should add a section on how to debug a failed benchmark using self service logs

Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
## Benchmark Your subscription

## Why should you benchmark your subscription?

The purpose of benchmarking is to test whether your destination endpoint can handle the event load from the PIM.
This allows you to evaluate the performance and reliability of your infrastructure through a controlled stress test, ensuring it is prepared for production use.
To facilitate this, we offer a dedicated endpoint that initiates a benchmark test, simulating a customizable event load from the PIM.

## How to benchmark your subscription?

### Configure a subscription for benchmark

To begin, follow our standard getting started guide available [here](/event-platform/getting-started.html).
The only difference in the setup process is during the subscription creation step, detailed [here](/event-platform/getting-started.html#4-create-a-subscription).
You must set the `source` property of your subscription to `benchmark` instead of `pim`.

### Trigger the benchmark

Send a `POST` request to the following endpoint: `https://event.prd.sdk.akeneo.cloud/api/v1/benchmark`.

Here is an example of benchmark call:

```bash [snippet:Shell]
curl --request POST 'https://event.prd.sdk.akeneo.cloud/api/v1/benchmark' \
--header "X-PIM-URL: $TARGET_PIM_URL" \
--header "X-PIM-TOKEN: $PIM_API_TOKEN" \
--header "X-PIM-CLIENT-ID: $CLIENT_ID" \
--header 'Content-Type: application/json' \
--data-raw '{
"type": "com.akeneo.benchmark.v1.test",
"count": 1000,
"size": "10"
}'
```

#### Body properties

- `type:` The type of benchmark event to launch. Currently, `com.akeneo.benchmark.v1.test` is the only available option.
- `count (optional):` A limit on the number of events to be sent. For example, `50` (default `1000`).
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there a maximum for the count ? (I didn't read the code yet)

- `size (optional):` The size of the event payload in kb. Max is 10 kb.
- `custom_data (optional):` A field to include custom data in the event payload. This can be used to add additional information relevant to your benchmark test.

::: info
You can find the full request in our [Postman collection](/event-platform/getting-started.html#4-create-a-subscription).
:::

## Analyzing the results

After the benchmark test is complete, you should carefully analyze the results on your end.
Look for any processing errors, timeouts, or missing events in your system.
If you encounter issues, it may indicate that your infrastructure is not sufficiently scaled to handle the full production load from the PIM and may require adjustments.
15 changes: 14 additions & 1 deletion content/event-platform/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,12 @@ With your subscription in place, you're ready to trigger the event you subscribe

After deleting the product, verify that the event was successfully triggered by checking the payload received at your destination URL.

---
### 6. Consider benchmarking your Subscription

To ensure your endpoint can handle the event load from the PIM, we highly recommend performance testing your subscription.
This will help you assess its performance and reliability under stress.

To learn more, see our guide: [Benchmark your subscription](/event-platform/benchmark.html)

## Using Curl

Expand Down Expand Up @@ -203,5 +208,13 @@ Alternatively, you can also update a product using the [Akeneo PIM REST API](/ap

After updating the product, verify that the event was successfully triggered by checking the payload received at your destination URL.

### 5. Consider benchmarking your Subscription

To ensure your endpoint can handle the event load from the PIM, we highly recommend performance testing your subscription.
This will help you assess its performance and reliability under stress.

To learn more, see our guide: [Benchmark your subscription](/event-platform/benchmark.html)

::: panel-link Explore Key Concepts to deepen your understanding of the [Event Platform](/event-platform/concepts.html)
:::

3 changes: 3 additions & 0 deletions content/event-platform/logs.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,3 +115,6 @@ When deduplication occurs:
If three errors with the same `subscription_id` and `error_message` are generated between 10:00 AM and 10:05 AM, only one log entry will be visible in the system, and its `timestamp` will show the time of the last occurrence (e.g., `10:04:59 AM`).

This mechanism ensures efficient error tracking without overwhelming the system with repetitive entries, while still preserving the traceability of recurring issues.

::: panel-link Consult now our benchmark section [Next](/event-platform/benchmark.html)
:::
1 change: 1 addition & 0 deletions tasks/build-doc.js
Original file line number Diff line number Diff line change
Expand Up @@ -728,6 +728,7 @@ gulp.task('build-event-platform', ['clean-dist','less'], function () {
'limitations.md': "Quota & Limits",
// 'migrate-from-deprecated-event-api.md': "Migrate from deprecated event API",
'logs.md': "Logs",
'benchmark.md': "Benchmark your subscription",
'faq.md': "FAQ",
};

Expand Down