IDC 이중화 구성으로 DR 하기 + Kafka

946 단어·2 분·원문(.md)

들어가기 전 용어 정리하기

  • IDC(Internet Data Center)의 준말로, 인터넷(Internet) 연결의 핵심이 되는 서버(Server)를 한 데 모아 집중시킬 필요가 있을 때 설립하는 시설이다.
  • DR(Disaster Recovery)의 재해 상황에 IDC에 장애가 났을때 시스템을 빠르게 복구하는 것을 말한다.

이중화를 통해서 IDC에 재해 상황(혹은 시스템 관리자 실수 등으로) 장애가 발생했을 때, 대처를 해볼 수 있다.

만약 딱 하나뿐인 IDC에 장애가 나게 된다면, 되살릴때까지 아무 서비스를 이용할 수 없으므로 downtime이 길어질수록 매우 치명적일 것이다.

그래서 이중화는 이런 문제를 해결하기 위해 IDC와 같은 서버 환경을 두 개로 늘려 운영하는 것인데 운영 방식은 active-stanby, active-active가 존재한다.

active-standby 구성은 보통 장애가 발생했을때 standby 서버를 올려 장애를 복구하는 방식으로 동작한다.

그렇기 때문에 active idc가 장애가 나지 않는다면 standby는 active로 전환되지 않는다.

그렇지만, active standby구조에서 active에 장애상황이 잦지 않다면(보통 그리고 평범한 장애들은 active내에서 처리할 메커니즘들이 가득할테니), standby가 장애상황이 발생해도 제대로 active되지 않는 경우가 있을 수 있다.

만약 실시간성이 중요하고 downtime을 최소화해야하는 애플리케이션이라면 active active로도 구성해볼 수 있을 것이다.

예시 #

예시로 kafka와 같은 데이터 스트리밍 플랫폼을 이중화한다고 해보자. 증권 시스템, 주식 정보같은 실시간 정보들은 장애가 발생하게 되어 다운타임이 늘게 된다면, 어떻게 될까? 상상만해도 끔찍하다.

그렇기에 active-active 구성을 통해 idc1, idc2가 서로의 데이터들을 미러링하고 Offset을 sync하게 된다면, 이벤트를 produce하는 부하분산까지 이점을 얻을 수 있을 것이다. 여기서 데이터를 conusme하는 메커니즘은 하나의 인스턴스만 진행하는 것이 좋다. produce된 토픽들은 같기때문에 consume까지 두대에서 한다면 같은 데이터를 처리하는 연산이 거의 두 배가 될 수 있기 때문이다.

그리고 idc1 장애 발생시에 idc2는 작동하고 있으므로 가용성에도 매우 큰 이점이 있다.

그렇지만 active, active 구성일때의 데이터의 일관성을 맞추는 작업은 매우 어렵고 비용이 든다.
그렇기 때문에 적절한 스트리밍 데이터 관리 자동화 시스템이나, 모니터링, 알림 시스템을 구축해 관리해야한다.

Back-End/backend/dr.md