로드 밸런싱 알고리즘 A to Z: 코드와 함께 파헤치는 5가지 전략
Learning by Doing
트래픽을 여러 서버에 분산시켜 과부하를 방지하고 응답 속도를 높여주기 위해 사용하는 장치가 로드 밸런서(Load Balancer) 인데요,
현업에서 가장 많이 사용되는 5가지 로드 밸런싱 알고리즘에 대한 장단점과 샘플 구현 코드까지 정리한 글이 있어 공유드립니다.
글에서 정리한 로드 밸런싱 알고리즘은 다음과 같습니다.
📌 라운드 로빈(Round Robin)
# 작동 원리
요청이 목록의 첫 번째 서버로 전송됩니다.
다음 요청은 두 번째 서버로 전송되는 식입니다.
목록의 마지막 서버 다음에는 알고리즘이 첫 번째 서버로 돌아갑니다.
# 사용 시기
모든 서버의 처리 능력이 비슷하고 요청 처리에 동등한 능력을 가진 경우.
단순성과 부하의 고른 분산이 더 중요한 경우.
# 장점
구현과 이해가 쉽습니다.
트래픽의 고른 분산을 보장합니다.
# 단점
서버 부하나 응답 시간을 고려하지 않습니다.
서버의 처리 능력이 다를 경우 비효율성을 초래할 수 있습니다.
📌 가중 라운드 로빈(Weighted Round Robin)
# 작동 원리
각 서버에는 처리 능력이나 가용 자원에 따라 가중치가 할당됩니다.
높은 가중치의 서버는 들어오는 요청 중 비례적으로 더 큰 부분을 받습니다.
# 사용 시기
서버의 처리 능력이나 가용 자원이 다를 때.
각 서버의 용량에 따라 부하를 분산시키고 싶을 때.
# 장점
서버 용량에 따라 부하를 균형 있게 조정합니다.
서버 자원을 더 효율적으로 사용합니다.
# 단점
단순 라운드 로빈보다 구현이 약간 더 복잡합니다.
현재 서버 부하나 응답 시간을 고려하지 않습니다.
📌 최소 연결(Least Connections)
# 작동 원리
각 서버의 활성 연결 수를 모니터링합니다.
활성 연결 수가 가장 적은 서버에 들어오는 요청을 할당합니다.
# 사용 시기
현재 활성 연결 수에 따라 부하를 분산시키고 싶을 때.
서버의 처리 능력은 비슷하지만 동시 연결 수준이 다를 수 있을 때.
# 장점
현재 서버 부하에 따라 더 역동적으로 부하를 균형 조정합니다.
어떤 서버도 많은 수의 활성 연결로 과부하되는 것을 방지하는 데 도움이 됩니다.
# 단점
서버의 처리 능력이 다를 경우 최적이 아닐 수 있습니다.
각 서버의 활성 연결을 추적해야 합니다.
📌 최소 응답 시간(Least Response Time)
# 작동 원리
각 서버의 응답 시간을 모니터링합니다.
응답 시간이 가장 빠른 서버에 들어오는 요청을 할당합니다.
# 사용 시기
응답 시간이 다양한 서버가 있고 요청을 가장 빠른 서버로 라우팅하고 싶을 때.
# 장점
응답 시간이 가장 빠른 서버를 선택하여 전체 지연 시간을 최소화합니다.
서버 응답 시간의 변화에 역동적으로 적응할 수 있습니다.
빠른 응답을 제공하여 사용자 경험 개선에 도움이 됩니다.
# 단점
분산 시스템에서 도전적일 수 있는 서버 응답 시간의 정확한 측정이 필요합니다.
서버 부하나 연결 수와 같은 다른 요인을 고려하지 않을 수 있습니다.
📌 IP 해시(IP Hash)
# 작동 원리
클라이언트의 IP 주소에서 해시 값을 계산하고 이를 사용하여 요청을 라우팅할 서버를 결정합니다.
# 사용 시기
같은 클라이언트의 요청이 항상 같은 서버로 전달되어야 하는 세션 지속성(Session Persistence)이 필요할 때.
# 장점
구현이 간단합니다.
Sticky Session이 필요한 애플리케이션에 유용합니다.
# 단점
특정 IP 주소가 다른 주소보다 더 많은 트래픽을 생성할 경우 불균등한 부하 분산으로 이어질 수 있습니다.
서버가 다운되면 해시 매핑을 재구성해야 하므로 유연성이 부족합니다.
샘플 구현 코드 등과 같은 상세한 내용은 공유드린 원문 링크를 참고해주세요.
📚 원문
https://maily.so/devpill/posts/67aebb20?utm_source=oneoneone
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 6월 28일 오전 6:27