✅ 로드밸런서란?
로드밸런서는 여러 서버에 걸쳐 네트워크 트래픽을 효율적으로 분배하는 장치 또는 소프트웨어이다.
이를 통해 사용자가 동시에 여러 요청을 보내도 하나의 서버에 과부하가 걸리지 않고,
시스템 성능과 가용성을 유지할 수 있다.
하나의 서버에 많은 트래픽이 몰리게 되면 서버는 부하를 감당하지 못하고 다운되게 된다.
이런 문제를 해결하기 위해 Scale Up과 Scale out 방식 중 한 가지를 사용하여 해결한다.
📌Scale Up & Scale Out
📍Scale up
스케일 업은 수직 확장이라고도 불리며, 기존의 서버나 인스턴스의 성능을 높이는 방식이다.
즉, 서버 자체에 리소스를 추가하는 방식이다.
다음과 같은 방법이 있다.
- CPU 추가 : 서버에 더 빠르고 강력한 CPU를 추가함으로써 처리 능력을 향상 시킨다.
- 메모리 확장 : 서버의 RAM 용량을 늘려 더 많은 데이터를 빠르게 처리할 수 있도록 한다.
- 디스크 용량 확장 : 스토리지를 늘려 서버가 더 많은 데이터를 저장하고 처리할 수 있게 만든다.
📍Scale Out
스케일 아웃은 수평 확장이라고도 불리며, 여러 서버를 추가하여 트래픽을 분산 처리하는 방식이다.
로드밸런서는 스케일 아웃 시 필수적인 역할을 수행한다.
서버 수를 동적으로 늘리고 줄이며, 각 서버에 균등하게 트래픽을 분산하여 부하를 최소화한다.
- 서버 추가 : 트래픽이 증가하면 새로운 서버 인스턴스를 추가하여 기존 서버에 걸리는 부하를 분산시킨다.
- 서버 제거 : 트래픽이 감소할 경우, 더 이상 필요 없는 서버를 제거하여 비용을 절감한다. → "스케일 인"에 해당함
스케일 아웃의 장점은 시스템에 물리적 한계가 적다는 점이다.
여러 서버를 쉽게 추가하거나 제거할 수 있어, 매우 큰 규모의 트래픽을 처리하는 데 유리하다
클라우드 환경에서 흔히 사용되는 방식으로,
AWS, Google Cloud, Azure와 같은 플랫폼에서 자동 확장(Auto Scaling) 기능을 통해
스케일 아웃과 스케일 인을 쉽게 관리할 수 있다.
단, 스케일 아웃을 하게 되면 서버가 여러 대가 되기 때문에
각 서버에 걸리는 부하를 고르게 나누기 위해서는 로드밸런싱이 필수적으로 동반되어야 한다.
✅ 로드밸런싱의 이점
로드밸런싱은 네트워크 서비스를 여러 서버로 분산하여
서비스의 성능, 가용성, 안정성을 높이는 중요한 기술이다.
로드밸런서를 도입함으로써 얻을 수 있는 이점은 다음과 같다.
📍1. 고가용성 (High Availability)
로드밸런싱의 가장 중요한 이점 중 하나이다.
여러 서버가 하나의 클러스터로 구성되어 트래픽을 분산 처리하기 때문에,
하나의 서버에 문제가 발생하더라도 나머지 서버들이 트래픽을 처리할 수 있다.
이로 인해 서비스의 중단을 방지하고 다운타임을 최소화할 수 있다.
또한, 로드밸런서는 지속적으로 서버 상태를 모니터링하고
장애가 발생한 서버를 자동으로 제외해 안정적인 서비스를 제공한다.
📍2. 확장성 (Scalability)
로드밸런서는 시스템의 수평적 확장을 용이하게 만든다.
트래픽이 증가하면 서버를 추가하여 부하를 분산시키고,
트래픽이 감소하면 불필요한 서버를 제거한다.
이러한 자동 확장(Autoscaling) 기능을 통해 애플리케이션은 트래픽 변화에 유연하게 대응할 수 있으며,
수요에 맞춰 자원을 효율적으로 사용할 수 있다.
특히 클라우드 환경에서 사용되는 로드밸런서는 이 확장성을 극대화할 수 있다.
📍3. 성능 향상 (Improved Performance)
로드밸런서는 서버 간 트래픽을 균등하게 분배하여 각 서버에 걸리는 부하를 줄이고,
응답시간을 최적화한다.
이를 통해 사용자에게 빠르고 일관된 응답을 제공한다.
예를 들어, 사용자가 웹 애플리케이션에 접근할 때 로드밸런서가 가장 덜 부하가 걸린 서버에 요청을 전달함으로써,
지연 시간을 최소화할 수 있다.
또한, 로드밸런서가 데이터 캐싱이나 압축을 통해 네트워크 트래픽을 최적화하여 성능을 추가로 향상시킬 수 있습니다.
📍4. 장애 대응 능력 (Fault Tolerance)
로드밸런서는 장애가 발생한 서버를 자동으로 감지하고 해당 서버에 대한 요청을 중지하며,
나머지 정상 서버로 트래픽을 재분배한다.
이를 통해 특정 서버에 장애가 발생하더라도 전체 서비스가 중단되지 않고 지속적으로 운영될 수 있다.
Failover 메커니즘을 통해 서버가 장애가 발생해도 시스템은 안정성을 유지하며,
서비스의 신뢰성을 높일 수 있다.
📍5. 보안 강화 (Security Enhancement)
로드밸런서는 보안 관점에서도 여러 가지 이점을 제공한다.
SSL/TLS 종료(SSL Offloading)를 통해 로드밸런서가 SSL/TLS 암호화와 복호화 작업을 처리하므로,
각 서버에 걸리는 암호화 부하를 줄이고 보안 관리를 중앙에서 처리할 수 있다.
또한, 방화벽 역할을 수행하여 외부로부터의 불필요한 트래픽을 차단하거나 공격을 방어할 수 있습니다.
일부 고급 로드밸런서는 DDoS(분산 서비스 거부) 공격을 방어하는 기능을 제공하기도 한다.
✅ 로드밸런싱 알고리즘
로드밸런싱에는 여러 알고리즘이 사용된다.
로드밸런싱 알고리즘은 정적(static)과 동적(dynamic)으로 분류할 수 있다.
📌정적 로드밸런싱
정적 알고리즘은 서버의 상태나 부하를 고려하지 않고 사전에 설정된 규칙에 따라 트래픽을 분배한다.
📍1. 라운드 로빈 (Round Robin)
요청을 순차적으로 각 서버에 분배한다.
서버의 부하를 고려하지 않고, 요청을 순서대로 균등하게 할당한다.
📍2. 가중치 기반 라운드 로빈 (Weighted Round Robin)
서버마다 성능에 따라 가중치를 부여한 후, 가중치에 비례하여 요청을 분배한다.
더 강력한 서버에는 더 많은 트래픽이 전달되도록 설계된다.
📍3. IP 해시 (IP Hash)
클라이언트의 IP 주소를 해시하여 특정 서버에 고정되도록 트래픽을 분배합니다.
동일한 사용자는 항상 동일한 서버에 연결되므로 세션 유지가 필요한 경우 유용합니다.
📌동적 로드밸런싱
동적 알고리즘은 실시간으로 서버 상태를 분석하여 트래픽을 유연하게 분배한다.
📍1. 최소 연결(Least Connections)
현재 연결된 세션이 가장 적은 서버에 트래픽을 분배한다.
서버가 처리하는 연결 수를 고려해 부하를 고르게 분산할 수 있다.
긴 세션이 많은 경우 유리하다.
📍2. 최소 응답 시간(Least Response Time)
서버의 현재 응답 시간을 기준으로 가장 빠르게 응답할 수 있는 서버에 트래픽을 전달한다.
이는 서버 상태와 네트워크 지연 시간을 모두 고려해 트래픽을 분배하는 방식이다.
📍3. 가중치 최소 연결(Weighted Least Connections)
서버의 성능에 따라 가중치를 부여한 후, 가장 적은 연결 수를 가진 서버에 트래픽을 분배한다.
성능이 좋은 서버가 더 많은 트래픽을 처리하도록 설계된다.
📍4. 동적 라운드 로빈(Dynamic Round Robin)
서버의 현재 상태나 자원 사용률에 따라 라운드 로빈 방식의 트래픽 분배에 유동성을 추가한 방식이다.
동적 로드 밸런싱은 정적 방식보다 더 복잡하지만, 서버 자원 관리와 성능 최적화에 더 유리하다.
'Distributed System' 카테고리의 다른 글
[MSA] MSA 환경에서 장애 전파를 막기 위한 전략 (Tracing, Circuit Breaker, Rate Limit) (2) | 2025.02.26 |
---|---|
[JAVA로 로드밸런서 구현하기] Registration (3) (0) | 2024.10.14 |
[JAVA로 로드밸런서 구현하기] L3/L4 로드밸런서에 대해 알아보자 (2) (0) | 2024.10.13 |