로드 밸런서

붐비는 대형 식당 입구에서 손님들을 여러 빈 테이블로 골고루 나누어 앉혀 주는 지배인이에요.

정의 로드 밸런서(Load Balancer)는 인터넷 서비스에 접속자가 한꺼번에 몰릴 때, 일거리를 여러 대의 서버(컴퓨터)로 골고루 나누어 주는 교통정리 시스템이에요. 특정 컴퓨터에만 일이 몰려 웹사이트가 먹통이 되는 사고를 막아줘요.

고속도로 요금소에서 차선을 여는 원리

고속도로 요금소에서 계산 창구가 딱 하나만 열려 있다면 어떻게 될까요? 명절 귀성길처럼 차들이 끝없이 밀려서 도로 전체가 꽉 막히고 말 거예요. 하지만 요금소 창구를 열 개로 늘리고, 입구에서 안내원이 차들을 빈 창구로 빠르게 나누어 보내주면 차들이 막힘없이 쑥쑥 빠져나갈 수 있어요.

인터넷 세상도 이와 똑같아요. 인기 가수의 콘서트 티켓 예매나 대학교 수강 신청 날에는 수십만 명의 사람이 동시에 웹사이트 문을 두드려요. 이때 요청을 처리하는 컴퓨터(서버)가 딱 한 대뿐이라면, 밀려드는 일을 감당하지 못하고 과부하가 걸려 화면이 하얗게 멈춰 버려요.

그래서 큰 서비스들은 똑같은 일을 처리하는 컴퓨터를 여러 대 나란히 준비해 둬요. 그리고 그 컴퓨터들 바로 앞자리에 로드 밸런서를 세워 둬요. 로드 밸런서는 우리말로 '부하 분산기'라고 불러요. 접속자들을 노는 컴퓨터로 접속량을 골고루 나누어 보내서 어느 한 대도 과열되지 않게 도와주는 핵심 장치예요.

로드 밸런서의 부하 분산 원리 수많은 접속자 로드 밸런서 골고루 분산 서버 1 서버 2 서버 3

어떤 규칙으로 일을 나눌까요?

로드 밸런서가 손님을 나눌 때는 몇 가지 똑똑한 분배 규칙(알고리즘)을 사용해요. 가장 단순한 방법은 시계 방향으로 돌아가며 1번 서버, 2번 서버, 3번 서버에 손님을 차례대로 한 명씩 보내는 방식이에요. 이를 둥글게 돌아간다는 뜻으로 '라운드로빈'이라고 불러요.

하지만 손님마다 요청하는 일의 무게는 천차만별이에요. 어떤 손님은 짧은 글 하나만 읽고 금방 나가지만, 어떤 손님은 용량이 큰 동영상을 내려받느라 컴퓨터를 오랫동안 붙잡고 있거든요. 그래서 지금 당장 연결된 손님이 가장 적은 컴퓨터를 실시간으로 찾아내 새 손님을 보내주는 방식도 널리 쓰여요.

게다가 준비된 컴퓨터들의 성능이 서로 다를 수도 있어요. 최신형 컴퓨터에는 일을 넉넉하게 세 개씩 보내고, 구형 컴퓨터에는 일을 하나씩만 보낼 수도 있죠. 이렇게 상황에 따라 서버의 여유 상태에 맞춰 가장 효율적인 길로 손님을 안내해요.

조금 더 정확히 말하면: 고장 난 서버를 거르는 안전장치

조금 더 정확히 말하면, 로드 밸런서는 단순히 일만 나누는 게 아니에요. 일하는 컴퓨터들이 정상 작동하는지 1초에도 몇 번씩 신호를 보내 확인하는 '상태 점검' 기능도 함께 수행해요.

만약 여러 대의 컴퓨터 중 한 대가 갑자기 고장 나서 멈추면 어떻게 될까요? 로드 밸런서는 응답이 없는 컴퓨터를 즉시 감지하고, 그 컴퓨터로는 손님을 더 이상 보내지 않아요. 제대로 작동하는 정상 컴퓨터들로만 손님을 우회시켜요. 이처럼 고장 난 서버를 알아서 거르는 든든한 방어막 역할을 해줘요.

덕분에 컴퓨터 몇 대가 갑자기 고장 나더라도 사용자는 고장 사실조차 모른 채 끊김 없이 서비스를 이용할 수 있어요. 또한 접속자가 폭발적으로 늘어나 뒤편에 새 서버를 더 연결해도, 로드 밸런서가 알아서 새 컴퓨터로도 손님을 분배해 주기 때문에 서비스 확장이 아주 쉬워져요.

로드 밸런서의 고장 서버 감지 및 트래픽 우회 다이어그램 사용자 요청 로드 밸런서 요청 차단 정상 서버 고장 서버 정상 서버

🤔 흔한 오해

✕ 오해

로드 밸런서를 설치하면 서버 컴퓨터 자체의 계산 속도가 빨라진다.

✓ 사실

컴퓨터의 두뇌 성능을 높여주는 장치가 아니에요. 한 사람이 일을 초능력처럼 빨리하는 게 아니라, 일할 사람을 여러 명 두고 일을 공평하게 나누어 전체 대기 시간을 줄이는 원리예요.

🧺 일상에서 만나요

1 수강 신청이나 명절 기차표 예매 때 수십만 명이 접속해도 서버가 완전히 멈추지 않도록 막아줘요.
2 넷플릭스나 유튜브처럼 전 세계 수억 명이 동시에 영상을 시청하는 서비스에서 트래픽을 분산할 때 사용돼요.
💡 그러니까 한마디로

로드 밸런서는 몰려드는 접속 요청을 여러 대의 서버로 나누어 주어, 서비스가 멈추지 않고 안정적으로 돌아가게 돕는 교통정리 장치예요.