
실시간 메신저 서비스를 구현하는 중에 대용량 트래픽을 어떻게 처리할지에 대한 의문이 들었습니다. 그러는 중에 동료 개발자에게 Load Balancer, Auto Scaling에 대해서 알게되었습니다. 오늘은 이 둘을 간단히 정리하는 시간을 가지겠습니다.
Load Balancer는 대용량 트래픽을 처리하는데 사용됩니다. 트래픽이 많아지면 Load Balancer는 서버 부하를 경감시키기 위해 트래픽이 적은 서버로 배분해줍니다. 덕분에 배포된 서비스는 중단되지 않고 안정되게 유지될 수 있습니다.
Load Balancer는 클라이언트에 대해 단일 접점 역할을 수행합니다.
Scale Up은 서버가 더 빠르게 동작하기 위해서 하드웨어 성능을 향상시키는 방법입니다. 그와 다르게 Scale Out은 서버의 개수를 늘리는 방법입니다. 두 방법 모두 사용자가 많아질때 과부하를 줄여줍니다.
Scale Out은 하드웨어 성능을 올리지 않기 때문에 비용이 저렴합니다. 또한 서버가 여러개 있기 때문에 무중단 서비스를 제공할 수 있습니다. Scale Out을 통해 많아진 서버에 트래픽을 균등하게 나눠주는게 Load Balancer입니다.
위의 설명을 보면 Load Balancer가 일당백을 해주는 서비스로 보입니다. 하지만 서버가 과부하되서 멈추거나 종료될 때는 해결책이 없습니다. 그래서 AWS로 인스턴스를 배포할 때 Auto Scaling을 같이 사용합니다.
Auto Scaling은 인스턴스를 자동으로 시작하거나 종료시킵니다. 또한 트래픽에 따른 전략을 설정할 수 있습니다. 그렇게 되면 트래픽이 급증할 때는 더 많은 서버, 트래픽이 상대적으로 적은 새벽이나 밤 시간에는 적은 수의 서버를 자동으로 설정해서 최적화할 수 있습니다.