안녕하세요.
업무를 수행하다 보면 시스템의 가용성과 연속성을 보장하기 위한 인프라 아키텍처 설계를 긴밀하게 논의하게 됩니다.
그 중에서도 가장 흔히 비교되는 전통적인 HA(Active-Standby) 구조와 Oracle RAC(Active-Active) 구조의
핵심 차이점과 작동 원리를 정리합니다.
실무 설계 검토 시 명확한 기준을 제시하는 데 도움이 되기를 바랍니다.
1. 개념 정의
① HA (High Availability, 고가용성) 구조
- 정의: 시스템이 장애 없이 오랜 기간 지속해서 정상 가동될 수 있도록 하는 모든 아키텍처적 지향점을 뜻합니다.
- 실무적 의미: 일반적으로 RDBMS 환경에서 HA라고 하면 OS 레벨의 클러스터웨어(예: IBM HACMP, HP Serviceguard, Veritas Cluster Server 등)를 이용한 Active-Standby(주-예비) 형태의 이중화 구조를 의미하는 경우가 많습니다.
② Oracle RAC (Real Application Clusters)
- 정의: Oracle 사가 독자적으로 개발한 공유 디스크 기반의 데이터베이스 클러스터링 기술입니다.
- 실무적 의미: 여러 대의 서버(Node)가 하나의 동일한 물리 데이터베이스(Storage)를 공유하며, 모든 서버가 동시에 활성화되어 서비스를 처리하는 Active-Active(주-주) 구조를 의미합니다.
2. 핵심 아키텍처 차이점 비교
두 구조의 결정적인 차이는 "두 대의 서버가 동시에 하나의 데이터에 접근하여 서비스를 처리할 수 있는가?"와 "장애 조치(Failover) 시 데이터 중단 시간이 발생하는가?"에 있습니다.
① 데이터 처리 방식 (Active 상태)
- 전통적 HA (Active-Standby): 평소에는 Active 서버 1대만 스토리지를 마운트하여 서비스를 처리합니다. Standby 서버는 대기 상태로 유지되며 데이터베이스가 켜져 있지 않습니다.
- Oracle RAC (Active-Active): 2대 이상의 서버가 물리 디스크를 공유(Shared Disk)하며 동시에 데이터베이스 인스턴스를 기동합니다. 사용자는 어떤 서버로 접속하든 동일한 데이터를 조회하고 수정할 수 있어 부하 분산(Load Balancing)이 자연스럽게 이루어집니다.
② 장애 발생 시 조치 방식 (Failover)
- 전통적 HA (Active-Standby): Active 서버 장애 시, Standby 서버가 스토리지 소유권을 넘겨받고(Volume Takeover), IP를 전환한 뒤, 데이터베이스 엔진을 처음부터 부팅(Startup)하는 과정을 거칩니다. 이 과정에서 반드시 몇 분간의 서비스 중단(Downtime)이 발생합니다.
- Oracle RAC (Active-Active): 1번 서버가 죽더라도 2번 서버는 이미 켜져 있고 데이터베이스를 서비스 중인 상태입니다. 죽은 서버의 세션만 살아있는 서버로 즉시 이동하므로 사용자는 단 몇 초간의 지연(Failover)만 느낄 뿐 서비스가 끊기지 않습니다.
③ 데이터 동기화와 캐시 퓨전 (Cache Fusion)
- 전통적 HA: 데이터를 동기화할 필요가 없습니다. 한 번에 한 서버만 디스크를 쓰기 때문입니다.
- Oracle RAC: 여러 서버가 동시에 같은 데이터를 수정하려 하면 데이터 정합성이 깨질 수 있습니다. Oracle은 이를 해결하기 위해 서버 간 고속 전용 네트워크(Interconnect)를 통해 메모리(SGA) 상에서 데이터를 주고받는 캐시 퓨전(Cache Fusion) 기술을 사용합니다. 디스크 I/O를 거치지 않고 메모리 간 동기화를 수행하여 병목을 최소화합니다.
3. 요약 및 비교표
| 비교 항목 | 전통적 HA (Active-Standby) | Oracle RAC (Active-Active) |
| 운영 방식 | 1대 운영, 1대 대기 | 모든 서버 동시 운영 (2대 이상 확장 가능) |
| 부하 분산 | 불가능 (대기 서버 자원 낭비) | 가능 (동시 처리로 성능 확장 가능) |
| Failover 시간 | 수 분 소요 (DB 재부팅 및 복구 시간 필요) | 수 초 소요 (이미 기동된 서버로 세션 이동) |
| 스토리지 연결 | 한 번에 한 서버만 마운트 가능 | 모든 서버가 동시에 공유 마운트 |
| 구축 비용 | 상대적으로 저렴 (표준 OS 기능 활용) | 매우 고가 (Oracle RAC 라이선스 필요) |
실무용 아키텍처 가이드
두 구조의 차이점이나 선택 기준을 묻는다면 기술적 메커니즘을 엮어 아래와 같이 정제된 언어로 답변하시는 것이 좋습니다.
Q. 전통적인 HA 구조와 Oracle RAC 구조의 가장 큰 차이점과 설계 시 고려사항은 무엇인가요?
"가장 본질적인 차이는 서비스의 연속성과 자원 효율성에 있습니다.
전통적인 Active-Standby HA 구조는 장애 시 Standby 서버가 스토리지 권한을 넘겨받고 데이터베이스를 재부팅해야 하므로 수 분간의 다운타임이 불가피하며, 대기 서버의 자원이 낭비된다는 단점이 있습니다.
반면 Oracle RAC는 공유 디스크 아키텍처를 기반으로 모든 노드가 동시에 서비스를 처리하는 Active-Active 구조입니다. 한 노드에 장애가 발생해도 이미 기동 중인 타 노드로 즉시 세션이 Failover되어 다운타임을 최소화하고, 평시에는 부하 분산을 통해 자원을 효율적으로 활용할 수 있습니다.
다만, RAC는 고가의 라이선스 비용이 발생하며, 노드 간 데이터 정합성을 맞추기 위한 인터커넥트(Cache Fusion) 부하가 존재하므로, 애플리케이션 설계 시 동시다발적인 동일 블록 수정 패턴을 제어하는 튜닝 전략이 동반되어야 합니다."
'Database > Oracle' 카테고리의 다른 글
| ORA-04021:timeout occurred while waiting to lock object 해결법 (0) | 2026.01.04 |
|---|---|
| ORA-04031 오류가 났을 때 먼저 확인해야 할 4가지 (0) | 2026.01.04 |
| AWR과 ASH란 : DB 성능 분석에서 무엇을 보고, 언제 어떻게 활용할까 (0) | 2026.01.04 |
| DB 재기동하면 빨라지는 이유, Shared Pool에서 벌어지는 일 (0) | 2026.01.04 |
| Oracle 구조 (0) | 2026.01.04 |