834. 라운드 로빈 (Round Robin) 및 최소 연결 (Least Connection) - 부하 분산 맵 할당 알고리즘
핵심 인사이트: 833번 문서에서 로드밸런서가 트래픽을 나눠준다고 했다. 근데 대체 "무슨 기준"으로 나눠줄까? 주사위를 굴릴까? 가장 멍청하고 원시적인 방법은 "1번 서버, 2번 서버, 3번 서버, 다시 1번 서버..." 이렇게 기계적으로 순서대로 뱅글뱅글 돌아가며 카드를 돌리는 것이다. 이것이 라운드 로빈이다. 하지만 1번 서버가 무거운 영상 인코딩을 하느라 뻗기 일보 직전인데도 무식하게 자기 순서라고 일을 던지면 1번 서버는 터진다. 그래서 로드밸런서는 1번, 2번 서버의 눈치를 쓱 보고 "지금 제일 한가한(연결 개수가 적은) 놈한테 몰아주자!"라는 똑똑한 분배법을 쓰게 된다. 이것이 최소 연결 알고리즘이다.
Ⅰ. 로드 밸런싱 스케줄링 알고리즘의 필요성
- L4/L7 스위치(로드밸런서) 뒤에는 10대의 서버가 있습니다. 1초에 1,000명의 접속 요청이 쏟아질 때, 어떤 서버에 패킷을 꽂아줄지 결정하는 내부의 수학적 규칙(맵 할당 로직)이 필요합니다.
- 서버의 성능과 현재 바쁜 정도(부하 상태)를 어떻게 추정하느냐에 따라 알고리즘이 갈립니다.
Ⅱ. 가장 고전적인 정적 분배 2대장 🌟
1. 라운드 로빈 (RR, Round Robin) - "기계적인 카드 돌리기"
- 원리: 서버 1번 ➜ 2번 ➜ 3번 ➜ 1번 ➜ 2번 ➜ 3번... 이처럼 단순하게 순서대로 빙글빙글 돌아가며 1개씩 똑같이 요청을 분배하는 가장 기초적인 방식입니다.
- 특징: 무식하게 빠릅니다. 서버 3대의 성능(CPU, RAM)이 완전히 똑같고, 사용자들이 요청하는 작업의 무게(단순 웹페이지 읽기 등)가 똑같을 때 완벽한 효율을 자랑합니다.
- 가중치 라운드 로빈 (Weighted RR): 서버 1번은 슈퍼컴퓨터고 2번은 똥컴일 때 씁니다. 관리자가 1번 서버에 가중치 '3'을 주고, 2번 서버에 '1'을 줍니다. (1번, 1번, 1번, 2번, 1번...) 이렇게 1번 서버에 3배의 일감을 밀어주는 응용 방식입니다.
2. 해시 분배 (Hash / Source IP Hash) - "너는 무조건 1번만 가"
- 원리: 사용자의 출발지 IP(예: 211.x.x.x)를 뽑아서 수학 해시 함수에 집어넣어, 나온 결괏값(예: 3)에 해당하는 3번 서버로 꽂아줍니다.
- 특징: 홍길동(동일 IP)이 접속하면 해시 결괏값이 항상 같으므로, 홍길동은 어제도 3번, 오늘도 3번, 내일도 3번 서버로만 고정적으로 들어갑니다(세션/장바구니 유지 완벽 보장).
Ⅲ. 현대 클라우드의 지배자: 동적(Dynamic) 분배 알고리즘 🌟
최신 L7 로드밸런서나 쿠버네티스 Ingress에서 가장 사랑받는 똑똑한 녀석들입니다.
1. 최소 연결 (Least Connection) - "제일 한가한 놈 찾기"
- 원리: 로드밸런서가 뒤에 있는 서버 10대의 현재 '연결된 손님 수(세션 개수)'를 1초마다 실시간으로 눈팅합니다. 새 요청이 오면, 현재 손님이 가장 적게 붙어있는(가장 한가한) 서버를 찾아내어 거기로 꽂아줍니다.
- 적용: 1번 손님은 게시판을 보고(가벼운 작업, 1초 만에 종료), 2번 손님은 영화를 봅니다(무거운 작업, 2시간 유지). 라운드 로빈으로 돌리면 영화 보는 손님 10명이 운 나쁘게 1번 서버에 몰려 터질 수 있습니다. 최소 연결 방식은 영화 손님이 쌓인 1번 서버를 피해서 2번, 3번 빈 서버로 트래픽을 완벽히 분산해 내는 진정한 스마트 분배기입니다.
2. 최단 응답 시간 (Fastest Response Time)
- 원리: 최소 연결보다 한발 더 나아갑니다. 서버가 "나 지금 로딩 다 됐어!"라고 대답해 주는 핑(Ping) 응답 속도가 가장 쌩쌩하게 빠른(가장 쾌적한 상태인) 서버를 골라 최우선으로 일감을 꽂아주는 궁극의 응답 체계입니다.
📢 섹션 요약 비유: 식당 앞에 서서 줄 선 손님들을 3명의 요리사에게 배정해 주는 '주방 홀 매니저(로드밸런서)'가 있습니다. 라운드 로빈(RR) 매니저는 기계입니다. 앞뒤 안 보고 무조건 "1번 요리사, 2번 요리사, 3번 요리사" 순서대로 손님 주문서를 던집니다. 1번 요리사가 앞서 받은 짜장면 10그릇을 볶느라 피똥을 싸고 있어도 무자비하게 1번에게 다음 순서라고 주문을 던져버립니다(서버 터짐). 반면 최소 연결(Least Connection) 매니저는 홀을 쓱 스캔하는 베테랑입니다. "어? 1번 요리사는 짜장면 10그릇 볶고 있고, 2번 요리사는 방금 손님이 다 빠져서 불을 껐네? 다음 손님 주문은 무조건 텅 빈 2번 요리사한테 던져!"라며 주방 전체의 밸런스를 기가 막히게 맞춰버리는 천재적인 분배 시스템입니다.