AWS 서비스들의 백업과 복구를 효율적으로 관리하는 AWS Backup에 대하여

AWS 서비스의 백업 및 복구를 한 곳에서 효율적으로 관리하게 해주는 AWS Backup에 대한 글입니다.
2021.08.26

클래스메소드의 이수재입니다.
지금까지 EC2나 RDS의 백업 및 복구를 위해 항상 해당 서비스의 콘솔이나 CLI를 이용하여 스냅샷을 생성하여 관리해왔습니다.
이번에 AWS Backup을 사용하게 되어 공부한 내용을 공유하고자 합니다.

AWS Backup

AWS Backup을 사용하면 AWS 서비스에 대한 데이터 보호를 중앙 집중화하고 자동화할 수 있습니다. AWS Backup은 정책을 기반으로 대규모 데이터 보호를 간편하고 비용 효율적으로 수행할 수 있는 완전관리형 서비스입니다.

인프라의 고가용성을 유지하기 위해 백업 및 복구 대책을 준비하는 것은 필수입니다.
AWS의 각 서비스들도 서비스에 맞는 백업 기능을 제공하고 있습니다.
각 서비스들의 백업 기능을 CloudWatch와 연계하여 관리하는 것도 하나의 방법이지만 전체적인 현황을 파악하기 힘들 뿐만 아니라 체크하지 못하고 놓쳐버리는 부분도 있기 마련입니다.
AWS Backup은 이러한 백업 및 복구 기능을 한 서비스로 집중화하여 보다 간편하게 현황을 파악하고 관리할 수 있도록 해주는 서비스입니다.

작동 방식은 다음과 같습니다.

aws-backup-image

(출처 : AWS Backup 공식페이지)

현재 지원하는 서비스들은 다음과 같습니다.

  • Amazon FSx
  • Amazon EFS
  • Amazon DynamoDB
  • Amazon EC2
  • Windows VSS (Volume Shadow Copy Service) on EC2
  • Amazon EBS
  • Amazon RDS
  • Amazon Aurora
  • AWS Storage Gateway (Volume Gateway)

단어 설명

백업 계획

백업 설정을 정의하는 단위입니다.
백업 규칙, 리소스, 백업 계획의 태그 등으로 구성되어 있습니다.

  • 백업 규칙
    • 백업의 일정 등 백업에 관한 설정을 합니다. 하나의 백업 계획에 여러 백업 규칙을 설정할 수 있습니다.
  • 리소스
    • 현재 백업 계획을 적용할 리소스를 설정합니다. 리소스를 선택하거나 특정 태그를 설정하는 것도 가능합니다.
  • 백업 계획의 태그
    • 말 그대로 백업 계획 자체의 태그입니다.

백업 볼트

백업 볼트 는 백업 을 저장하고 구성하는 컨테이너입니다.
실제로 각 서비스의 백업은 서비스별로 분산되어 있으므로 볼트는 그것을 논리적으로 그룹화하는 도구로서의 역할을 가집니다.

무엇을 할 수 있을까?

AWS Backup을 이용함으로써 다음과 같은 작업이 가능해집니다.

자동 백업 일정 및 보존 관리

AWS Backup에서는 백업 계획이라는 백업 정책을 설정하여 백업 규칙을 활용하여 백업 요구 사항을 정의할 수 있습니다.
그리고 대상이 되는 리소스를 직접 선택하거나 태그를 통하여 할당할 수 있습니다. 이러한 백업은 백업 볼트에 저장되어 관리하게 됩니다.
이를 통해 백업의 일정을 관리하고 암호화된 볼트를 이용하여 안전하고 효율적으로 백업을 관리할 수 있습니다.

중앙 집중식 백업 모니터링

각 백업 작업은 Cloudwatch 및 EventBridge를 이용하여 매트릭스와 이벤트를 모니터링 할 수 있습니다.

수명 주기 관리 정책

저비용 콜드 스토리지 계층에 백업을 저장하여 백업 스토리지 비용을 최소화하면서 규정 준수 요구 사항을 충족할 수 있습니다.
정의한 일정에 따라 자동으로 웜 스토리지에서 콜드 스토리지로 백업을 전환하는 수명 주기 정책을 구성할 수 있습니다.

다양한 백업 옵션

각 백업은 볼트에 저장 시 다른 리전의 볼트에 교차로 백업할 수 있습니다.
이 기능을 통하여 리전에 문제가 발생하였을 때 다른 리전에서 간편하게 새로운 리소스의 실행이 가능합니다.

또한 AWS Organizations 내의 모든 AWS 계정에서 백업을 관리할 수 있습니다.
교차 계정 관리를 통해 백업 정책을 사용하여 조직 내 AWS 계정 전체에 백업 계획을 적용할 수 있습니다.

