[ENH] Backup & Restore initial architecture development #2650
Labels
area:backup-and-restore 💾
All items related to backup and restore
needs: follow-up 📫
Someone needs to get back to this issue or PR
project: JATIC
Work item needed for the JATIC project
type: enhancement 💅🏼
New feature or request
Milestone
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: