bcgov / bcgov/bcparks-ar-admin

AR Disaster Recovery

Open
#415 1 comment 0 reactions 0 assignees View on GitHub
A&R
Dominant language
TypeScript
Stars
5
Forks
15
PR merge metrics
No merged PRs in 30d

Description

#### Description:

We need to execute on what it means to move/migrate/restore from two different types of backups.

We should implement two backup setups in AWS
- Point in Time Recovery (PITR)
- A Backup Plan in AWS Backup

Point in Time Recovery allows us to restore a database from any specific point in time in the last 35 days, whereas a Backup Plan allows us to create a snapshot from a specific date that AWS will hold for up to a year.

We should also create a script or set of scripts to streamline the restore process from the CLI. These scripts would enable us to backup, restore, and delete tables with in one fell swoop.

Finally, we should have documentation to outline the backup plans in place as well as the procedures/processes for backing up and restoring databases from the CLI.

#### Acceptance Criteria:

- [x] PITR is available for each table in DynamoDB
- [x] A suitable Backup Plan using AWS Backup for the tables in DynamoDB
- [ ] Script or scripts to backup/restore/delete tables using PITR or AWS Backup
- [ ] Sufficient documentation about our disaster recovery process and procedures

#### Development Checklist:

- [x] Set up two types of backups in AWS:
- [x] Enable PITR for each table in DynamoDB
- [x] Enable a Backup Plan in AWS Backup for the tables in DynamoDB
- [ ] Create a script or set of scripts to do the following (from the CLI):
- [ ] Restore a database using a specified time from PITR
- [ ] Restore a database using a backup in AWS Backup
- [ ] Backup a database manually
- [ ] Delete a database manually
- [ ] There should be documentation about the disaster recovery setup and how to run the scripts

#### Dependencies

- Blocked by https://github.com/bcgov/parks-data-register/issues/517
- Blocking

**Relevant documentation as reference**

**Definition of Ready**

- [ ] Acceptance criteria are included
- [ ] Wireframes are included (if applicable)
- [ ] Design / Solution is accepted by Product Owner (if applicable)
- [ ] Dependencies are identified (technical, business, regulatory/policy)
- [ ] Story has been estimated (under 13 pts)

**Definition of Done**
- In progress:
- [ ] Acceptance criteria are tested (Functionality meets the acceptance criteria defined in the ticket)
- [ ] UI meets accessibility requirements
- [ ] Unit tests are written
- [ ] Work is traceable in GitHub
- [ ] PR linked to ticket number
- [ ] If needed/required - Dev adds flag/label to highlight any migration steps necessary prior to PROD deployment
- Code review:
- [ ] Code is peer reviewed and has passed CI/CD tests
- QA:
- [ ] Acceptance criteria are tested (Functionality meets the acceptance criteria defined in the ticket)
- [ ] Code is potentially shippable to the production environment
- [ ] Functional features have been tested and passed by QA
- [ ] UI components tested by designer
- [ ] Code is deployed to PROD when moved to 'done' column (unless requested otherwise by PO)
- PO Review:
- [ ] Acceptance criteria are tested (Functionality meets the acceptance criteria defined in the ticket)
- [ ] Reviewed and approved by Product Owner

#### Notes:
-
-

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the existing AWS/DynamoDB setup and the dependency in issue #517, then locate the repository's CLI entry points and deployment configuration. Define the backup, restore, and delete procedures against the listed acceptance criteria, and document how each procedure is run and verified.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, nodejs, typescript
Domain
cli, cloud, databases, devops
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.