처음 만난 AWS 문서


5.1 Load Balancing

먼저 Load Balancing에 대해서 알아보도록 하겠습니다.

Load Balancing이 뭘까요?
영어 단어 Load는 보통 '불러오다'라는 동사의 의미로 많이 알고 있습니다.
하지만 명사로써의 Load는 짐, 무게, 하중 등을 의미합니다.
그리고 Balancing이라는 단어는 명사로 평형, 균형이라는 의미를 갖고 있습니다.

그렇다면 이 두 단어를 합쳐서 만든 Load Balancing이라는 단어는 어떤 의미일까요?
단어의 의미만을 조합해본다면, 무게의 균형을 맞추는 일이라고 볼 수 있습니다.

Load Balancing을 한국말로는 부하 분산이라고 합니다.
부하라는 것은 서버에 들어오는 클라이언트의 요청(트래픽)을 의미하고, 분산은 나눈다는 의미이죠.
서버에 요청이 과하게 많이 들어올 수 있기 때문에, 이 부하들을 여러 대의 서버로 잘 분산시켜서 요청을 시간내에 처리할 수 있게 하는 것입니다.

그리고 이렇게 각 서버로 부하를 분산시켜주는 역할을 하는 것을 우리는 Load Balancer라고 부릅니다.

이 용어의 개념에 대해 잘 기억하면서 다음으로 넘어가기 바랍니다.


지금부터는 Load Balancing의 개념을 빵을 나눠주는 방법을 예로 들어서 한 번 설명해보도록 하겠습니다.

아래에 보이는 것처럼 학교의 한 학급에 학생이 8명이 있고, 선생님 1명이 있습니다.

Bread Distribution 01

그런데 어느날 이 교실에 빵 하나가 배달 되었습니다.
근데 이 빵은 굉장히 특이합니다. 유통기한이 30분 밖에 되지 않습니다.
30분 안에 이 빵을 모든 학생들에게 나눠주고 먹어 버려야 하는 상황이죠.

학생은 8명인데, 빵은 하나 밖에 없으니 이것을 골고루 나눠 주어야겠죠.
누가 나눠줘야 할까요? 바로 선생님이죠.

자, 선생님은 '빵을 8명의 학생들에게 어떻게 나눠줘야 할 것인가’라는 고민이 생겼습니다.

Bread Distribution 02

그래서 생각한 첫 번째 방법은 '그래 공부잘하는 아이들이 빵먹고 더 힘내라고 우등생들에게만 나눠줘야겠다!’ 라고 해서 우등생 4명만 나눠주는 방법을 선택했습니다.

그랬더니 공부를 못하는 열등생 4명은 배에서 꼬르륵 소리가 나네요.
'나도 빵 먹을줄 아는데 왜 나한테는 안 주는거야!’라는 생각을 하게 될 겁니다.

Bread Distribution 03

그래서 선생님은 고민하다가, '그래 모두 다 같은 학생들인데, 공평하게 1/8조각씩 나눠줘야겠다!’라고 생각합니다.
그리고 모든 학생들에게 공평하게 1/8조각씩을 나눠주었더니, 갑자기 우등생들이 반발을 하기 시작합니다.

'아니 저희는 공부도 열심히 하고 학교 생활도 잘 했는데, 저기 맨날 노는 애들이랑 같은 취급 받는게 억울합니다!’라고 말을 합니다.

그래서 선생님은 우등생들의 말을 듣고, 고민합니다.

Bread Distribution 04

그래서 다시 우등생 4명에게 빵 전체의 3/4을 똑같이 나눠주고, 열등생들에게는 빵 전체의 1/4을 똑같이 나눠줬습니다.

그런데 이번에는 우등생중에서 빵을 잘 안먹는 친구가 나타났습니다.
빵을 안 먹으면 그 사이에 빵의 유통기한이 지나버리겠죠.
그리고 반대로 어떤 친구들은 빵을 아주 잘 먹습니다.

Bread Distribution 05

그래서 이번에는 잘먹는 학생들 4명에게 빵 전체의 3/4을 똑같이 나눠주고, 잘 먹지 못하는 학생들 4명에게 빵 전체의 1/4을 똑같이 나눠줬습니다.
그랬더니 빵이 금새 사라져 버렸습니다.

그런데 이 방법은 지금 당장 빵을 먹기 싫어도 무조건 조금은 먹어야 하기 때문에, 억지로 빵을 먹는 학생들이 생기게 됩니다.

Bread Distribution 06

그래서 선생님은 마지막으로 지금 당장 배가 고픈 학생들 4명에게만 빵을 똑같이 4등분해서 나눠주게 됩니다.
이 학생들은 금새 빵을 먹어치웠고 유통기한을 넘기지 않았습니다.

자, 지금까지 빵을 나눠주는 여러가지 방법들에 대해서 이야기 했습니다.

여기서 빵을 나눠주는 방법은

빵을 유통기한 내에 먹어서 없애는 방법

이라고도 볼 수 있습니다.

다시 말하면, 선생님이 정한 방법에 따라서 빵을 나눠주고, 각 학생들이 먹어서 없앤다 라고 할 수 있습니다.
30분이라는 유통기한 내에 말이죠.


방금 봤던 빵을 나눠주는 예시를 서버의 관점에서 바라보면 아래와 같이 됩니다.

Load Balancing 01

먼저 빵은 클라이언트들의 요청이라고 볼 수 있습니다. 트래픽이죠.
그리고 학생들은 각각의 서버라고 볼 수 있습니다.
빵을 먹어서 없애는 것처럼 이 요청들을 처리하는 것이죠.

그리고 마지막으로 선생님은 빵을 학생들에게 나눠주는 역할. 즉, 요청을 각 서버에 나눠주는 역할을 하는데, 여기서 선생님의 역할이 바로 Load Balancer입니다.

자, 이제는 선생님과 학생이 아닌 AWS의 관점에서 보겠습니다.

Load Balancing 02

교실에 여러명의 학생이 있는 것처럼, EC2 인스턴스가 여러대 있습니다.
그리고 클라이언트 들의 요청이 이렇게 많이 쌓여있구요.

그리고 빵을 나눠주는 선생님 역할을 하는 Load Balancer. 즉, ELB가 있습니다.
ELB는 서버로 오는 요청들을 자신이 정한 알고리즘에 따라서 골고루 각 서버로 분산시켜 줍니다.

정리해보면, Load Balancing이라는 것은 Load Balancing 알고리즘에 따라서 요청들을 분산시키고 각 서버에서 처리하도록 하는 것입니다.
timeout이라고 부르는 제한 시간 내에 말이죠.

Load Balancing의 개념을 잘 기억하면서 다음으로 넘어가도록 하겠습니다.


마지막 업데이트: 2023년 11월 10일 00시 00분

이 문서의 저작권은 이인제(소플)에 있습니다. 무단 전재와 무단 복제를 금합니다.