DynamoDB에서의 백업

웹 애플리케이션을 구동하는 데이터베이스를 운영할 때 중요한(그러나 종종 간과되는) 측면 중 하나는 백업입니다. 이번 장에서는 DynamoDB 테이블에 대한 백업을 구성하는 방법을 살펴보겠습니다.

우리의 데모 노트 앱에서는 사용자의 모든 노트를 저장하기 위해 DynamoDB 테이블을 사용하고 있습니다. DynamoDB는 주어진 리전 내에서 데이터를 세 개의 다른 시설에 복제하여 높은 수준의 데이터 가용성과 내구성을 달성합니다. 그러나 DynamoDB는 데이터 내구성에 대한 SLA(서비스 수준 계약)를 제공하지 않습니다. 이는 데이터베이스 테이블을 백업해야 한다는 것을 의미합니다.

먼저 DynamoDB에서 백업이 어떻게 작동하는지 간단히 알아보겠습니다.

DynamoDB의 백업

DynamoDB에는 두 가지 유형의 백업이 있습니다:

  1. 주문형 백업(On-demand backups)

    이 방식은 DynamoDB 테이블의 전체 백업을 주문형으로 생성합니다. 장기 데이터 보존 및 아카이빙에 유용합니다. 백업은 테이블이 삭제되더라도 유지됩니다. 백업을 사용해 다른 테이블 이름으로 복원할 수 있으며, 이를 통해 테이블 복제에 활용할 수 있습니다.

  2. 특정 시점 복구(Point-in-time recovery)

    이 유형의 백업은 특정 시점으로 복구를 수행할 수 있게 해줍니다. 실수로 인한 쓰기 또는 삭제 작업으로부터 데이터를 보호하는 데 매우 유용합니다. 예를 들어, 테이블 내 데이터를 변환하는 스크립트를 실행했는데 실수로 데이터가 삭제되거나 손상된 경우, 지난 35일 동안의 어느 시점으로든 테이블을 복원할 수 있습니다. DynamoDB는 테이블의 증분 백업을 유지하여 이를 가능하게 합니다. 이는 자동으로 수행되므로, 주문형 백업을 생성하거나 유지, 스케줄링할 필요가 없습니다.

이제 두 가지 백업 유형을 어떻게 사용하는지 살펴보겠습니다.

주문형 백업

테이블로 이동한 후 Backups 탭을 클릭하세요.

Backups 탭 클릭 스크린샷

그리고 Create backup을 클릭하세요.

DynamoDB 테이블 백업 생성 스크린샷

백업 이름을 지정하고 Create를 클릭하세요.

DynamoDB 테이블 백업 이름 지정 스크린샷

이제 새로 생성된 백업을 확인할 수 있습니다.

새로운 DynamoDB 테이블 백업 스크린샷

백업 복원

백업을 복원하려면 백업을 선택하고 백업 복원을 클릭하세요.

DynamoDB 테이블 백업 복원 선택 스크린샷

여기서 복원할 새 테이블의 이름을 입력하고 테이블 복원을 클릭하세요.

DynamoDB 테이블 백업 복원 스크린샷

테이블 크기에 따라 시간이 걸릴 수 있습니다. 하지만 백업에서 새 테이블이 생성되는 것을 확인할 수 있습니다.

백업에서 생성된 새 DynamoDB 테이블 스크린샷

DynamoDB는 주문형 백업 생성과 복원을 쉽게 할 수 있게 해줍니다. 주문형 백업에 대해 더 알아보세요.

특정 시점 복구(Point-in-Time Recovery)

특정 시점 복구를 다시 활성화하려면 백업 탭으로 이동하세요.

백업 탭으로 이동하는 스크린샷

그런 다음 특정 시점 복구 섹션에서 활성화를 클릭하세요.

DynamoDB 특정 시점 복구 활성화 스크린샷

이 설정에 추가 요금이 적용된다는 알림이 표시됩니다. 확인을 위해 활성화를 클릭하세요.

DynamoDB 특정 시점 복구 활성화 확인 스크린샷

특정 시점으로 복원

활성화되면 특정 시점으로 복원을 클릭하여 이전 시점으로 복원할 수 있습니다.

DynamoDB 특정 시점 복원 스크린샷

여기서 복원할 새 테이블의 이름을 입력하고 복원할 시간을 선택할 수 있습니다.

DynamoDB 특정 시점 복원 선택 스크린샷

그리고 테이블 복원을 클릭합니다.

DynamoDB 테이블 특정 시점 복원 선택 스크린샷

새 테이블이 복원되는 것을 확인할 수 있습니다.

새로 복원된 DynamoDB 테이블 특정 시점 스크린샷

특정 시점 복원에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

결론

위에서 설명한 두 가지 타입을 고려할 때, 특정 시점 복구(Point-in-time recovery)를 활성화하고 장기적인 주문형 백업(On-demand backups) 일정을 유지하는 것이 좋은 전략입니다. 주문형 백업 일정을 관리하는 데 도움을 줄 수 있는 여러 플러그인과 스크립트가 있으며, 여기 우리 독자 중 한 명이 만든 예제가 있습니다: https://github.com/UnlyEd/serverless-plugin-dynamodb-backups.

또한, DynamoDB의 백업 및 복원 작업은 테이블 성능이나 가용성에 영향을 미치지 않는다는 점도 주목할 만합니다. 활성 사용자에게 성능 저하를 일으키는 긴 백업 프로세스에 대해 걱정할 필요가 없습니다.

따라서 여러분의 애플리케이션에서 DynamoDB 테이블에 대한 백업을 꼭 설정하세요.