# ALB, NLB,ELB 차이는?

## ALB, NLB,ELB 차이는?

<figure><img src="https://2649832514-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5HOStxvx-Jr0fqZhyW%2Fuploads%2F530CwSh7Hx8X5uwT4Jhw%2F1.png?alt=media&#x26;token=1253dafd-e103-4be6-9398-e8120daaff6b" alt=""><figcaption><p>https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html</p></figcaption></figure>

## 로드밸런서?

* 우리가 이야기하는 로드밸런서의 개념은 트래픽을 균등하게 분산시켜 주는 것을 의미한다
* 특정 이벤트로 인해 트래픽이 몰렸을 경우 애플리케이션이 감당할 수 있는 트래픽은 한정적이다. 이때 몰려있는 트래픽을 분산시켜 하나의 애플리케이션에서 감당할 수 있는 트래픽을 저하시켜주는게 로드밸런서의 역할이라고 보면된다
* 그외 AWS 공식 문서에서 설명하는 로드밸런서의 특징은 4가지로 볼수 있다

#### 가용성

* 로드밸런서에서 목적지의 상태를 판별하여 중지된 경우에는 요청을 제한할 수 있다

#### 확장성

* 필요한 경우 다른 서버를 추가하거나 제거할 수 있도록 애플리케이션 트래픽을 예측할 수 있다

#### 보안

* DDOS 공격이나 악성 컨텐츠를 사전에 차단할 수 있다
* 추가 보안을 위해 네트워크 방화벽 그룹을 통해 인입되는 요청을 제한할 수 있다

#### 성능

* 이전에 설명한 트래픽을 분산시켜 애플리케이션의 부하를 줄여 일정한 성능을 확보할 수 있다

### 그렇다면 로드밸런싱은 어떤 알고리즘으로 동작하는가?

* 알고리즘은 크게 두가지로 구분할 수 있다.
* 고정된 규칙으로 동작하는 정적 알고리즘과 서버의 상태에 따라 반응하는 동적 알고리즘이다

### 정적 알고리즘

#### 라운드 로빈 방식

* 순차적으로 분산시켜주는 방식이 라운드 로빈 방식이다

#### 가중 기반 라운드 로빈 방식

* 목적지에 가중치를 두어 가중치가 높은 서버에 더 많은 트래픽을 전달할 수 있다

#### IP 해시 방식

* 클라이언트 IP 주소에 해싱값을 두어 특정 서버에 전달할 수 있다

### 동적 알고리즘

#### 최소 연결 방법

* 최소 연결 방법은 로드 밸런서가 연결이 가장 적은 서버를 확인하고 해당 서버로 트래픽을 전송한다

#### 가중치 기반 최소 연결 방법

* 각 서버에 가른 가중치 또는 용량을 할당할 수 있으며 로드 밸런서는 용량별 연결이 가장 적은 서버로 새 클라이언트 요청을 전송한다

#### 최소 응답 시간 방법

* 응답을 전송하는데 걸리는 총 시간과 활성 연결을 결합하여 최상의 서버를 결정한다

#### 리소스 기반 방법

* 각 서버에 에이전트를 심어 해당 서버에 트래픽을 전달하기 전에 에이전트에 충분한 여유 리소스가 있는지 확인한다

## 그렇다면 ALB, NLB, ELB는 무엇인가?

| 기능                     | Application Load Balancer | Network Load Balancer               | Gateway Load Balancer    |
| ---------------------- | ------------------------- | ----------------------------------- | ------------------------ |
| 로드 밸런서 유형              | 계층 7                      | 계층 4                                | 계층 3 게이트웨이 + 계층 4 로드 밸런싱 |
| 대상 유형                  | IP, 인스턴스, Lambda          | IP, 인스턴스, Application Load Balancer | IP, 인스턴스                 |
| 흐름/프록시 동작 종료           | 예                         | 예                                   | 아니요                      |
| 프로토콜 리스너               | HTTP, HTTPS, gRPC         | TCP, UDP, TLS                       | IP                       |
| 다음을 통해 연결 가능           | VIP                       | VIP                                 | 라우팅 테이블 항목               |
| 리디렉션                   | ✔                         |                                     |                          |
| 고정 응답                  | ✔                         |                                     |                          |
| Desync Mitigation Mode | ✔                         |                                     |                          |
| HTTP 헤더 기반 라우팅         | ✔                         |                                     |                          |
| HTTP2/gRPC             | ✔                         |                                     |                          |

참고 : <https://aws.amazon.com/ko/elasticloadbalancing/features/?nc=sn&loc=2&dn=1>

###

### ELB

* ELB는 AWS에서 제공하는 로드밸런서를 통칭하는 의미이다
* ELB의 종류로는 ALB, NLB, GLB, CLB가 있다

###

### ALB

* OSI 7 Layer중에서 애플리케이션 레이어에서 로드밸런싱 동작한다
* HTTP/HTTPS 프로토콜의 URL의 PATH 기반으로 전송할 타겟을 지정할 수 있다
* ALB는 SSL 적용이 가능하다
* NLB보다 성능적으로는 느릴수는 있어도 요청에 따른 패킷에 따라 다양한 전송 규칙을 지정할 수 있다

###

### NLB

* OSI 7 Layer중에서 전송계층 레이어에서 로드밸런싱 동작한다
* TCP/UDP 프로토콜 기반으로 전송할 타겟을 지정할 수 있다
* NLB는 프로토콜을 구분하지 못하기 때문에 SSL 적용이 불가능하다
* 고성능을 요구하는 환경에서의 부하분산에 적합하며, 낮은 레이턴시로 초당 수백만 건의 요청을 처리할 수 있다.
