처음 만난 AWS 문서


5.2 Load Balancing의 목적

지금부터는 Load Balancing의 목적에 대해서 알아보도록 하겠습니다.
왜 서버를 운영할 때 Load Balancing을 쓰는 것일까요?

5.2.1 성능 향상

Load Balancing의 첫 번째 목적은 성능 향상입니다.

아까 앞에서 설명했던 빵을 나눠주는 예시를 갖고 설명해보도록 하겠습니다.

Load Balancing Goal 1-1

그런데 이번에는 빵의 총 무게가 800g이고 유통기한이 1분입니다.
1분 내에 이 빵을 모두 먹어서 없애야 한다고 해보겠습니다.
그리고 1명의 학생은 1분에 빵을 200g씩 먹을 수 있다고 가정해보겠습니다.

Load Balancing Goal 1-2

먼저 학생 1명이 먹을 경우, 빵 800g을 먹는데 총 4분이 소요 됩니다.
유통기한이 1분이므로 유통기한을 초과하였습니다.
실패한 것이죠.

Load Balancing Goal 1-3

다음으로는 학생 2명이 함께 빵을 나눠먹을 경우입니다.
이 경우에는 빵 800g을 먹는데 총 2분이 소요 됩니다.
하지만 유통기한이 1분이므로 유통기한을 초과하였습니다.
역시 실패한 것이죠.

Load Balancing Goal 1-4

다음으로는 학생 4명이 함께 빵을 나눠먹을 경우입니다.
이 경우에는 빵 800g을 먹는데 총 1분이 소요 됩니다.
가까스로 유통기한 내에 빵을 다 먹었습니다.
성공이지만 유통기한에 너무 딱 맞춰서 먹었기 때문에 조금 위험하겠죠?
이 경우 중간에 학생 한명이 빵먹다 목이 막히거나 사레가 들리면 실패할 수 있습니다.

Load Balancing Goal 1-5

마지막으로 학생 8명이 함께 빵을 나눠먹는 경우입니다.
이 경우에는 빵 800g을 먹는데 총 30초가 소요 됩니다.
아주 여유롭게 유통기한 내에 빵을 다 먹었습니다.
중간에 학생 한명이 빵먹다 목이 막히거나 사레가 들려도 다른 학생들이 계속 먹어주기 때문에 안전합니다.

Load Balancing Goal 1-6

이처럼 Load Balancing을 적용하게 되면, 클라이언트들의 수많은 요청들을 여러 대의 서버가 나눠서 처리하기 때문에 빠르게 응답을 해줄 수 있습니다.
그렇기 때문에 성능 향상이 이뤄진다고 볼 수 있습니다.
같은 시간에 처리할 수 있는 요청의 개수가 확 늘어나기 때문이죠.

5.2.2 안정성 향상

Load Balancing의 두 번째 목적은 안정성 향상입니다.

Load Balancing Goal 2-1

앞에서 본 것처럼 학생 4명이 함께 빵을 나눠먹는 경우에, 정상적인 경우라면 빵 800g을 먹는데 총 1분이 소요 됩니다.
그런데 빵을 먹다가 중간에 학생 2명이 갑자기 목이 막혔습니다.
그래서 결국 유통기한 1분을 초과하였습니다.

Load Balancing Goal 2-2

하지만 학생 8명이 빵을 나눠먹게 되면 어떻게 될까요?
중간에 2명의 학생이 목이 막혀서 빵을 못 먹게 되어도, 나머지 6명의 학생들이 먹으면 되기 때문에 유통기한 1분 내에 빵을 모두 먹을 수 있습니다.

이런 점에서 Load Balancing을 사용하게 되면 안정성을 확보 할 수 있다고 하는 것입니다.

Load Balancing Goal 2-3

AWS의 상황에서도 마찬가지입니다.

위 그림처럼 여러 개의 EC2 인스턴스가 죽어도, 남은 EC2 인스턴스들이 클라이언트들의 요청을 처리해줄 수 있기 때문에 안정성이 향상 된다고 볼 수 있습니다.

5.2.3 서버 장애 예방

Load Balancing의 세 번째 목적은 서버 장애 예방입니다.

Load Balancing Goal 3-1

앞에서 처럼 학생들에게 빵을 먹어서 없애도록 하고 있는데, 선생님은 갑자기 빵이 더 배송된다는 소식을 들었습니다.
그런데 중요한 것은 빵이 얼마나 더 배송될지 모른다는 것입니다.
그리고 학생들중 몇명이나 중간에 목이 막혀서 빵을 못 먹게 될지도 모르는 일입니다.

Load Balancing Goal 3-2

그래서 선생님은 미리 계획을 세웠습니다.
옆반 학생들 8명을 데려와서 대기를 시켜놓은 것입니다.

이렇게 하면 빵이 많이 오거나, 학생들 중 몇명이 목이 막혀서 빵을 못 먹게 되어도, 대기하고 있는 옆반 학생들을 투입하면 되기 때문에 유통기한 내에 빵을 못먹게 되는 사태를 미리 예방 할 수 있습니다.

Load Balancing Goal 3-3

AWS에서도 마찬가지로 갑자기 클라이언트들의 요청이 대량으로 몰려오거나, 여러 개의 EC2 인스턴스가 중간에 죽더라도, 미리 계획해 둔 백업 플랜에 따라서 EC2 인스턴스를 더 띄워서 서버의 장애를 예방 할 수 있습니다.

5.2.4 고가용성

Load Balancing의 네 번째 목적은 고가용성입니다.

여기서 고가용성이란 High Availability의 약자로 보통 HA라고 부르는데,

서버가 오랜기간 동안 정상적으로 작동이 가능한 성질

을 의미합니다.

즉, 가용성이 높다는 것은 고장이 잘 나지 않는다는 의미입니다.

또한 서버의 관점에서 가용성이 높다는 것은, 장애가 나지 않고 지속적으로 서버가 정상적으로 잘 작동하는 것이라고 볼 수 있습니다.

그리고 Load Balancing을 적용하게 되면 장애를 미리 대비할 수 있기 때문에 고가용성을 달성할 수 있는 것입니다.

5.2.5 성능 향상 기반 제공

마지막 Load Balancing의 다섯 번째 목적은 성능 향상 기반 제공입니다.

Load Balancing Goal 5-1

예를 들어서 일반적인 단일 서버의 구성을 보면 클라이언트의 요청이 곧바로 EC2로 전달됩니다.

Load Balancing Goal 5-2

그런데 갑자기 서비스가 대박이 나서 클라이언트의 요청이 엄청 늘어났습니다.
이 때 EC2 인스턴스를 여러대 늘려서 요청을 분산 시켜야 하는데 이러한 구조에서는 할 수가 없습니다.

Load Balancing Goal 5-3

하지만 위와 같이 중간에 Load Balancer가 있는 구조라면 이 Load Balancer가 성능 향상의 기반이 됩니다.

Load Balancing Goal 5-4

그래서 이렇게 클라이언트의 요청이 갑자기 많아져도, EC2 인스턴스를 더 띄우고, Load Balancer를 통해서 부하를 분산시킴으로써 성능을 향상 시킬 수 있습니다.

그래서 Load Balancing이 성능 향상의 기반을 제공한다고 하는 것입니다.


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

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