서버 스케줄링은 클라이언트 요청을 여러 서버에 효율적으로 분배하여 자원을 최적화하고 시스템 성능과 가용성을 높이는 방법입니다. 주로 로드 밸런서가 이를 수행하며, 스케줄링 알고리즘을 사용해 요청을 가장 적합한 서버로 전달합니다.
이를 통해 특정 서버에 과부하가 걸리는 것을 방지하고, 시스템이 안정적이고 빠르게 동작하도록 합니다.
대표적인 서버 스케줄링 알고리즘에는 라운드 로빈(Round Robin), 최소 연결(Minimum Connections), 가중 라운드 로빈(Weighted Round Robin), IP 해시(IP Hash) 등이 있습니다.
장점:
- 로드 분산: 클라이언트 요청을 여러 서버에 고르게 분배해 시스템 과부하를 방지하고 성능을 최적화합니다.
- 확장성: 스케줄링을 통해 서버를 추가하거나 제거하여 시스템의 확장성을 높일 수 있습니다.
- 고가용성: 특정 서버에 문제가 생겨도 다른 서버로 요청을 전달해 시스템의 가용성을 유지할 수 있습니다.
- 성능 향상: 효율적인 스케줄링을 통해 서버의 자원 사용률을 최적화하여 응답 시간을 줄일 수 있습니다.
단점:
- 복잡한 설정: 스케줄링 정책과 알고리즘 설정이 복잡할 수 있으며, 잘못된 설정 시 성능 저하를 초래할 수 있습니다.
- 추가 비용: 로드 밸런서와 같은 스케줄링 인프라의 구축 및 유지에 추가 비용이 발생할 수 있습니다.
- 중앙 집중적 실패점: 로드 밸런서가 단일 실패 지점(Single Point of Failure)이 될 수 있으며, 이를 방지하기 위해 이중화 등의 추가 설정이 필요합니다.
- 성능 병목 가능성: 잘못된 스케줄링으로 인해 특정 서버에만 요청이 몰리거나 리소스가 비효율적으로 사용될 수 있습니다.
사용 예시:
- 라운드 로빈 스케줄링:
- 설명: 모든 서버에 요청을 순서대로 분배하는 가장 단순한 스케줄링 방법입니다. 각 서버에 동일한 가중치를 부여하며, 새로운 요청이 들어올 때마다 다음 서버로 순차적으로 분배합니다.
- 예시: 3개의 서버(A, B, C)가 있을 때, 첫 번째 요청은 서버 A, 두 번째 요청은 서버 B, 세 번째 요청은 서버 C로 분배되며, 네 번째 요청부터 다시 서버 A로 돌아옵니다.
- 장점: 간단하고 균등하게 요청을 분배합니다.
- 단점: 서버의 성능 차이나 현재 상태를 고려하지 않기 때문에, 자원이 불균형하게 사용될 수 있습니다.
- 최소 연결 스케줄링:
- 설명: 현재 연결 수가 가장 적은 서버로 요청을 분배하여, 각 서버의 부하를 실시간으로 조절합니다.
- 예시: 서버 A, B, C 중에서 서버 B가 현재 가장 적은 연결을 가지고 있다면, 새로운 요청은 서버 B로 전달됩니다.
- 장점: 각 서버의 부하를 실시간으로 반영하여 분배하므로, 효율적인 리소스 사용이 가능합니다.
- 단점: 실시간 상태를 파악해야 하기 때문에 로드 밸런서의 부하가 증가할 수 있습니다.
- 가중 라운드 로빈 스케줄링:
- 설명: 각 서버에 가중치를 부여하여, 서버의 처리 능력에 따라 요청을 분배합니다. 예를 들어, 처리 능력이 더 좋은 서버에 더 많은 요청이 가도록 설정합니다.
- 예시: 서버 A(가중치 3), 서버 B(가중치 1), 서버 C(가중치 1)인 경우, 서버 A는 B와 C보다 3배 더 많은 요청을 처리하게 됩니다.
- 장점: 서버의 성능에 따라 부하를 적절히 분배할 수 있어 자원 최적화가 가능합니다.
- 단점: 가중치 설정이 적절하지 않으면 오히려 비효율적인 결과를 초래할 수 있습니다.
'공부' 카테고리의 다른 글
추후 공부 할 것 기록 (0) | 2024.09.04 |
---|---|
Express와 NestJS의 차이? (1) | 2024.09.01 |
시스템 설계란 (0) | 2024.08.31 |
Spring과 Node.js (1) | 2024.08.30 |
백엔드 아키텍처란 (2) | 2024.08.30 |