Scale-Out / Load Balancer

김민성·2024년 2월 28일
0

대용량 트래픽 처리 방법에는 두 가지 방법이 있다.

1. Scale-Out

  • 비슷한 사양의 서버를 추가로 연결해 서버의 부하를 분담
  • Horizontal Scaling 이라고도 불림
  • 서버가 여러 대가 되기 때문에 각 서버에 걸리는 부하를 균등하게 해주는 ‘로드밸런싱’이 필수적으로 동반

로드밸런싱 : 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리

** 확장이 유연하며 Scale-Up에 비해 비용 부담이 적다. 하지만 여러 노드를 연결해 병렬 컴퓨팅
환경을 구성하고 유지하려면 아키텍처에 대한 높은 이해도가 필요하다.

2. Scale-Up

  • 기존의 서버를 보다 높은 사양으로 업그레이드 하여 부하를 처리
  • Vertical Scaling 이라고도 불림

** 관리 비용이나 운영 이슈가 적다. 대신 비용이 많이 들고, 서버가 단 하나이기 때문에 문제가 생기면 서비스 이용이 힘들다.

프로젝트에 Scale - Out 적용

1. Spring Boot 배포

우선, 인스턴스 2개에 Application을 배포했다.

인스턴스 2개로 트래픽이 분산되는 것을 확인하기 위해 EC2 인스턴스 IP, 호스트 이름을 출력하는 API를 추가했다.

2. 보안 그룹 설정

로드 밸런서의 경우 포트 80에 대한 액세스를 허용했다.

EC2의 경우 로드 밸런서 보안 그룹에 대한 액세스를 허용하는 규칙을 추가했다.

로드 밸런서가 EC2 인스턴스에 액세스할 수 있다.

3. 대상 그룹 생성

로드 밸런서에 대한 대상 그룹을 생성했다.

만든 대상 그룹은 8080 포트에서 요청을 수신할 수 있다. 아직 로드 밸런서에 연결하지 않았기 때문에 unused 상태다.

4. 로드 밸런서 생성

로드 밸런서는 일반적으로 Layer 4 계층 Layer 7 계층 두 가지로 나누어 볼 수 있다.

  • Layer 4 : 네트워크 및 전송 계층 프로토콜(TCP, UDP)에서의 사용자 요청(Network Load Balancer)
  • Layer 7 : HTTP(s)와 같은 애플리케이션 계층 프로토콜에서의 사용자 요청(Application Load Balancer)

NLB는 4 계층에서 ALB는 7 계층에서 로드 밸런싱을 수행하기 때문에 NLB가 ALB보다 빠른 속도와 고성능을 제공한다. 게임, 스트리밍 서비스 등에 적합하다.

웹 통신이 중요한 우리 프로젝트에는 ALB를 생성했다.

포트 80의 모든 요청은 이전에 생성한 대상 그룹으로 전달된다.

두 인스턴스 모두 정상임을 확인했다.

0개의 댓글