문제: Round-robin, Least-connection, Hash, Persist 알고리즘에 대해 설명하고 각각의 특징 및 장단점을 기술하시오.
1. Round-Robin Algorithm
1-1. 개념
Round-Robin은 가장 기본적인 로드 밸런싱(load balancing) 알고리즘으로, 요청을 각 서버에 순서대로 분배합니다.
이 방식은 특정 서버에 과도한 부하가 집중되지 않도록 요청을 고르게 배분하는 데 초점이 맞춰져 있습니다.
1-2. 등장배경 & 목적
- 등장배경: 복수의 서버로 트래픽을 분산하여 서비스 성능과 가용성을 높이기 위해 고안됨.
- 목적: 간단하고 빠른 분산 로직 구현.
1-3. 역할
- 모든 서버에 요청을 균등하게 배분하여 자원 활용률을 높임.
1-4. 활용 계층 또는 범위
- 네트워크 계층 (L4) 또는 애플리케이션 계층 (L7).
- 간단한 로드 밸런싱 구조에서 사용.
1-5. 구성요소
- 서버 리스트: 요청을 분배할 서버 목록.
- 순차 카운터: 다음 요청을 받을 서버를 결정하기 위한 카운터.
1-6. 시간순 작동 순서
- 첫 번째 요청은 첫 번째 서버로 전달.
- 두 번째 요청은 두 번째 서버로 전달.
- 모든 서버가 한 번씩 선택되면 처음으로 돌아가 반복.
1-7. 종류
- 기본 Round-Robin
- Weighted Round-Robin (가중치 적용)
1-8. 장단점
장점
- 구현이 간단하고 빠름.
- 특별한 조건 없이 균등한 분배 가능.
단점
- 각 서버의 처리 능력을 고려하지 않음.
- 부하가 서버별로 고르게 분산되지 않을 수 있음.
2. Least-Connection Algorithm
2-1. 개념
Least-Connection은 현재 연결 수(connection count)가 가장 적은 서버로 요청을 분배하는 알고리즘입니다.
2-2. 등장배경 & 목적
- 등장배경: 서버의 부하 상태를 실시간으로 반영하여 효율적으로 자원을 분배하기 위해 개발됨.
- 목적: 각 서버의 부하를 최소화하고 성능을 최적화.
2-3. 역할
- 서버의 실시간 상태를 고려하여 트래픽을 분배.
2-4. 활용 계층 또는 범위
- 네트워크 계층 (L4) 또는 애플리케이션 계층 (L7).
- 비균등한 요청 부하 환경에서 적합.
2-5. 구성요소
- 서버 리스트: 요청을 처리할 서버 목록.
- 연결 수 모니터링: 각 서버의 현재 연결 상태.
2-6. 시간순 작동 순서
- 각 서버의 현재 연결 수 확인.
- 연결 수가 가장 적은 서버 선택.
- 요청을 선택된 서버로 전달.
2-7. 종류
- 기본 Least-Connection
- Weighted Least-Connection (가중치 적용)
2-8. 장단점
장점
- 부하가 적은 서버로 요청이 전달되므로 자원 효율성이 높음.
- 동적인 부하 분배 가능.
단점
- 실시간 연결 수 추적이 필요하여 오버헤드 발생 가능.
- 요청이 단기적으로 집중될 경우 부하 불균형이 생길 수 있음.
3. Hash Algorithm
3-1. 개념
Hash 알고리즘은 요청의 특정 속성(예: 클라이언트 IP, 요청 URL 등)을 해시(Hash) 값으로 변환하여, 이 값을 기준으로 서버를 선택합니다.
3-2. 등장배경 & 목적
- 등장배경: 동일한 클라이언트가 동일한 서버로 연결되도록 보장하기 위해 개발됨.
- 목적: 클라이언트와 서버 간 세션 일관성(Session Affinity) 유지.
3-3. 역할
- 요청의 고유 특성을 기반으로 분배하여 세션 유지 가능.
3-4. 활용 계층 또는 범위
- 애플리케이션 계층 (L7).
- 세션 기반 애플리케이션 (예: 로그인 상태 유지).
3-5. 구성요소
- 해시 함수: 요청 속성을 해시 값으로 변환.
- 서버 매핑: 해시 값을 서버에 매핑.
3-6. 시간순 작동 순서
- 요청 속성(예: 클라이언트 IP) 확인.
- 속성을 해시 값으로 변환.
- 해시 값을 기준으로 서버 선택.
3-7. 종류
- Consistent Hashing (서버 추가/삭제 시 재분배 최소화)
3-8. 장단점
장점
- 세션 일관성 유지 가능.
- 특정 클라이언트의 요청이 항상 동일한 서버로 전달됨.
단점
- 서버 장애 시 복구가 복잡.
- 해시 충돌 가능성.
4. Persist Algorithm
4-1. 개념
Persist는 클라이언트의 특정 속성을 기반으로 동일한 서버로 지속적으로 연결하는 방식입니다.
일반적으로 Session Persistence 또는 Sticky Session이라고도 불립니다.
4-2. 등장배경 & 목적
- 등장배경: 세션 정보를 유지해야 하는 애플리케이션에서 사용.
- 목적: 세션 상태를 보존하여 일관된 사용자 경험 제공.
4-3. 역할
- 동일한 클라이언트가 동일한 서버로 지속적으로 연결되도록 보장.
4-4. 활용 계층 또는 범위
- 애플리케이션 계층 (L7).
- 상태 기반 애플리케이션 (예: 쇼핑 카트, 게임 서버).
4-5. 구성요소
- 세션 식별자: 클라이언트를 구분하기 위한 고유 값.
- 서버 매핑 테이블: 세션 식별자와 서버 매핑.
4-6. 시간순 작동 순서
- 클라이언트 요청 시 세션 식별자 확인.
- 기존에 매핑된 서버로 요청 전달.
- 새로운 세션인 경우, 적절한 서버를 선택하고 매핑.
4-7. 종류
- Cookie 기반 Persist
- Source IP 기반 Persist
4-8. 장단점
장점
- 세션 유지가 필요할 때 적합.
- 사용자 경험 개선.
단점
- 특정 서버에 트래픽이 집중될 가능성.
- 서버 장애 시 세션 정보 손실 위험.
5. 비교 요약
알고리즘 | 특징 | 장점 | 단점 |
---|
Round-Robin | 순차적으로 요청 분배 | 간단, 균등 분배 | 부하 상태 고려하지 않음 |
Least-Connection | 연결 수가 적은 서버로 요청 분배 | 자원 효율성, 동적 분배 가능 | 추적 오버헤드, 단기 부하 가능성 |
Hash | 요청 속성 기반 서버 선택 | 세션 일관성 유지 | 서버 장애 시 복잡성 증가 |
Persist | 특정 클라이언트가 동일 서버로 연결 | 세션 상태 유지 | 특정 서버 트래픽 집중 위험 |
10. 쉽게 요약
- Round-Robin: "한 번씩 돌아가며!"
- Least-Connection: "가장 여유 있는 서버로!"
- Hash: "특성에 따라 배정!"
- Persist: "같은 사용자, 같은 서버!"