-
Notifications
You must be signed in to change notification settings - Fork 94
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
[ENH] Backup & Restore initial architecture development #2650
Comments
|
This is complete, @viniciusdc just needs to clean up the architecture drawing and post here. |
Below is the general overview of all the service components outlined above; consider keycloak as an example of a A Keycloak backup lifecycle:
The client can then inspect the date directly in the storage location or by reaching the In this example, for a client to retrieve or schedule* a backup, it can (once authenticated) follow two different routes that are chosen based on the goal for such Client
|
completed, the implementation details and specifics of each service are to be handled per #2651 |
Original RFD
Most of the topics presented in this issue serves as a general overview and sumiry of the ideas and discussions originally presented in the RFD#49-Backup-Restore. With a more extended overview of the Restful Interface Approach there exemplified.
Architecture Overview
Nebari's backup-restore service is designed to help Nebari administrators manage backups and restorations, especially during migrations or performing disaster recovery actions. It focuses on the three main services currently available on Nebari that comprehend the general user's data:
Nebari's backup-restore service follows a hexagonal architecture, which enhances maintainability and future expandability. It's composed of the following modules:
adapters
: act as the interface between the Core and external interactions, allowing different ways to interact with the system:core
: the main gateway for all services. It encapsulates all logic present in each lower service component and aggregates it for easier state management in smaller controllers calledmanagers
. The core performs actions such as overall system backup or restoration, lists available backup options and storage options, and provides general information the adapters might require to showcase status properly.services
: Services represent the individual services available on Nebari whose backup and restoration processes are supported. They include, but are not limited to, key cloaks, conda store, and more. Their primary responsibilities are granting access to import/export functionalities for each service and providing ways to handle data conflicts and reconciliation.Reasonings and Considerations
The referenced RFD provides a general overview of the pros and cons of this approach. However, it's essential to highlight the following key points:
This organization's primary focus was to enhance maintainability for Nebari maintainers by concentrating on the components and development within the service's own modules.
When presenting this service to our internal community, it was crucial to consider the requirement for a solution that could operate both within and outside our infrastructure. This dual capability ensures flexibility in the event of a central disaster scenario. Consequently, the internal organization of each service module, particularly the Importers and Exporters, was designed to facilitate the development of custom reconciliation strategies by leveraging the available endpoints.
Given the extensive control this service exerts over the internal workings of a Nebari deployment, security was a primary consideration. This led to integrating a storage manager solution to ensure that data remains within the service, allowing each cloud provider to manage that data using their own security solutions.
Additionally, each service's modular configuration was designed to accommodate specific requirements, such as intrinsic authorization within the target services (e.g., Keycloak, Conda-Store). This approach minimizes the control footprint required by the general adapters, ensuring a more secure and modular system.
The text was updated successfully, but these errors were encountered: