2024-08-01 MSA (Microservices Architecture) - 4

박영무·2024년 8월 1일
0

MSA

목록 보기
4/12
post-thumbnail

강의 자료 링크 (클릭)

목표

  1. Load Balancing의 개념에 대해 이해한다.
  2. Load Balancing Algorithm에 대해 이해한다.



Load Balancing

- 네트워크 트래픽을 여러 서버로 분산시켜 서버의 부하를 줄이고, 시스템의 성능과 가용성을 높이는 기술이다.

- Client-Side Load Balancing과 Server-Side Load Balancing이 있다.

1. Client-Side Load Balancing

- 요청을 보내는 클라이언트가 직접 어떤 서비스 인스턴스로 요청을 보낼지를 결정한다.

- 클라이언트는 Service Discovery (ex: Eureka)를 통해 동적으로 서비스 인스턴스 목록을 조회한다.

- ex) Spring Cloud LoadBalancer, Ribbon

- 장점

	- 로드 밸런싱 로직이 클라이언트에 분산되어 있어, 단일 장애 지점을 제거할 수 있다.
    - 클라이언트가 다양한 로드 밸런싱 전략을 쉽게 적용할 수 있다.

- 단점

	- 각 클라이언트가 인스턴스 목록을 관리해야 하므로, 인스턴스 상태를 동기화하는 데 어려움이 있을 수 있다.
    - 각 클라이언트가 로드 밸런싱 로직을 구현해야 하므로, 클라이언트 코드의 복잡성이 증가할 수 있다.


2. Server-Side Load Balancing

- 클라이언트가 직접 서비스 인스턴스를 선택하는 대신, 요청을 중간에 위치한 로드 밸런서 서버로 보낸다.

- ex) Nginx, AWS Elastic Load Balancer (ELB)

- 장점

	- 클라이언트는 단순히 로드 밸런서의 주소만 알면 되므로, 클라이언트 쪽 로직이 단순해진다.
    - 모든 로드 밸런싱 로직이 서버에 중앙 집중화되어 있어, 관리와 설정이 용이하다.

- 단점

	- 로드 밸런서 서버가 중단되면 모든 트래픽이 차단되는 단일 장애 지점이 존재한다.
    - 로드 밸런서 서버의 용량에 따라 처리할 수 있는 요청의 양이 제한될 수 있다.


Load Balancing Algorithm

- 로드 밸런서가 서로 다른 클라이언트 요청 각각에 가장 적합한 서버를 결정하기 위해 따르는 규칙 세트이다.

- Static 방식과 Dynamic 방식의 Load Balancing Algorithm이 존재한다.

1. Round-Robbin (Static Load Balancing)

	- 각 서버에 순차적으로 요청을 분배하는 방식이다.
	- 라운드 로빈 방식에서는 권한 있는 이름 서버가 특수 하드웨어나 소프트웨어 대신 로드 밸런싱을 수행한다.
    - DNS는 서버 팜에 있는 여러 서버의 IP 주소를 차례대로 또는 라운드 로빈 방식으로 반환한다.

2. Least Connections (Dynamic Load Balancing)

	- 로드 밸런서는 활성 연결이 가장 적은 서버를 확인하고 해당 서버로 트래픽을 전송한다.


Load Balancing Architecture

- 아래의 [그림 1]은 AWS에서 제공하는 Load Balancing 작동 방법을 나타낸다.

[그림 1]


자료 출처 1 - https://www.ibm.com/kr-ko/topics/load-balancing

자료 출처 2 - https://aws.amazon.com/ko/what-is/load-balancing/

profile
시행착오는 성장의 밑거름입니다.

1개의 댓글

comment-user-thumbnail
2024년 8월 2일

공식 문서 찾아서 잘 정리해주셨군요 👍🏻

답글 달기