Disaster Recovery & Migrations
- 기업의 사업 지속성이나 재정에 부정적인 영향을 끼치는 어떤 상황을 disaster라고 함
- Disaster recovery (DR)은 disaster에 대비 및 복구를 하는 것을 의미
- Disaster recovery의 종류?
- 온-프레미스 => 온-프레미스: 전통적인 방식의 DR, 매우 비쌈
- 온-프레미스 => AWS 클라우드: 하이브리드 방식
- AWS Cloud Region A => AWS Cloud Region B
- 복구 목표에 대한 두 용어:
- RPO: Recovery Point Objective
- RTO: Recovery Time Objective
RPO and RTO
Disaster Recovery Strategies
- Backup & Restore
- Pilot Light
- Warm StandBy
- Hot Site / Multi Site Approach
Backup and Restore (High RPO)
Pilot Light
- 앱의 작은 버전이 항상 클라우드에서 실행되도록 함
- 핵심 코어에 유용함 (pilot light)
- Backup and Restore와 매우 유사
- Backup and Restore보다 빠름 ~ 주요 critical system이 항상 가동 중이기 때문
Warm Standby
- 전체 시스템을 가동 및 실행시키지만, 최소한의 사이즈로 유지함
- disaster 발생 시에는 프로덕션의 부하에 맞추어 스케일 업을 수행할 수 있음
Multi Site / Hot Site Approach
- 매우 낮은 RTO (몇분 또는 몇초 단위) - 매우 비쌈
- Full Production Scale이 AWS와 온-프레미스로 실행됨
Disaster Recovery Tips
-
Backup
- EBS 스냅샷, RDS 자동화 백업 / 스냅샷 등..
- 정기적인 푸쉬 ~ S3 / S3 IA / Glacier, Lifecycle Policy, Cross Region Replication
- 온-프레미스의 경우: Snowball 똔느 Storage Gateway
-
High Availability
- 리전에서 리전으로 DNS를 마이그레이션하는 경우 Route53을 사용
- RDS Multi-AZ, ElastiCache Multi-AZ, EFS, S3
- Direct Connect에서는 Site-to-Site VPN을 복구(recovery) 용도로 사용
-
Replication
- RDS Replication (Cross Region), AWS Aurora + Global Databases
- 온-프레미스에서 RDS로 Database replication
- Storage Gateway
-
Automation
- CloudFormation / Elastic Beanstalk ~ 새로운 환경에서 새로 생성
- CloudWatch로 alarm이 fail인 경우 EC2 인스턴스를 복구/재부팅
- 커스터마이징된 자동화를 위해 AWS Lambda 함수를 사용
-
Chaos
- Netflix는 무작위로 EC2를 종료시켜버리는 Chaos Monkey를 보유하고 있음
DMS - Database Migration Service
- 빠르고 안전하게 데이터베이스를 AWS로 마이그레이션
- resilient
- self healing
- source 데이터베이스는 마이그레이션 중에도 사용가능한 상태가 유지됨
- 지원:
- Homogeneous migrations(동종 마이그레이션) ~ ex. Oracle to Oracle
- Heterogeneous migrations(이기종 마이그레이션) ~ ex. Microsoft SQL Server to Aurora
- CDC를 통해 지속적인 Data Replication
- 반드시 replication 작업을 수행할 EC2 인스턴스를 생성해야 함
DMS Sources and Targets
- Sources:
- 온-프레미스 & EC2 인스턴스 DB
- Oracle, MS SQL Server, MySQL, MariaDB, PostgreSQL, MongoDB, SAP, DB2
- Azure: Azure SQL Database
- Amazon RDS: Aurora 포함해서 전부
- Amazon S3
- DocumentDB
- 온-프레미스 & EC2 인스턴스 DB
- Targets:
- 온-프레미스 & 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
- 온-프레미스 & EC2 인스턴스 DB
AWS Schema Conversion Tool (SCT)
- 한 엔진에서 다른 종류의 엔진으로 데이터베이스 스키마를 변환
- ex. OLTP: (SQL Server or Oracle) to MySQL, PostgreSQL, Aurora
- ex. OLAP: (Teradata or Orcale) to Amazon Redshift
- 동일한 DB 엔진으로 마이그레이션을 해야하는 상황이라면 SCT를 쓸 이유가 없음
- ex. 온-프레미스 PostgreSQL => RDS PostgreSQL
- RDS는 플랫폼일 뿐, DB 엔진은 여전히 PostgreSQL
DMS - Continuous Replication
RDS & Aurora MySQL Migrations
- RDS MySQL to Aurora MySQL
- 옵션 1: RDS MySQL로부터 DB 스냅샷을 만들고 MySQL Aurora DB에서 복구
- 옵션 2: RDS MySQL로부터 Aurora Read Replica를 만들고, replication lag이 0이 되었을 때, 이를 자체 DB 클러스터로 승격시킴 (시간, 비용 추가)
- 외부의 MySQL to Aurora MySQL
- 옵션 1:
- Percona XtraBackup으로 S3에서 파일 백업을 생성
- S3로부터 Aurora MySQL DB를 생성
- 옵션 2:
- Aurora MySQL DB를 생성
- mysqldump 유틸을 사용하여 MySQL을 Aurora로 마이그레이션 (S3를 통한 방법보다 느림)
- 옵션 1:
- 만약 양측의 DB가 모두 실행 및 구동 중이라면 DMS를 사용
RDS & Aurora postgreSQL Migrations
- RDS PostgreSQL to Aurora PostgreSQL
- 옵션 1: RDS PostgreSQL로부터 DB 스냅샷을 만들고 PostgreSQL Aurora DB에서 복구
- 옵션 2: RDS PostgreSQL로부터 Aurora Read Replica를 만들고, replication lag이 0이 되었을 때, 이를 자체 DB 클러스터로 승격시킴 (시간, 비용 추가)
- 외부의 PostgreSQL to Aurora PostgreSQL
- 백업을 만들고 S3에 넣음
- aws_s3 Aurora 익스텐션으로 이를 가져옴
- 만약 양측의 DB가 모두 실행 및 구동 중이라면 DMS를 사용
On-Premise Strategy with AWS
- Amazon Linux 2 AMI를 VM으로 다운로드 할 수 있음 (.iso 포맷)
- VMWare, KVM, VirtualBox (Oracle VM), Microsoft Hyper-V
- VM Import / Export
- 기존 애플리케이션을 EC2로 마이그레이션
- 온-프레미스 VM에 사용하기 위해 DR(Disaster Recovery) repo를 생성하는 전략
- EC2에서 온-프레미스로 VM을 export할 수도 있음
- AWS Application Discovery Service
- 마이그레이션 계획을 위해 온-프레미스 서버에 대한 정보를 수집
- 서버 사용률 및 종속성 매핑
- AWS Migration Hub로 트래킹
- AWS Database Migration Service (DMS)
- 온-프레미스 => AWS, AWS => AWS, AWS => 온-프레미스 복제
- 다양한 DB 엔진과 호환 (Oracle, MySQL, DynamoDB, etc...)
- AWS Server Migration Service (SMS)
- 온-프레미스의 라이브 서버에서 AWS로의 증분 복제 (incremental replication)
AWS Backup
- 완전 관리형 서비스
- AWS 서비스들의 백업을 중앙 관리 및 자동화
- 커스텀 스크립트를 생성하거나 수동으로 처리해야할 필요가 없음
- 지원 서비스:
- EC2 / EBS
- S3
- RDS (모든 엔진 지원) / Aurora / DynamoDB
- DocumentDB / Neptune
- EFS / FSx (Lustre & Windows File Server)
- AWS Storage Gateway (Volume Gateway)
- cross-region 백업 지원
- cross-account 백업 지원
- 지원 서비스에 대한 PITR(Point-In-Time Recovery) 지원
- On-Demand & Scheduled backup
- Tag-based backup 정책
- Backup Plan이라는 이름의 백업 정책 생성
- 백업 주기 (매 12시간마다 / 매일 / 매주 / 매월 / cron 표현식 사용)
- 백업 윈도우
- Cold Storage로 전환 (Never / Days / Weeks / Months / Years)
- 보존 기간 (Always / Days / Weeks / Months / Years)
AWS Backup Vault Lock
- AWS Backup Vault에 저장한 백업들에 대해 WORM (Write Once Read Many) 상태를 강제
- 백업한 내용을 다음으로부터 보호하기 위한 추가 레이어:
- 의도치 않거나, 악의적인 삭제 작업
- 보존 기간을 더 짧게 하거나 변경하는 업데이트
- 이것이 활성화된 경우, 심지어 루트 이용자도 백업을 삭제할 수 없게 됨
AWS Application Discovery Service
-
온-프레미스 데이터 센터에 대한 정보를 수집함으로써 프로젝트 마이그레이션을 계획
-
서버 사용률(server utilization)과 종속성 매핑은 마이그레이션에 있어 중요함
-
Agentless Discovery (AWS Agentless Discovery Connector)
- VM 인벤토리, 설정, 성능 히스토리 (CPU / 메모리 / 디스크 사용량)
-
Agent-based Discovery (AWS Application Discovery Agent)
- 시스템 구성, 시스템 성능, 실행 프로세스, 시스템 간의 네트워크 연결 세부사항
-
결과 데이터는 AWS Migration Hub로 볼 수 있음
AWS Application Migration Service (MGN)
- AWS SMS(Server Migration Service)를 대체하는 ClodEndure Migration의 AWS 버전
- 애플리케이션을 AWS로 마이그레이션하는 작업을 간소화하는 Lift-and-Shift(rehost) 솔루션 서비스
- 물리적/가상/클라우드 서버들을 AWS에서 네이티브하게 실행되도록 변환해줌
- 넓은 범위의 플랫폼, OS, 데이터베이스를 지원
- 최소한의 downtime, 낮은 비용
Transferring large amount of data into AWS
- 사례:
- 클라우드로 200TB의 데이터를 전송하려고 함
- 현재 100Mbps의 인터넷 연결을 보유
- Over the internet / Site-to-Site VPN:
- 즉시 설정 가능
- 200(TB)*1000(GB)*1000(MB)*8(Mb)/100Mbps = 16,000,000s = 185일
- Over direct connect 1Gbps:
- 한번 설정에 많은 시간이 걸림 (1달 이상)
- 200(TB)*1000(GB)*8(GB)/1Gbps = 1,600,000s = 18.5일
- Over Snowball:
- 2 ~ 3개의 Snowball을 병렬적으로 받음
- E2E 전송에 약 1주일 소요 (제일 빠름)
- DMS와 함께 사용할 수 있음
- 지속적인(on-going) 복제 / 전송의 경우: Site-to-Site VPN 또는 DX 또는 DMS 또는 DataSync
VMware Cloud on AWS
- 일부 고객들은 VMware Cloud를 사용해서 본인들의 온-프레미스 데이터 센터를 관리하고 싶어함
- 데이터 센터 용량을 AWS로 확장하려고 하지만, 여전히 VMware Cloud 소프트웨어의 사용은 유지하고 싶은 경우?
- VMware Cloud on AWS를 사용하면 됨!
- 사례
- VMware vSphere 기반의 워크로드를 AWS로 마이그레이션하고 싶은 경우
- 프로덕션 워크로드를 VMware vSphere 기반의 private/public/hybrid 클라우드 환경으로 실행하고 싶은 경우
- 재해 복구 전략을 갖고자 하는 경우