Disaster Recovery
-
회사의 사업 지속이나 재정에 부정적인 영향을 미치는 모든 사건은 재해로 간주된다.
-
재해 복구(DR)는 이러한 재해에 대비하고 재해가 발생할 시 복구하는 작업을 의미한다.
-
재해 복구 유형
- 온프레미스 → 온프레미스: 전통적인 재해 복구, 비용이 많이 듦
- 온프레미스 → AWS 클라우드: 하이브리드 복구
- AWS 클라우드 리전 A → AWS 클라우드 리전 B
-
핵심 용어
- RPO: Recovery Point Objective - 복구 시점 목표
- 얼마나 자주 백업을 실행할지, 시간 상 어느 정도 과거로 되돌릴 수 있는지 결정
- 재해 발생 시 데이터 손실을 얼마만큼 감수할지 설정하는 것
- RTO: Revobery Time Objective - 복구 시간 목표
- 재해 발생 후 복구할 때 사용
![](https://velog.velcdn.com/images/pingu_9/post/016bc29b-dc6f-4438-9bf6-1154e9cdd77d/image.png)
-
RTO - 재해 발생 시점 = 애플리케이션 다운 타임
Disaster Recovery Strategies
- 백업 및 복구
- 파일럿 라이트
- 웜 대기
- 핫 사이트 / 다중 사이트
![](https://velog.velcdn.com/images/pingu_9/post/896f199a-dd80-44cb-9085-a3a83d8a3afa/image.png)
Backup and Restore (High RPO)
![](https://velog.velcdn.com/images/pingu_9/post/9d1913d3-2c16-4c43-ae8a-4e0d096c4f32/image.png)
기업 데이터 센터와 AWS Cloud, S3 버킷이 있다고 가정해보자
- 시간에 따라 데이터를 백업 - AWS Storage Gateway
- 수명 주기 정책을 만들어 비용 최적화 목적 - Glacier
- 일주일에 한 번씩 많은 양의 데이터를 Glacier로 전송 - AWS Snowball
- AWS Cloud를 사용하는 경우 (EBS 볼륨, Redshift, RDS) 정기적으로 스냅샷을 예약하고 백업해두면 스냅샷을 만드는 기간에 따라 RPO가 달라짐
재해가 발생하면 모든 데이터를 복구해야하므로
- AMI를 사용해서 EC2 인스턴스를 다시 만들고
- 애플리케이션을 스핀 업하거나
- 스냅샷에서 RDS, DB, EBS 볼륨, Redshift 등을 바로 복원 및 재생산 가능
- 데이터 복구는 시간이 오래 걸리므로 RTO도 커지지만, 값이 저렴하기 때문에 백업 및 복구 전략을 사용함.
- 중간에서 인프라를 관리할 필요 없이 재해 발생 시 인프라를 재생산할 수 있어 백업 저장 비용 외에는 추가 비용이 발생하지 않음
- 즉, 백업 및 복구는 아주 쉽고 비용이 저렴한 대신 RPO와 RTO가 높음
Pilot Light
- 애플리케이션의 축소 버전이 클라우드에서 항상 실행됨
- 크리티컬 코어 (파일럿 라이트)에 유용함
- 백업 및 복원과 매우 유사함
- 크리티컬 시스템이 이미 가동되어 있기 때문에 백업 및 복원보다 빠름
![](https://velog.velcdn.com/images/pingu_9/post/d6cf746c-fa7c-41bc-9d09-a3b629daa1b3/image.png)
- 크리티컬 DB에서 RDS로 데이터를 계속 복제한다면 언제든 실행할 수 있는 RDS DB를 확보하게 된다.
- 하지만 EC2 인스턴스는 아직 크리티컬 시스템이 아니다.
- 재해가 발생할 경우 Route 53이 데이터 센터 서버에 장애 조치를 허용하여 클라우드에 EC2 인스턴스를 재생산하고 실행하도록 처리한다.
- RDS DB는 이미 준비된 생태이기 때문에 RPO와 RTO가 낮아진다.
Warm Standby
- 시스템 전체를 실행하되 최소한의 규모로 가동해서 대기하는 방법
- 재해 발생 시 프로덕션 로드에 맞게 확장할 수 있음
![](https://velog.velcdn.com/images/pingu_9/post/a003a2b6-7921-465c-93f2-3e70b6f8b961/image.png)
- 역방향 프록시와 애플리케이션 서버, 마스터 DB가 있다.
- 클라우드에서는 실행중인 RDS Slave DB로 데이터 복제가 이루어지고 있다.
- EC2 오토 스케일링 그룹이 최소 용량으로 가동하며 기업 데이터 센터 DB와 소통한다.
- ELB는 준비된 상태이다.
- 재해가 발생하면 Route 53을 사용하여 ELB로 장애 조치 해서 애플리케이션이 데이터를 가져오는 곳을 변경하는 작업도 가능하다.
Multi Site / Hot Site Approach
- 매우 낮은 RTO (몇 분, 몇 초 정도) - 매우 비쌈
- 전체 프로덕션 스케일은 AWS와 온프레미스에서 실행됨
![](https://velog.velcdn.com/images/pingu_9/post/f10de9ca-ed38-4df1-a144-c72fa1fa19ae/image.png)
- 이미 실행중인 핫 사이트가 있기 때문에 Route 53이 기업 데이터 센터와 AWS Cloud에 요청을 라우팅할 수 있다. (active-active 유형 설정)
- 필요하다면 EC2가 RDS Slave DB 장애 조치를 할 수 있지만
- AWS와 온프레미스에서 full 프로덕션 스케일이 실행돼 많은 비용이 발생
- 동시에 장애 조치를 할 준비가 되어 있으므로 다중 데이터센터 유형 인프라를 실행할 수 있어 좋다.
All AWS Multi Region
![](https://velog.velcdn.com/images/pingu_9/post/54cd8a55-bf5c-4d2a-a510-9e41ce1493d1/image.png)
- 아키텍처는 동일
- 다중 리전이며 클라우드 내에 있으므로 Aurora 사용 가능
- Slave로 다른 리전에 복제된 Aurora Global DB도 있음
Disaster Recovery Tips
백업
- EBS 스냅샷, RDS 자동화된 백업 / 스냅샷 등 사용
- S3 / S3 IA / Glacier로의 정기적인 백업, 수명 주기 정책 실행, 교차 리전 복제 가능
- 온프레미스에서 클라우드로 데이터 공유 시 Snowball이나 Storage Gateway 사용
고가용성
- Route53을 사용하여 DNS를 다른 리전으로 마이그레이션
- RDS Multi-AZ, ElastiCache Multi-AZ, EFS, S3
- Direct Connect에서의 복구용 Site to Site VPN
복제
- RDS 복제 (리전간 복제), AWS Aurora, Aurora Global Database
- 온프레미스에서 RDS로의 데이터베이스 복제 시 복제 소프트웨어 사용 가능
- Storage Gateway
자동화
- CloudFormation / Elastic Beanstalk을 사용하여 전체 환경 재생성
- CloudWatch 경보가 실패했을 때 EC2 인스턴스 복구 / 다시 시작
Chaos
- Netflix는 가동중인 EC2를 무작위로 종료하는 "simian-army"를 사용함
DMS – Database Migration Service
- 빠르고 안전하게 DB를 AWS로 마이그레이션하며, 복원성이 좋고 자가 복구 기능을 제공한다.
- 마이그레이션 중에도 원본 DB는 사용 가능
- 동종 (Homogeneous) 마이그레이션: ex. Oracle에서 Oracle로
- 이기종 (Heterogeneous) 마이그레이션: ex. Microsoft SQL Server에서 Aurora로
- CDC(Continuous Data Replication)를 사용한 지속적인 데이터 복제
- DMS를 사용하려면 복제 작업을 수행하기 위해 EC2 인스턴스를 생성해야 함
![](https://velog.velcdn.com/images/pingu_9/post/20875a2a-c95b-4e9e-94ff-13bcbb10a178/image.png)
DMS Sources and Targets
Source
- 온프레미스 & EC2 인스턴스 DB: Oracle, MS SQL Server, MySQL, MariaDB, PostgreSQL, MongoDB, SAP, DB2 등
- Azure: Azure SQL Database
- Amazon RDS: Aurora를 포함한 모든 DB
- Amazon S3
- DocumentDB
Target
- 온프레미스 & EC2 인스턴스 DB: Oracle, MS SQL Server, MySQL, MariaDB, PostgreSQL, MongoDB, SAP 등
- Amazon RDS
- Redshift, DynamoDB, S3
- OpenSearch Service
- Kinesis Data Streams
- Apache Kafka
- DocumentDB & Amazon Neptune
- Redis & Babelfish
만약 소스 DB와 대상 DB가 같은 엔진을 갖고 있지 않을 때에는 AWS Schema ConversionTool (SCT)을 사용해야 한다.
- 데이터베이스의 스키마를 다른 엔진으로 변환함
- ex. OLTP: SQL Server나 Oracle에서 MySQL, PostgreSQL, Aurora로 변환
- ex. OLAP: Teradata나 Oracle에서 Amazon Redshift로 변환
![](https://velog.velcdn.com/images/pingu_9/post/0926476a-8868-4354-9da2-8637543abe5d/image.png)
- 같은 엔진을 쓰는 데이터베이스에는 SCT가 필요하지 않음
- ex. 온프레미스 PostgreSQL → RDS PostgreSQL
- DB 엔진은 여전히 PostgreSQL (RDS는 플랫폼일 뿐)
DMS - Continuous Replication
![](https://velog.velcdn.com/images/pingu_9/post/f1634ae5-8955-47ce-8a11-9fc40b25e3af/image.png)
RDS & Aurora Migrations
RDS & Aurora MySQL Migrations
RDS MySQL에서 Aurora MySQL로의 마이그레이션
- 옵션 1: RDS MySQL의 DB 스냅샷을 생성해서 이 스냅샷을 MySQL Aurora DB에서 복원
- 가동을 중지한 뒤 마이그레이션하기 때문에 다운타임 발생
- 옵션 2: Aurora 읽기 전용 복제본을 RDS MySQL에 생성, 복제 지연이 0이 될 때까지 기다린 후 독립적인 DB 클러스터로 승격 (시간과 비용 발생)
외부 MySQL에서 Aurora MySQL로의 마이그레이션
- 옵션 1:
- Percona XtraBackup을 사용하여 Amazon S3에 파일 백업을 생성
- Amazon S3에서 Aurora MySQL DB를 생성
- 옵션 2:
- Aurora MySQL DB를 생성
- mysqldump를 사용하여 MySQL을 Aurora로 마이그레이션 (S3 방법보다 느릴 수 있음)
두 데이터베이스가 모두 가동 중인 경우 DMS를 사용한다.
RDS & Aurora PostgreSQL Migrations
RDS PostgreSQL에서 Aurora MySQL로의 마이그레이션
- 옵션 1: RDS PostgreSQL의 DB 스냅샷을 생성하여 이 스냅샷을 PostgreSQL Aurora DB에 복원
- 옵션 2: Aurora 읽기 전용 복제본을 RDS PostgreSQL에 생성, 복제 지연이 0이 될 때까지 기다린 후 독립적인 DB 클러스터로 승격 (시간과 비용 발생)
외부 PostgreSQL에서 Aurora MySQL로의 마이그레이션
- 백업을 생성하고 Amazon S3에 저장
- aws_s3 Aurora 확장 기능을 사용하여 백업을 가옴
두 데이터베이스가 모두 가동 중인 경우 DMS를 사용한다.
On-Premise strategy with AWS
- Amazon Linux 2 AMI를 가상 머신 (.iso 형식)으로 다운로드할 수 있음
- VMWare, KVM, VirtualBox (Oracle VM), Microsoft Hyper-V
- EC2에 대한 VM 가져오기 / 내보내기
- 기존 애플리케이션을 EC2로 마이그레이션
- 온프레미스 VM에 대한 재해 복구 리포지토리 전략 생성
- EC2에서 VM을 온프레미스로 내보낼 수 있음
- AWS Application Discovery Service
- 온프레미스 서버에 대한 정보 수집을 통해 마이그레이션 계획 수립
- 서버 사용량 및 종속성 매핑
- AWS Migration Hub로 추적
- AWS Database Migration Service (DMS)
- 온프레미스 → AWS, AWS → AWS, AWS → 온프레미스 복제 허용
- 다양한 데이터베이스 기술과 함께 작동 (Oracle, MySQL, DynamoDB 등)
- AWS Server Migration Service (SMS)
- 온프레미스의 라이브 서버들을 AWS로 증분 복제
AWS Backup
- 완전 관리형 서비스
- AWS 서비스 간의 백업을 중점적으로 관리하고 자동화할 수 있게 도와줌
- 사용자 지정 스크립트나 매뉴얼을 작성할 필요가 없음
- 지원되는 서비스:
- Amazon EC2 / Amazon EBS
- Amazon S3
- Amazon RDS (모든 DB 엔진) / Amazon Aurora / Amazon DynamoDB
- Amazon DocumentDB / Amazon Neptune
- Amazon EFS / Amazon FSx (Lustre 및 Windows File Server)
- AWS Storage Gateway (Volume Gateway) 등
- 리전 간 백업 지원
- 계정 간 백업 지원
-지원되는 서비스에 대한 지정 시간 복구(Point-in-Time Recovery, PITR) 지원
- 온디맨드 및 예약된 백업 지원
- 태그 기반 백업 정책 생성 가능
- 백업 정책에서 백업 플랜 생성
- 백업 빈도 설정 (12시간마다, 매일, 매주, 매월, cron)
- 백업 윈도우 설정
- Cold Storage로의 이전 기간 설정 (절대로 이전하지 않음, 일자, 주간, 월간, 연간)
- 보존 기간 설정 (항상 보존, 일자, 주간, 월간, 연간)
![](https://velog.velcdn.com/images/pingu_9/post/89ebc383-72c6-402a-a50c-ce08a6ad9822/image.png)
AWS Backup Vault Lock
- 저장된 모든 백업에 대해 WORM (Write Once Read Many) 상태를 강제화
- 무심결 또는 악의적인 삭제 작업으로부터 백업을 보호하기 위한 추가적인 보안 기능
- 보존 기간을 단축하거나 변경하는 업데이트로부터 백업을 보호
- 루트 사용자조차도 활성화된 경우에는 백업을 삭제할 수 없음
Application Migration Service (MGN)
AWS Application Discovery Service
- 온프레미스 데이터 센터에 대한 정보 수집을 통해 마이그레이션 프로젝트를 계획할 수 있도록 지원
- 서버를 스캔하고 마이그레이션에 중요한 서버 설치 데이터 및 종속성 매핑에 대한 정보 수집
- Agentless Discovery (AWS Agentless Discover Collector)
- 가상 인벤토리, 구성 및 성능 히스토리 (ex. CPU, 메모리, 디스크 사용량) 수집
- Agent-based Discovery (AWS Application Discovery Agent)
- 시스템 구성, 시스템 성능, 실행 중인 프로세스 및 시스템 간 네트워크 연결에 대한 세부 정보를 수집
- 수집된 데이터는 AWS Migration Hub에서 확인 가능
AWS Application Migration Service (MGN)
온프레미스에서 AWS로 이동하는 가장 간단한 방법 - AWS MGN
- AWS Application Migration Service (MGN)는 CloudEndure Migration의 "AWS 진화"로서, AWS Server Migration Service (SMS)를 대체하는 서비스이다.
- MGN은 애플리케이션을 AWS로 간편하게 마이그레이션하는 Lift-and-shift (리호스팅) 솔루션
- 물리적, 가상화된, 클라우드 기반의 서버를 AWS에서 네이티브로 실행할 수 있도록 변환
- 다양한 플랫폼, 운영 체제, 데이터베이스를 지원
- 최소한의 다운타임과 비용으로 마이그레이션을 수행
![](https://velog.velcdn.com/images/pingu_9/post/97e491a9-d52e-4d37-aefd-e11d03d30cd1/image.png)
Transferring large amount of data into AWS
대량의 데이터를 AWS로 전송하는 방법에 대한 예시로, 200 TB의 데이터를 클라우드로 전송한다고 가정해보자. 인터넷 연결 속도는 100 Mbps이다.
일회용 전송
- 공용 인터넷 또는 Site-to-Site VPN을 통한 전송
- 설치가 빠르고 바로 연결이 가능함
- 200(TB) 1000(GB) 1000(MB) * 8(Mb) / 100 Mbps = 16,000,000초 = 185일
- Direct Connect 1Gbps을 통한 전송
- 초기 설치에 시간이 오래 걸릴 수 있음 (한 달 이상)
- 200(TB) 1000(GB) 8(Gb) / 1 Gbps = 1,600,000초 = 18.5일
- Snowball을 통한 전송
- 병렬로 2~3개의 Snowball 사용
- 전체 전송에는 약 1주일 소요
- DMS와 결합하여 사용
지속적인 복제 / 전송: Site-to-Site VPN이나 DX를 이용하여 DMS나 DataSync와 함께 사용
VMware Cloud on AWS
- 고객이 기존의 온프레미스 데이터 센터를 관리하기 위해 VMware Cloud를 사용하고자 할 때 AWS의 확장 용량을 활용할 수 있는 솔루션
- 사용 사례:
- 컴퓨팅 성능을 확장하여 데이터 센터에서 클라우드 뿐 아니라 스토리지까지 컴퓨팅이 가능해져 VMware 기반 워크로드를 AWS로 마이그레이션 가능
- 프로덕션 워크로드를 여러 데이터 센터 간 실행 가능, 프라이빗, 퍼블릭, 하이브리드 클라우드 환경 모두 가능
- 재해 복구 전략으로 활용
- VMware Cloud on AWS는 AWS와 VMware의 협력을 통해 개발되었으며, 고객은 기존의 VMware 환경과 동일한 도구와 프로세스를 유지하면서 AWS의 유연성과 확장성을 활용할 수 있다. 이를 통해 기존의 VMware 스킬셋을 활용하여 AWS로의 이동을 간소화하고 비용과 관리 부담을 줄일 수 있다.
![](https://velog.velcdn.com/images/pingu_9/post/d835af4a-234f-4e6f-a160-937b2cdfda0e/image.png)