지금부터는 Load Balancing의 목적에 대해서 알아보도록 하겠습니다.
왜 서버를 운영할 때 Load Balancing을 쓰는 것일까요?
Load Balancing의 첫 번째 목적은 성능 향상입니다.
아까 앞에서 설명했던 빵을 나눠주는 예시를 갖고 설명해보도록 하겠습니다.
그런데 이번에는 빵의 총 무게가 800g이고 유통기한이 1분입니다.
1분 내에 이 빵을 모두 먹어서 없애야 한다고 해보겠습니다.
그리고 1명의 학생은 1분에 빵을 200g씩 먹을 수 있다고 가정해보겠습니다.
먼저 학생 1명이 먹을 경우, 빵 800g을 먹는데 총 4분이 소요 됩니다.
유통기한이 1분이므로 유통기한을 초과하였습니다.
실패한 것이죠.
다음으로는 학생 2명이 함께 빵을 나눠먹을 경우입니다.
이 경우에는 빵 800g을 먹는데 총 2분이 소요 됩니다.
하지만 유통기한이 1분이므로 유통기한을 초과하였습니다.
역시 실패한 것이죠.
다음으로는 학생 4명이 함께 빵을 나눠먹을 경우입니다.
이 경우에는 빵 800g을 먹는데 총 1분이 소요 됩니다.
가까스로 유통기한 내에 빵을 다 먹었습니다.
성공이지만 유통기한에 너무 딱 맞춰서 먹었기 때문에 조금 위험하겠죠?
이 경우 중간에 학생 한명이 빵먹다 목이 막히거나 사레가 들리면 실패할 수 있습니다.
마지막으로 학생 8명이 함께 빵을 나눠먹는 경우입니다.
이 경우에는 빵 800g을 먹는데 총 30초가 소요 됩니다.
아주 여유롭게 유통기한 내에 빵을 다 먹었습니다.
중간에 학생 한명이 빵먹다 목이 막히거나 사레가 들려도 다른 학생들이 계속 먹어주기 때문에 안전합니다.
이처럼 Load Balancing을 적용하게 되면, 클라이언트들의 수많은 요청들을 여러 대의 서버가 나눠서 처리하기 때문에 빠르게 응답을 해줄 수 있습니다.
그렇기 때문에 성능 향상이 이뤄진다고 볼 수 있습니다.
같은 시간에 처리할 수 있는 요청의 개수가 확 늘어나기 때문이죠.
Load Balancing의 두 번째 목적은 안정성 향상입니다.
앞에서 본 것처럼 학생 4명이 함께 빵을 나눠먹는 경우에, 정상적인 경우라면 빵 800g을 먹는데 총 1분이 소요 됩니다.
그런데 빵을 먹다가 중간에 학생 2명이 갑자기 목이 막혔습니다.
그래서 결국 유통기한 1분을 초과하였습니다.
하지만 학생 8명이 빵을 나눠먹게 되면 어떻게 될까요?
중간에 2명의 학생이 목이 막혀서 빵을 못 먹게 되어도, 나머지 6명의 학생들이 먹으면 되기 때문에 유통기한 1분 내에 빵을 모두 먹을 수 있습니다.
이런 점에서 Load Balancing을 사용하게 되면 안정성을 확보 할 수 있다고 하는 것입니다.
AWS의 상황에서도 마찬가지입니다.
위 그림처럼 여러 개의 EC2 인스턴스가 죽어도, 남은 EC2 인스턴스들이 클라이언트들의 요청을 처리해줄 수 있기 때문에 안정성이 향상 된다고 볼 수 있습니다.
Load Balancing의 세 번째 목적은 서버 장애 예방입니다.
앞에서 처럼 학생들에게 빵을 먹어서 없애도록 하고 있는데, 선생님은 갑자기 빵이 더 배송된다는 소식을 들었습니다.
그런데 중요한 것은 빵이 얼마나 더 배송될지 모른다는 것입니다.
그리고 학생들중 몇명이나 중간에 목이 막혀서 빵을 못 먹게 될지도 모르는 일입니다.
그래서 선생님은 미리 계획을 세웠습니다.
옆반 학생들 8명을 데려와서 대기를 시켜놓은 것입니다.
이렇게 하면 빵이 많이 오거나, 학생들 중 몇명이 목이 막혀서 빵을 못 먹게 되어도, 대기하고 있는 옆반 학생들을 투입하면 되기 때문에 유통기한 내에 빵을 못먹게 되는 사태를 미리 예방 할 수 있습니다.
AWS에서도 마찬가지로 갑자기 클라이언트들의 요청이 대량으로 몰려오거나, 여러 개의 EC2 인스턴스가 중간에 죽더라도, 미리 계획해 둔 백업 플랜에 따라서 EC2 인스턴스를 더 띄워서 서버의 장애를 예방 할 수 있습니다.
Load Balancing의 네 번째 목적은 고가용성입니다.
여기서 고가용성이란 High Availability의 약자로 보통 HA라고 부르는데,
서버가 오랜기간 동안 정상적으로 작동이 가능한 성질
을 의미합니다.
즉, 가용성이 높다는 것은 고장이 잘 나지 않는다는 의미입니다.
또한 서버의 관점에서 가용성이 높다는 것은, 장애가 나지 않고 지속적으로 서버가 정상적으로 잘 작동하는 것이라고 볼 수 있습니다.
그리고 Load Balancing을 적용하게 되면 장애를 미리 대비할 수 있기 때문에 고가용성을 달성할 수 있는 것입니다.
마지막 Load Balancing의 다섯 번째 목적은 성능 향상 기반 제공입니다.
예를 들어서 일반적인 단일 서버의 구성을 보면 클라이언트의 요청이 곧바로 EC2로 전달됩니다.
그런데 갑자기 서비스가 대박이 나서 클라이언트의 요청이 엄청 늘어났습니다.
이 때 EC2 인스턴스를 여러대 늘려서 요청을 분산 시켜야 하는데 이러한 구조에서는 할 수가 없습니다.
하지만 위와 같이 중간에 Load Balancer가 있는 구조라면 이 Load Balancer가 성능 향상의 기반이 됩니다.
그래서 이렇게 클라이언트의 요청이 갑자기 많아져도, EC2 인스턴스를 더 띄우고, Load Balancer를 통해서 부하를 분산시킴으로써 성능을 향상 시킬 수 있습니다.
그래서 Load Balancing이 성능 향상의 기반을 제공한다고 하는 것입니다.
마지막 업데이트: 2023년 11월 10일 00시 00분
이 문서의 저작권은 이인제(소플)에 있습니다. 무단 전재와 무단 복제를 금합니다.