초코딩(chocoding)

데이터 베이스 복제 (Replication) / 데이터 베이스를 복제하는 이유 본문

카테고리 없음

데이터 베이스 복제 (Replication) / 데이터 베이스를 복제하는 이유

sweetychocoding 2024. 5. 8. 10:44
728x90

데이터베이스 사용 및 운영에서 가장 중요한 두 요소

-> 확장성 / 가용성

 

확장성 : 대용량 트래픽을 안정적으로 처리하기 위해 서버 확장

가용성 : 사용자가 언제든지 안정적인 서비스를 이용할 수 있는 것

 

이 확장성과 가용성을 얻기 위해 일반적으로 사용되는 기술 중 하나가 복제이다

 

이미지 출처 : https://velog.io/@ayoung0073/DB-replication

 

그럼 복제를 하는 이유는 무엇일까?

 

1. 스케일 아웃

서비스에 사용자 유입이 증가해서 부하가 늘어나게 된다면, 서버 사양을 높여서 해결할 수 있다.

하지만 서버의 사양에는 한계가 존재한다. 그렇기 때문에 동일한 데이터를 가진 db 서버를 두어 쿼리 요청을 분산시키는 것이다. 이렇게 서버를 늘려 부하를 분산시키는 방법을 스케일 아웃이라고 한다.

 

2. 데이터 백업

db 서버에서는 데이터의 손실이 언제든 발생할 수 있으므로 데이터의 주기적인 백업은 중요하다. 데이터의 손실이 생기면 서비스 운영의 치명적 손실이 일어날 수 있기 때문이다.

데이터 백업은 보통 데이터가 저장된 db 서버 내에서 진행이 되는데, 이 경우 백업 프로그램과 dbms는 서버의 자원을 공유해서 사용하게 된다. 그렇게 때문에 이 백업 작업으로 인해 dbms에서 실행 중인 쿼리들이 영향을 받을 수 있다. 그 말은 즉, 소스 서버에서 백업을 진행하면 처리 속도가 느려지는 등 서비스에 문제가 갈 확률이 높다는 말이다.

 

따라서 우리는 복제를 할 때 레플리카 서버를 구축하고 데이터 백업을 이 곳에서 진행하게 된다. 그러면 소스 서버의 데이터 접근 및 조작에 문제가 갈 확률도 적고, 또 소스 서버에 문제가 생겼을 경우 레플리카 서버를 소스 서버로 승격시켜 대체 서버의 역할도 할 수 있게 된다.

 

3. 데이터 분석

db 서버에는 보통 서비스 로직 처리를 위한 쿼리가 들어오지만, 새로운 비즈니스 모델을 발굴하기 위한 분석용 쿼리를 사용할 수도 있을 것이다. 하지만 분석용 쿼리는 보통 대량의 데이터를 조회하거나, 집계 연산을 사용하는 등 무거운 작업을 수행하는 경우가 대부분이다. 따라서 분석용 쿼리는 레플리카 서버로 전송하도록 하면서 서비스 로직을 처리하는 db 서버에 영향을 주지 않도록 할 수 있다.

 

4. 데이터의 지리적 분산

어플리케이션 서버와 db 서버는 지리적으로 가까울 수도, 멀 수도 있을 것이다. 두 서버의 통신 시간은 떨어진 거리에 비례하게 된다. 어플리케이션 서버와 지리적으로 먼 해당 국가에 복제 db 서버를 둔다면 응답 속도를 개선할 수 있다.

728x90