You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add support in OSB to benchmark alternative client/server transport protocols. This feature should make it easy to plug in a new alternative client implementation and evaluate it's performance in contrast to the traditional REST OpenSearch python client.
What users have asked for this feature?
The traditional REST API stands out as an opportunity for optimization within OpenSearch and several issues within core propose replacements which aim to cut down on serialization or provide data in more SIMD friendly formats.
It is difficult to evaluate the performance of new client/server transports, often requiring custom scripts, tools, or hacky OSB feature branches. To benchmark the new protocol and API.
What will the developer experience be like?
The complexity of completely abstracting all OSB client operations to provide support for new client/server transports is large and would include a substantial amount of wasted work considering new client/server transports may not support more than a few specialized operations for which they are optimized.
For this feature I would propose new OpenSearch client implementations extend the existing OSClient, lightly wrapping the default REST client and cherry picking key operations of the OSClient interface to intercept and send with the new transport protocol.
Adding new client transports to OSB:
Any new OpenSearch python client should mirror opensearchpy and be made available to OSB as a package.
Enabling and selecting additional transport clients:
Configuration options for new clients may be provided alongside all other client options in the configuration file. The OsClientFactory will be responsible for validating and constructing "hybrid" clients as configured by the user and enabled by feature flag.
Are there any security considerations?
Security related configuration options, such as TLS, should be configured on a per-client basis through flags/configuration file as they are for the REST client.
What will the user experience be like?
Executing OSB using an alternative client should be possible by adding some additional flags (or same options set in config file):
These changes should only be additive and have no impact on the existing OSB configuration options.
Why should it be built? Any reason not to?
It may not be appropriate to require OSB directly manage alternative client implementations. As this issue describes OSB may be further abstracted to support generalized APIs which would likely involve a more general client abstraction to support non OpenSearch APIs. It's possible adding this feature now could be wasted work in light of these proposals.
What will it take to execute?
While the changes to OSB will likely be limited, at time of opening this issue there is no mature client with which to test this change. Framework components for adding/managing new clients can be added but the usefulness of this feature is predicated on a mature client utilizing a new transport protocol.
Any remaining open questions?
No response
The text was updated successfully, but these errors were encountered:
What are you proposing?
Add support in OSB to benchmark alternative client/server transport protocols. This feature should make it easy to plug in a new alternative client implementation and evaluate it's performance in contrast to the traditional REST OpenSearch python client.
What users have asked for this feature?
The traditional REST API stands out as an opportunity for optimization within OpenSearch and several issues within core propose replacements which aim to cut down on serialization or provide data in more SIMD friendly formats.
Flight/Arrow RFCs:
gRPC/Protobuf RFCs:
What problems are you trying to solve?
It is difficult to evaluate the performance of new client/server transports, often requiring custom scripts, tools, or hacky OSB feature branches. To benchmark the new protocol and API.
What will the developer experience be like?
The complexity of completely abstracting all OSB client operations to provide support for new client/server transports is large and would include a substantial amount of wasted work considering new client/server transports may not support more than a few specialized operations for which they are optimized.
For this feature I would propose new OpenSearch client implementations extend the existing
OSClient
, lightly wrapping the default REST client and cherry picking key operations of theOSClient
interface to intercept and send with the new transport protocol.Adding new client transports to OSB:
Any new OpenSearch python client should mirror
opensearchpy
and be made available to OSB as a package.Enabling and selecting additional transport clients:
Configuration options for new clients may be provided alongside all other client options in the configuration file. The
OsClientFactory
will be responsible for validating and constructing "hybrid" clients as configured by the user and enabled by feature flag.Are there any security considerations?
Security related configuration options, such as TLS, should be configured on a per-client basis through flags/configuration file as they are for the REST client.
What will the user experience be like?
Executing OSB using an alternative client should be possible by adding some additional flags (or same options set in config file):
Are there breaking changes to user experience?
These changes should only be additive and have no impact on the existing OSB configuration options.
Why should it be built? Any reason not to?
It may not be appropriate to require OSB directly manage alternative client implementations. As this issue describes OSB may be further abstracted to support generalized APIs which would likely involve a more general client abstraction to support non OpenSearch APIs. It's possible adding this feature now could be wasted work in light of these proposals.
What will it take to execute?
While the changes to OSB will likely be limited, at time of opening this issue there is no mature client with which to test this change. Framework components for adding/managing new clients can be added but the usefulness of this feature is predicated on a mature client utilizing a new transport protocol.
Any remaining open questions?
No response
The text was updated successfully, but these errors were encountered: