우아한테크코스/레벨4

[Infra] 로드 밸런싱 (Load Balancing)은 왜 필요할까 ?

MINGYUM 2024. 9. 25. 20:11

로드 밸런싱의 목적

  • CPU나 메모리와 네트워크가 부하가 될 수 있다. 특히 커넥션의 개수가 많아지면서 애플리케이션 단에서 OutOfMemoryError가 생길 수 있다. 스레드 풀 역시 고갈될 위험이 있다.
  • 스케일 아웃으로 이를 해결한다고 가정하자. 그렇다면 클라이언트의 요청을 잘 처리할 가능성이 높은 서버에게 요청을 전달하는 과정이 필요하다. 이런 역할을 하는 서버가 로드 밸런서이다.

 

가용성이란?

  • 서비스가 정상적으로 작동하는 시간
  • 가용성을 어떻게 측정할 수 있는가? 헬스 체크를 사용하여 전체 헬스 체크 시도 중 성공한 비율을 가용성이라고 볼 수 있다. 

 

AWS에서 사용하는 로드밸런스 기능을 사용하는 이유가 뭐야? 다른 로드 밸런서와 비교했을 때 장점이 있는가? 

  • ELB (Elastic Load Balancer) 를 사용한다. 
  • 왜냐하면 EC2 서버 여러 개를 한 번에 관리하기 편하기 때문이다. 자동으로 여러 가용 영역에서 트래픽을 분산한다.
  • Nginx 와 비교했을 때 헬스 체크와 서버 부하 분산 알고리즘을 자동으로 제공한다. 더욱이 EC2 서버를 사용한다는 점에서 AWS 의 LB 기능을 이용하는 것이 간편하다.

ELB의 세 가지 종류는 무엇인가? 어떤 것을 선택하였는가?

  • Application Load Balancer
    • UI로 접하는 응용 프로그램 관련 계층으로, HTTP, FTP, DNS 등의 프로토콜을 사용한다.
    • HTTP 의 헤더를 보고 요청을 보낼 대상 그룹을 선택할 수 있다.
    • SSL 암호화 / 복호화가 가능하다.
    • 경로 기반 라우팅이 있고 HTTP/HTTPS 기반으로 소통한다면 ALB를 쓰기에 적절하다.
  • Network Load Balancer
    • Application이 아닌 Transport 계층의 프로토콜을 활용해 부하를 분산한다. TCP, UDP 등 연결에 대해 IP 주소와 포트 번호를 기준으로 분산 처리한다.
    • 실시간성으로 빠르게 요청을 보내는 서비스에 유리하다.
  • Classic Load Balancer

ALB 로드 밸런서가 채택하는 부하 분산 알고리즘은?

  • 라운드 로빈 알고리즘이다.
  • 왜 ALB는 라운드 로빈 알고리즘을 사용할까? 다른 알고리즘은 무엇이 있는가? Least Connection 알고리즘은 왜 채택하지 않았을까?
  • 라운드 로빈은 서버의 연결 상태를 지속적으로 확인하지 않아도된다. 또한 순차적으로 서버에 연결하기 때문에 부하가 고르게 나누어질 수 있다. Least Connection의 경우 커넥션마다 시간이 일정하지 않기 때문에, 긴 커넥션을 물고 있는 서버임에도 숫자가 적다는 이유로 부하를 또 줄 수 있기 때문이다.

로드 밸런서를 적용하면 모니터링과 로그 관리 방법이 달라질 것인가?

  • CloudWath를 잘 사용하면 트래픽 모니터링을 통합하여 할 수 있다.