백업 볼트의 데이터 보호

AWS Backup은 백업을 소스 인스턴스와 안전하게 분리하는 백업 볼트에 백업을 저장합니다.
그리고 각 볼트는 자동으로 KMS를 이용하여 암호화 됩니다.
단, 모든 옵션에서 항상 암호화를 보장하지는 않습니다.
자세한 내용은 공식 문서를 참고해주세요.

요금

AWS Backup에서는 해당 달에 사용한 백업 스토리지의 양과 복원한 백업 데이터의 양에 대해서만 비용을 지불하면 됩니다. 최소 비용이나 설정 비용은 없습니다.

AWS Backup 스토리지 요금은 백업 데이터가 사용하는 스토리지 공간의 양을 기준으로 책정됩니다. AWS 리소스의 첫 번째 백업의 경우 전체 데이터 사본이 저장됩니다.
각 증분 백업의 경우 AWS 리소스에서 변경된 부분만 저장됩니다.
따라서 백업만을 한다면 스토리지 비용만이 청구되지만 복원을 한다면 한 달에 청구되는 복원 양은 해당 달에 복원된 데이터 양을 기준으로 합니다.
한 달에 복원된 데이터는 GB로 측정되며, 해당 달에 수행된 모든 복원 작업에 대한 데이터의 합계를 나타냅니다.

자세한 요금은 공식 사이트를 참고해주세요.

설정 해보기

간단하게 다음과 같은 일정을 가진 백업 계획을 생성해보겠습니다.

  • 백업 계획의 이름은
  • 평일 17시에 백업
  • 백업 데이터는 7일간 유지
  • 대상은 EC2와 RDS
  • RDS는 연속 백업
  • 백업 볼트는 2021Backup을 지정

백업 계획 생성

대시 보드에서 백업 계획을 생성합니다.
백업 계획은 AWS 에서 제공하는 템플릿을 사용하거나 json으로도 작성할 수 있습니다.
이번엔 유저가 모든 것을 설정하는 [새 계획 수립]으로 계획을 생성하겠습니다.

  1. AWS Backup 콘솔에서 대시보드에 들어갑니다.
  2. [백업 계획 생성]을 클릭하고 [새 계획 수립]을 클릭합니다.
  3. 이미지와 같이 값을 입력합니다.
    일정은 UTC 시간이니 서울 리전이라면 예정 시간에서 9시간을 뺀 값을 기입해주세요.
  4. [새 백업 볼트 생성]을 클릭하여 이미지와 같이 값을 입력합니다.
    사전에 별도의 암호화 키를 생성하여 사용하여도 됩니다.
  5. 계획을 생성하고 생성을 확인합니다.

리소스 할당

생성한 백업 계획의 대상이 되는 리소스의 설정이 필요합니다.

  1. 생성한 백업 계획을 클릭하여 상세한 내용을 확인합니다.
  2. [리소스 할당]을 클릭하여 대상 리소스를 선택합니다.
    리소스를 직접 선택하거나 태그로 리소스를 지정할 수 있습니다.
    저는 EC2와 RDS에 해당 태그를 지정해두었기 때문에 태그로 지정하도록 하겠습니다.
  3. 리소스를 할당한 후 추가되었는지 확인합니다.

이후 지정한 시간에 작성이 되는지 확인합니다.

이 외에

이렇게 백업 계획을 설정하면 설정한 리소스의 자체 백업과 AWS Backup의 백업의 중복이 Opt-in 옵션을 통하여 방지됩니다.
현재의 Opt-in 옵션을 확인하려면 AWS Backup 콘솔의 설정에 들어가시면 확인하실 수 있습니다.

그리고 Dynamo DB의 백업에선 온 디맨드 백업 및 복원 " 이 수행되는 형태입니다.
따라서 아래의 설정은 복원되지 않고 복원 후 다시 설정이 필요하다는 점을 주의헤주세요.

  • Auto scaling policies
  • IAM policies
  • Cloudwatch metrics and alarms
  • Tags
  • Stream settings
  • (Time to Live TTL) settings

마치며

여러 리소스의 백업을 한 곳에서 관리할 수 있어서 상당히 편하다고 생각하였습니다.
특히 기존의 백업이었다면 여러개의 리소스에 결과의 모니터링을 설정해야 했지만 AWS Backup에서는 이 과정이 줄어들어 편했습니다.
모니터링 방법은 공식 문서를 참고해주세요.

긴 글 읽어주셔서 감사합니다.
내용 피드백 및 오탈자는 언제나 환영합니다. must01940지메일 로 보내주시면 감사드립니다!