DB 이중화
우리가 하나의 서비스를 개발했다고 생각해 보자.
우리가 개발한 서비스가 DB 서버를 하나만 사용하고 있다면 많은 이용자들을 감당하기 어려울 것이다.
많은 이용자가 갑자기 몰려들면 과부하가 발생하고, 결국에는 하나만 있던 DB 서버가 다운되게 된다.
하나의 예시로, 우리가 백화점을 운영한다고 상상해 보자.
해당 백화점의 문이 하나라고 가정하고 사람이 몰릴 때를 상상해 보자.
대충 이런 모습이 나오는데 이용자들이 백화점에 들어가서 여러 서비스를 경험하려면 기다려야 되는 상황이 발생한다.
그럼 이러한 문제를 어떻게 해결할 수 있을까?
생각해 보면 쉽게 해결되는데 그냥 문만 더 달아주면 된다.
문을 더 만들어서 이용자들이 쉽게 들어올 수 있다면 기다리는 시간을 줄일 수 있게 된다.
개발을 하면서 이중화가 필요한 이유가 바로 이러한 예시와 같은 상황을 미리 방지하고자 하는 기술이라고 생각한다.
몇몇의 이용자들은 내가 개발한 서비스를 경험해 보기 위해 기다려줄 수도 있겠지만, 대부분의 사람들은 조금만 지체되면 바로 다른 걸 이용하러 떠나버린다.
DR(Disaster Recovery, 재난 복구)
우리가 개발한 서비스를 여러 이용자들이 사용한다면 그들의 데이터는 우리가 가지고 있게 된다. 그렇다면 우리가 가진다는 것이 그냥 머릿속으로만 가지고 있다는 것일까?
한 5명 정도는 내 머릿속으로 저장할 수 있겠지만 50만 명이라면 가능하지 않다. 서비스를 이용하는 이용자들의 데이터들은 결국 어떠한 물리적인 저장소에 저장되게 된다.
그렇다면 이러한 물리적인 저장소가 과연 안전하다고 할 수 있을까?
전혀 그렇지 않다. 여러 가지 자연재해가 발생하면 어디서, 어떻게 손상될지는 모르는 일이다.
자연재해를 통해서 손상되면 데이터를 복구하는 것이 매우 어렵고 불가능할지도 모른다. 그렇기 때문에 우리는 이러한 재난이 발생했을 경우 어떻게 대처를 할 것인지 재난 복구 계획을 수립해야 한다.
DRS(재난복구 시스템)
재해복구센터라고도 불리며 업무가 중단되었을 경우를 대비하여 주 데이터 센터의 데이터를 백업하거나, 이중화를 통해 재해 발생 시에 중단된 업무를 재개하기 위한 설비를 말한다.
DRS 종류
- Mirror Site
- 주 데이터 센터와 동일한 수준으로 유지하고, 상시 활성화 상태로 실시간 동시 서비스를 유지한다
- 서비스 복구는 즉시 이루어지지만 해당 시스템을 만들기 위한 비용이 많이 든다는 단점이 있다.
- Hot Site
- 주 데이터 센터와 동일한 수준으로 유지하고, 비활성화 상태로 대기 및 문제 발생 시 활성화를 한다.
- 서비스 복구는 수 시간 이내로 이루어지고, 비용도 Mirror Site보다 적다.
- Warm Site
- 중요성이 높은 데이터를 재해복구 시스템에 저장한다.
- 서비스 복구는 수일 이내로 이루어지고, 비용은 Hot Site보다 적다.
- Cold Site
- 최소한의 데이터만 재해복구 시스템에 저장한다.
- 서비스 복구는 수개월 이내로 이루어지고, 비용은 4가지 중에서 제일 적다.
HA(High Availability, 고가용성)
HA(고가용성)은 시스템의 다운 타임을 제거하거나 최소화하여 거의 100% 상시 액세스가 가능하도록 유지하는 능력을 뜻한다.
고가용성을 유지하면 서비스의 신뢰성이 올라가며 많은 사용자들에게 만족스러운 서비스를 제공할 수 있다.
고가용성 솔루션 혹은 서비스의 최종 목표는 파이브 나인스 가용성을 유지하는 것이다.
파이브 나인스(five-nines): 서비스 가용률이 99.999%인 것을 의미한다.
다음 글부터 고가용성 서비스를 설정하기 위한 MySQL 이중화를 하나씩 해볼 예정이다.
Q. 백업과 복구의 차이점이 뭘까?
A. 백업은 데이터 손실 시 사용할 수 있도록 원본 데이터의 복사본을 저장하는 것을 말한다. 또한, 데이터 보호에 대한 접근 방식 중 하나로 조직의 중요한 데이터를 효율적으로 백업해 두어야 한다.
복구는 손실된 데이터를 일부 프로세스에 따라 복원하는 것을 말한다. 데이터가 백업되었어도 여전히 손실이 되어있을 수 있으므로 복구 기술을 사용하여 복구해야 한다.
참고 자료
'DB' 카테고리의 다른 글
Redis - Redis 기초 (0) | 2023.11.18 |
---|---|
Mysql - Replication (1) | 2023.11.13 |
MySQL - View & Index (0) | 2023.11.11 |
데이터베이스 - 인덱스 (0) | 2023.11.10 |
MySQL - SELECT (1) | 2023.11.09 |