The work for this ticket has now hit a POC level. There is some technical debt currently which I will work through resolving along with cleaning up the code but in general the investigation is complete.
h3 h2 . Results The data sync UI will not need to authenticate with the data sync server. The server is currently protected using Keycloak and this will remain to be the case. The UI is currently protected by Openshift oauth and this will also remain the case. Instead, an abstraction at the server level was completed whereby code was removed and incorporated into a new module. This new module will then be used by both the server and the UI to perform actions on the schema. This change allows us to address some current architecture limitations.
* Adds the ability to allow us to try out queries and schemas without publishing them to the server. * Allows the user to query the schema from the UI when the server is protected * Creates a clear distinction between the server and the UI. The UI will be the development environment where the server will be the production environment. * Allows us to unify the models being used. Means we will not have to define our models in two places which is the current situation. * Support schema seeding on the UI.
The new module can be seen here: https://github.com/aerogear/data-sync-gql-core Two PRs incorporating this new module can be seen [here|https://github.com/aerogear/data-sync-ui/pull/135] and [here|https://github.com/aerogear/data-sync-server/pull/98].
h3 h2 . Side Effects
* Increased complexity by introducing a new module. While this is minimal it still needs to be mentioned. Also might not matter as much as we introduce other data sync modules - they could possibly be combined into a single module.
h3 h2 . Technical Debt/Outstanding Work
* The models are not yet aligned * Small issue with using Graphql tools in separate locations * Re-factor of code to incorporate current best-practices * Wait for other investigations to be completed and merged to master before incorporating this change, as the others are bigger. * Include server git history in new component to give better context/timeline. * Investigate circle CI configuration and how/if it might be affected by these changes. |
|