괜찮아! 로드밸런싱은 진짜 중요하지만 살짝 헷갈릴 수 있어. 딱 정리해줄게!
쉽게 말하면 ‘트래픽을 나눠주는 교통 정리’ 역할이야 🚦
🌐 로드밸런싱 (Load Balancing)이란?
여러 서버(또는 서비스 인스턴스)로 사용자 요청을 분산해서
하나의 서버에 과부하가 걸리지 않도록 트래픽을 나눠주는 기술이야.
🧭 왜 필요할까?
| 이유 | 설명 |
|---|
| ✅ 성능 향상 | 한 서버가 모든 요청을 처리하면 느려져. 여러 대가 나눠 처리하면 쾌적해져 |
| ✅ 장애 대응 | 한 서버가 죽어도 다른 서버가 대신 처리 가능 (가용성 확보) |
| ✅ 확장성 | 트래픽이 많아지면 서버를 더 추가해서 처리 가능 (수평 확장) |
⚙️ 어떻게 작동하나?
- 사용자가
www.example.com으로 요청을 보냄
- 로드밸런서가 중간에서 대기
- 서버 A, B, C 중 하나로 요청을 분산시킴
- 응답을 사용자에게 전달
📊 로드밸런싱 방식 (알고리즘)
| 방식 | 설명 |
|---|
| 🔁 Round Robin | 순서대로 분산 (A → B → C → A...) |
| ⚖️ Least Connections | 연결 수가 가장 적은 서버로 전달 |
| 🧠 IP Hash | IP 주소 기반으로 고정 서버에 연결 (세션 유지에 유리) |
| 🧪 Random | 무작위 선택 |
🧰 어디서 사용되나?
| 위치 | 예시 |
|---|
| 하드웨어 LB | Cisco, F5 등 고가 장비 |
| 소프트웨어 LB | Nginx, HAProxy |
| 클라우드 LB | AWS ELB, GCP Load Balancer, Azure Load Balancer |
| 애플리케이션 레벨 | 스프링 클라우드에서 Eureka + Ribbon, Spring Cloud Gateway 등 |
🧱 예: Spring Cloud 환경에서의 로드밸런싱
[사용자] → [Spring Cloud Gateway] → [Eureka에서 인스턴스 목록 조회] → [적절한 서비스로 전달]
- Gateway는 로드밸런서 역할
- Eureka는 서비스 등록/탐색
- 내부적으로 Ribbon이나 Spring LoadBalancer가 분산 처리함
☁️ 로드밸런싱 + 클라우드
- Kubernetes에서는 Service + Ingress Controller가 로드밸런싱 역할
- AWS에서는 ALB (Application Load Balancer) 사용
🎯 핵심 요약
| 핵심개념 | 내용 |
|---|
| 역할 | 요청 분산, 서버 부하 줄이기 |
| 장점 | 성능 향상, 장애 대응, 확장성 |
| 알고리즘 | 라운드로빈, 최소 연결, IP 해시 등 |
| 적용 위치 | 하드웨어, 소프트웨어, 클라우드, 애플리케이션 |
필요하다면 도식으로 그림 하나 그려줄게!
그리고 스프링에서 직접 로드밸런싱 설정 예시도 보여줄 수 있어.
Spring Cloud LoadBalancer, Ribbon, Gateway 등 중 어떤 게 궁금해? 😊