네트워크/개념

[Network] - 로드 밸런싱(Load Balancing)

빗방울소리 2024. 2. 2. 23:05

 

 

목차

1. 로드 밸런싱(LB) 이란?
2. ELB(Elastic Load Balancer)
3. Nginx란?
4. 마치며

 

 

 

 

1. 로드 밸런싱(LB) 이란?

더보기

 

 

 

로드 밸런싱(load balancing)은 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. - 위키백과

 

 

 

 

 

 

  위키백과에서는 로드 밸런싱에 대해 위와같이 정의하고 있다. 쉽게 이해하자면 서버 이용자가 많아짐에 따라 트래픽이 과부하되어 서버가 뻗는 것을 방지하기 위해 트래픽을 분산시키는 일련의 작업을 의미한다.

 

 

 

 

 

 

 

 

 현재 시장에 나와있는 서비스들은 많은 수의 이용자들을 대상으로 개발되기 때문에 로드 밸런싱은 필수적으로 이루어진다고 볼 수 있다. 

 

2. ELB(Elastic Load Balancer)

더보기

AWS(amazon web service)를 통한 서버 배포 시에 ELB라는 개념이 등장한다. ELB는 AWS에서 제공하는, 클라우드 환경에서 네트워크 트래픽을 여거 대의 인스턴스로 분산시켜주는 서비스이다.

 

 

 

AWS ELB는 세 가지 유형으로 구분된다. 각각 Application Load Balancer(ALB), Network Load Balancer(NLB), 및 Classic Load Balancer(CLB)라는 세 가지 유형이 존재한다. CLB의 경우 ELB의 가장 기본적인 형태로 현재는 잘 쓰이지 않으므로 ALB, NLB에 대해서만 알아도 무방하다.

 

 

 

1. ALB(Application Load Balancer(ALB)

- Application Layer에서 동작하는 LB로 주로 HTTP/HTTPS과 같은 프로토콜의 트래픽을 처리하는 로드 밸런싱에 용이하다. 

 

 

 

2. NLB(Network Load Balancer(NLB)

- Network Layer에서 동작하는 LB로 TCP/UDP과 같은 프로토콜의 트래픽을 처리하는 로드 밸런싱에 용이하다. 로드 밸런서에 대한 고정 IP주소를 지원하며 TCP/UDP기반 서버 구축 시에 사용한다.

 

 

 

따라서 일반적으로 웹 서버의 배포를 고려한다고 했을 때, ALB를 이용하여 로드 밸런싱을 하게 된다.

 

 

 

3. Nignx란?

더보기

 

 

Nginx 로고

 

 

 

Nginx는 웹 서버 및 리버스 프록시 서버로 널리 사용되는 오픈 소스 소프트웨어이다. 배포하고자 하는 서비스앞에 웹 서버를 운용하고자 할 때, Nginx를 활용하면 쉽게 그것을 가능하게 해주며 서버로 들어오는 트래픽을 로드 밸런싱하고자 할 때 사용할 수 있다.

 

 

 

 

 

리버스 프록시 뿐만아니라 Nginx는 SSL/TLS를 지원하기에 로그인과 같은 기능을 사용하기 위해 HTTPS 프로토콜을 사용해야 하는 경우 Nginx를 이용하여 처리해 줄 수 있다.

 

 

 

 

 

 

 따라서 Nginx를 사용하는 이유는 크게 2가지로 생각할 수 있겠다.

 

1. 리버스 프록시로 활용하여 트래픽 과부하 방지를 위한 로드 밸런싱
2. HTTPS 트래픽 처리를 위한 웹 서버 운용

 

 

 이 이외에도 다양한 이유때문에 Nginx를 사용하지만 가장 큰 이유는 위의 두 가지라고 생각한다. 참고로 리버스 프록시와 프록시에 관련해서는 다른 글에서 다시 한번 정리할 예정이다.

 

4. 마치며

 

 인턴 기간동안 스프링 기반의 서비스를 개발하고 배포하면서 로드 밸런싱 이라는 개념에 대해 자주 접하게 되어 한번 정리하고자 하였고, 이번에 글을 쓰면서 로드 밸런싱에 대해 정리해보았다. 서비스 배포시에 특히 중요한 개념이므로 한번 짚고 넘어갈 가치가 있는 개념이라고 생각한다.