-
Notifications
You must be signed in to change notification settings - Fork 892
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] OpenSearch Dashboard Version Decoupling #5804
Comments
overall, test driven approach is good approach to tackle this decouple challenge with measurable metric to evaluate the result and future effort. It will be great to generate following Feature - Version coverage matrix to help us understand the existing coverage for core feature, and identity those version which feature are broken.
for the solution part, could we add a little bit high level approach how to handle incompatible issue at UI, API, Data tier? e.g. API |
The maintenance of a compatibility matrix of what version of OSD support what version of OS is going to take a lot of effort. Tho I am interested to see if we can extend this further. With OS core having some sort of the version decoupling PR on the way: opensearch-project/OpenSearch#11441, would love to see the level of effort to maintain both of these, and be clear to the users. Also, there are cases where if one OSD version work with one OS version, but plugins are not supporting such version, what will be the solution on that? And are we planning to have a batch of OSD test of multiple versions maintained somewhere so users can always see the current status of the test and support? Thanks. |
We might cross check if we could reuse the thinking process. we want to focus on decouple OSD dependencies on OS at runtime. there could be other decouple like OS + OS Plugins at build time, OS + OS Plugin at runtime? |
Build time might be a bit of stretch at the moment, as a lot of the code is assuming three digit matching + last digit 0 as of now. If we can achieve installation decoupon to start with, then runtime decouple can follow after. |
@wbeckler could you please take a look this RFC if you have a chance. Thanks |
Oh god, PLEASE YES. The minor-version-coupling between dashboards and the back-end opensearch is the single most stupid decision the elastic team ever made. |
@Flyingliuhub you might have already spoken to @AMoo-Miki about this so apologies if its redundant, but this only tests to see if older versions of OS support OSD based on selenium functional tests. A few things this RFC misses out on are:
CC: @AMoo-Miki @manasvinibs since you two were working a cross compatibility framework and the test orchestrator that solves these limitations. Also if you have already discussed this and changed the approach, It might be worth it to capture the current plan here for visibility :) |
@ashwin-pc As this RFC mentioned, we only focus on the vanilla dashboards. We scoped dashboards only, without other plugins. According to our test results, the P0 work is for versions 1.x and 2.x. We saw good results, indicating that the latest vanilla dashboards can support versions 1.x and 2.x OS well. |
build time won't be priority if we could support runtime |
Overview
Decoupling the OpenSearch Dashboard version from the underlying OpenSearch version offers several key benefits, addressing various challenges and enhancing the overall user experience. Here are some statements highlighting the reasons for OpenSearch Dashboard Version Decoupling:
Compatibility Support
Decoupling OpenSearch Dashboards from the backend version promotes compatibility across different versions of OpenSearch and Elasticsearch, making it easier for development, testing, and production environments to coexist without strict version alignment.
Consistent User Experience during Updates
With decoupled versions, users experience a more consistent interface during updates. As OpenSearch Dashboards can be updated independently, users interacting with the dashboard won't be impacted by changes or disruptions in the underlying OpenSearch cluster, contributing to a smoother and more reliable user experience.
Selective Updates and Patching
With version decoupling in OpenSearch Dashboards, maintenance tasks like updates and patches become much easier to handle. The operations team gains the ability to update OpenSearch Dashboards without impacting the entire OpenSearch cluster.
Proposed Solution
To assess the viability of version decoupling for OpenSearch Dashboards, we recommend initiating a test drive. This process involves leveraging all existing functional tests to collect a comprehensive support matrix. This matrix will help us see how well Dashboards work with different versions of OpenSearch or Elasticsearch. By running these tests, we want to find any differences or gaps between the version of OpenSearch Dashboards and OpenSearch/Elasticsearch. This will help us understand which features might need adjustments to work smoothly with different versions.
Our test results will fall into two main categories: passed and failed functional tests. The passing test cases indicate that OpenSearch Dashboards effectively support various versions of OpenSearch and Elasticsearch. This positive outcome demonstrates OpenSearch Dashboards' ability to operate across different OpenSearch and Elasticsearch versions.
On the other hand, failed test cases can be attributed to a variety of reasons. One reason might be that the communication between OpenSearch Dashboards and OpenSearch/ElasticSearch, known as the API, doesn't work well together. Another possible cause is differences in how data is structured (indices field types), making it tricky for OpenSearch Dashboards to handle. Lastly, there could be problems with how things look or how users interact with Discover, Visualization, and Dev Tools - these are known as UI issues. These are the common reasons why tests might not pass.
According to the test results, we will provide a solution for each category. For example, in the case of an API incompatibility issue, it may be that some APIs only exist in a higher version of OpenSearch Dashboards and are not present in the older version. In such cases, we will likely add a condition check to use a common API to achieve the same goal.
For UI incompatibility issues, differences in the user interface (UI) components or layouts between different versions of OpenSearch Dashboards, such as missing UI elements, can occur. New UI elements or components introduced in a higher version may be absent or not supported in an older version, leading to missing features or functionalities. In such cases, we may need to modify the UI codebase to adapt to version-specific changes to ensure a seamless user experience.
Scope
Our testing scope is focus on essential components - Discover, Visualization, and Dev Tools. Third-party plugins will not be included in this phase, allowing us to focus on evaluating the core features of OpenSearch Dashboards for a more targeted assessment of its native capabilities.
We will use the latest OpenSearch Dashboards 2.11 to run functional tests against the selected versions of OpenSearch ('1.0.0', '1.1.0', '1.2.0', '1.3.0', '2.3.0', '2.5.0', '2.7.0', '2.9.0') and Elasticsearch ('7.10').
Execution
We'll use Selenium functional tests to evaluate OpenSearch Dashboards across various major release versions of OpenSearch and Elasticsearch. These tests simulate user interactions, helping us identify and address any issues related to API compatibility, data handling, and user interface interactions. Our goal is to ensure consistent compatibility across different OpenSearch and Elasticsearch versions, informing decisions about the feasibility of version decoupling.
We quickly conducted functional tests using OpenSearch Dashboards 2.11.0 with OpenSearch 1.0.0. The output indicates that currently, version 2.11.0 OpenSearch Dashboards supports the OpenSearch 1.0.0 cluster.
Chrome UI Functional Tests Results so far, the detailed results will come out later on.
OpenSearch Dashboards 2.11.0 and OpenSearch 2.11.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 2.9.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 2.7.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 2.5.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 2.3.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 1.3.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 1.2.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 1.1.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 1.0.0 ✅
Version Coverage Matrix
The following sample demonstrates that we can use the OpenSearch Dashboards 2.11.0's multiple-datasource feature to connect to a 7.10 Elasticsearch cluster.
Index Pattern:
Discover page:
Multiple Datasource Connection Version Compatible so far, the detailed results will come out later on.
Playground Link
OpenSearch Dashboards 2.11.0 and OpenSearch 2.11.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 2.9.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 2.7.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 2.5.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 2.3.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 1.3.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 1.2.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 1.1.0 ✅
OpenSearch Dashboards 2.11.0 and OpenSearch 1.0.0 ✅
OpenSearch Dashboards 2.11.0 and Elasticsearch 7.10 ✅
OpenSearch Dashboards 2.11.0 and Elasticsearch 7.9 ✅
Multiple Data-source Coverage Matrix
FAQ
The text was updated successfully, but these errors were encountered: