클라우드

로드밸런서를 활용한 Scale-Out (수평확장)

tioon 2023. 12. 28. 21:55

 

이번 장에서는 로드밸런서를 활용한 Scale-Out 구현하겠습니다. 
Scale-Out을 구현하기에 앞서, Scale-Out의 개념과 이게 왜필요한지에 대해서 먼저 알아보도록 하겠습니다.

 

 

 

Scale-Out(수평확장)이란??

 

Scale-Out이란 Scale-Up과 대비되는 말로, 서버의 처리능력을 증가시키기 위해 추가적은 노드(서버)를 시스템에 추가하는 것을 의미합니다. 
즉, 서버의 성능을 높이기위해 단일 서버가 아닌 다수개의 서버를 이어붙여 트래픽을 분산시켜 서버 성능을 높이는 기법을 뜻합니다.

 

이해하기 쉽게 예시를 들어서 설명을 해보겠습니다.

 

위와 같은 상황의 서버가 있다고 가정을 하겠습니다.
현재 단일 서버로 서버 1대가 존재하고, 서버와 DB가 1대1로 매핑이 되어있는 서버라고 가정하겠습니다.

가장 기초적인 서버구조이며, 트래픽이 많지 않을시엔 이렇게 서버를 배포해도 별 문제가 되지않습니다.

 

하지만,트래픽이 한 서버가 감당하기 힘들만큼 많아진다면, 서버가 부하를 감당하지 못해 터지는(?)현상이 발생합니다.
이땐, 서버를 확장시켜 성능을 향상시켜야 하는데요. 크게 두가지의 방법이 있습니다.

  1. 단일 서버의 성능을 높이는 방법 (더 성능이 좋은 서버를 구매)
  2. 다른 서버를 사서 옆에 병렬로 붙이는 방법 (비슷한 성능의 서버를 구매)

1번과 같은방법을 Scale-Up (수직확장), 2번과 같은 방법을 Scale-Out(수평확장)이라고 합니다.

 

 

 

Scale-Out(수평확장)의 장점

 

위에서 보셨다시피, Scale-UP과 Scale-Out 두가지의 방식이 있습니다. 
하지만 보통 서버확장이라고 하면 Scale-Out방식을 많이 선택하는데 그 이유는 다음과 같습니다.

 

  • 높은 비용 효율성
    -성능이 높은 서버를 구매하는것 보다, 성능이 비슷한 서버를 여러대 두는 것이 비용이 훨씬 저렴합니다.

  • 높은 탄력성
    -Scale-Up에 비해 서버의 유연한 확장 및 축소가 가능합니다. 트래픽이 증가하면 서버를 추가하면 되고, 트래픽이 감소하면 서버를 제거하여 비교적 쉽게 트래픽에 따라 유연하게 적용이 가능합니다.

  • 높은 안정성
    -서버가 예상치 못하게 다운되는 경우에도, 다른서버가 대체할 수 있으므로, 시스템 전체의 안정성이 높아집니다.

 

물론, 이러한 장점외에 단점도 존재하는데, Scale-Up에 비해 관리하는게 복잡하다는 단점이 있습니다.
하지만, 단점보다 장점이 더 크기에 Scale-Out을 주로 활용하여 서버를 확장합니다.

 

 

 

 

Scale-Out 구현 

 

위에서 병렬적으로 서버를 여러대 붙이는 것이 Scale-Out이라고 했습니다.
그러면 아까 단일 서버의 예시에서 서버를 여러대 붙이겠습니다.

 

 

아까 단일 서버에 서버 2대를 더 구매하여 옆에 붙였습니다.
이렇게 하면 Scale-Out이 구현됐는데, 뭔가 좀이상하죠??

 

위의 상황이라면 사용자들은 각각의 서버의 정보를 다 알아야합니다.
즉, 사용자들은 서버를 확장할 때마다, 해당 서버의 정보를 하나하나 다 알아야하고, 또 직접 나눠서 접속을 해야 합니다.
이렇게 되면 사용자에게 매우 큰 불편함을 줄 수 있을 뿐만 아니라, 트래픽 분산이 제대로 되지않습니다.
즉, 한 서버엔 많은 트래픽이 몰릴 수도 있고, 다른 한 서버엔 트래픽이 적어 서버가 놀고 있을 수도 있는 것이죠.

 

따라서, 저희는 사용자로부터 한곳으로 외부 요청을 받고, 그 받은 요청을 서버에 골고루 분배를 해야합니다.
이때, 필요한 것이 '로드밸런서'입니다.

 

 

(로드밸런서에 대한 설명은 아래의 글에 있습니다!)

https://tioon.tistory.com/127

 

로드 밸런싱(Load balancing)이란?

로드 밸런싱이란? -컴퓨터 네트워크나 서버 환경에서 트래픽을 고르게 분산시키는 기술을 말합니다. 서버에 들어오는 다수의 요청을 여러대의 서버로 분산하여 부하를 균등하게 분배함으로써

tioon.tistory.com

 

 

따라서 로드밸런서를 활용하여 서버를 확장했을 때의 모습은 다음과 같습니다.

 

 

로드밸런서를 통해 외부로부터 모든 트래픽을 받고, 해당 트래픽들을 내부 서버에 골고루 분배하는 서버 구조입니다.

 

 

 

 

 

AWS를 통한 Scale-Up 구현

 

이제 AWS를 통해 직접 EC2 3개와 로드밸런서를 통해 Scale-Up을 구현하겠습니다. 
우선,EC2 3개와 로드밸런서를 구축할 때, 많이는 아니지만 어느정도의 과금이 든다는 점을 참고해주세요

(자세한 요금은 아래 페이지에 나와 있습니다.)

https://aws.amazon.com/ko/ec2/pricing/dedicated-instances/

 

Amazon EC2 전용 인스턴스 요금 | AWS

 

aws.amazon.com

 

 

로드밸런서와 EC2 연결하는 과정은 아래의 글을 참고해주세요.

https://tioon.tistory.com/184

 

EC2 도메인 연결 및 HTTPS 적용하기

이번엔 AWS에서 서버 배포를 할때, 도메인을 적용시키고, 추가적으로 HTTP가 아닌 HTTPS로 적용시켜 배포하는것을 알아보도록 하겠습니다. 우선, 이 과정을 진행하기 위해선 필요한것들은 다음과

tioon.tistory.com