HA(High Availability)를 간단히 한국어로 직역을 하자면 "고가용성"이다.
고 가용성이란 "가용성이 높다"는 뜻으로서, "절대 고장 나지 않음"을 의미한다.
즉, 네트워크나 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다.
최근 들어 기업의 모든 비즈니스가 디지털화 되면서, 고 가용성이 보장된 서비스를 제공해야 하는 케이스가 점점 많이 발생하고 있다. 또한 단 한번의 예상치 못한 서버 다운은 기업 신용 실추 등의 문제와 직결되기 때문에 손실이 매우 크다.
여담으로 HA설계를 하느냐 안하느냐에 따라 주니어 개발자와 시니어 개발자를 나누는 기준이 되기도 한다고 한다.
서버 이중화
서버 이중화란 운영중인 서비스의 안정성을 위해 각종 자원을 이중 또는 그 이상으로 구성하는 것을 말한다. 따라서 하나의 서비스에 장애가 발생하는 경우 다른 서버를 통해 서비스를 지속가능하게 한다.
장애가 일어난 Active 서버를 내리고 대기하고 있던 Stand by 서버를 올리는 것을 fail over라고 한다.
이를 보통 네트워크 장애 발생 시 노드 간 fail over가 실행되도록 설정했다고 말한다.
fail over 발생 시 Active 서버에 할당한 가상 IP주소를 제거하고 Stand by 서버에 해당 주소를 재할당하기 때문에, 클라이언트는 동일한 IP주소를 제거하고 Stand by 서버에 해당 주소를 재할당하기 때문에, 클라이언트는 동일한 IP주소로 그대로 접속이 가능하다.
서버 이중화의 목적
1. 장애 또는 재해 시 빠른 서비스 재개를 위함
오류가 발생하더라도 사용자는 인지하지 못하도록 하기 위함.
2. 원활한 서비스를 위해 한 개의 장비에서 일정량 이상의 트래픽을 처리하는 경우 응답시간이 늦어질 수 있다.
서버 이중화의 구현
HA(High Availiability) 서비스와 디스크 RAID 구성, 오라클의 RAC(Real Application Clusters)등으로 구현 가능하다.
서버 이중화 솔루션이 반드시 갖추어야 할 기본 기능
1. 데이터 복제 기능
1번 서버에서 장애 발생 시 2번 서버가 1번 서버를 대신하여 바로 서비스하기 위해서는 양쪽 데이터는 항상 100% 동일해야 한다는 무결성을 보장해야 한다. 이렇게 Data를 동일히 맞추기 위해서는 Data Replication(데이터 복제) 기능이 반드시 필요하다. 이 때 Master(Read, Write) - Slave(Read) 구조를 가진다. 즉, 다수의 slave 구축으로 Read(읽기) 부하를 분산시킬 수 있다. Master-Slave 구조에서 한 개의 Master에 여러 Slave가 있는 구조를 클러스터링 구조라고 하며 DDR 구조라 한다.
2. 장애 감시 기능
Stand by 서버는 Active 서버가 언제 장애가 발생할지 모르니 항상 감시하고 있어야 한다. 이러한 구성은 Active-Stand By HA구성이라고 한다.
서버 이중화 구조
보통 서버 이중화의 구성은 Active-Active 구성과 Active-Standby 구성으로 나뉜다.
Active-Avtive 구조
- 부하분산의 목적으로 주로 활용
- 서비스 단위를 나누어 분산시키기도 한다.
Active-Standby 구조
- 즉각적인 failover(=swap)을 위해 주로 활용.
서버를 이중화함과 동시에 부하 분산을 하여 장애시 서비스를 이전하여 운영하는 형태다.
- 지속적으로 Active서버에 장애가 발생했는지 확인하기 위해 Active 서버와 Standby 서버가 heartbeat을 주고받으며 health check를 한다.
- Active 서버에 장애 발생 시 다운된 서버를 대신하기 위하여 Standby 서버로 fail over(=swap)되어 동작한다. 그 동안 개발자들은 다운된 Active에 접근하여 장애이슈처리.
- 결국 일반적으로 Active Standby 같은 기능을 함(=Mirroring Server)
서버 이중화 솔루션의 단점
데이터가 실시간 복제된다는 점이다.
실수로 반영된 데이터 혹은 바이러스에 감염된 파일도 복제가 되어 2번 서버 또한 감염이 될 수 있다는 점이다.
이러한 단점을 보완하기 위해서는 백업 솔루션을 추가 도입해야 할 수 있다.
로드 밸런싱(Load Balancing)
client의 수가 많을 땐 server 1대 만으로는 트래픽을 감당하기 힘들다.
이 때 트래픽을 해결하기 위해 scale-up 혹은 scale-out 해줘야 한다.
보통은 scale-out 방식으로 하게 되는데, 이는 장비를 여러대를 두는 것을 의미한다.
'백엔드' 카테고리의 다른 글
데이터 모델링 (1) | 2023.05.16 |
---|---|
데이터베이스 시스템의 정의 (0) | 2023.05.16 |
데이터베이스 관리 시스템 (0) | 2023.05.16 |
데이터베이스 기본 개념 (0) | 2023.05.16 |
퍼블릭IP, 프라이빗IP, VIP (0) | 2023.05.16 |