MSA 관점에서 라운드로빈, 라우팅, 로드밸런싱 개념 정리

CosmoNumb·2024년 8월 6일
0

MSA

목록 보기
6/13

마이크로서비스 아키텍처(MSA)에서는 시스템의 다양한 컴포넌트들이 독립적으로 배포되고 확장됩니다. 이로 인해 서비스 간의 상호작용을 효과적으로 관리하고, 성능과 신뢰성을 보장하기 위해 다양한 기술과 패턴이 사용됩니다. 이 중 라운드로빈, 라우팅, 로드밸런싱은 MSA에서 중요한 역할을 합니다. 이 글에서는 각각의 개념을 MSA 관점에서 정리해둡니다.

1. 라운드로빈 (Round Robin)

라운드로빈은 가장 간단한 형태의 로드밸런싱 알고리즘 중 하나입니다. 서버에 도착한 요청을 순차적으로 각 서버에 할당하는 방식입니다.

  • 작동 방식: 요청이 들어올 때마다 서버 목록에서 순서대로 서버를 선택하여 요청을 전달합니다. 마지막 서버에 도달하면 다시 첫 번째 서버로 돌아가서 요청을 처리합니다.
  • 장점: 구현이 간단하고, 모든 서버에 고르게 요청을 분배할 수 있습니다.
  • 단점: 서버의 처리 능력을 고려하지 않기 때문에, 서버 간의 성능 차이가 큰 경우 부하가 고르게 분산되지 않을 수 있습니다.

MSA에서는 라운드로빈 방식으로 여러 인스턴스에 요청을 분배하여 단일 서버의 부하를 줄이고, 시스템의 가용성을 높이는 데 사용됩니다.

2. 라우팅 (Routing)

라우팅은 클라이언트 요청을 적절한 백엔드 서비스로 전달하는 과정입니다. MSA에서는 API 게이트웨이가 주로 라우팅을 담당합니다.

  • 작동 방식: 클라이언트 요청의 URL, HTTP 메서드, 헤더 등의 정보를 기반으로 적절한 서비스로 요청을 전달합니다.
  • 경로 기반 라우팅: 요청 경로에 따라 요청을 다른 서비스로 전달합니다. 예를 들어, /orders 경로로 오는 요청은 주문 서비스로, /products 경로로 오는 요청은 상품 서비스로 라우팅됩니다.
  • 호스트 기반 라우팅: 호스트 이름에 따라 요청을 다른 서비스로 전달합니다.

라우팅은 MSA에서 서비스 간의 의존성을 줄이고, 각 서비스의 독립성을 유지하는 데 중요한 역할을 합니다.

3. 로드밸런싱 (Load Balancing)

로드밸런싱은 다수의 서버에 부하를 분산시켜 시스템의 성능과 신뢰성을 향상시키는 기술입니다. MSA에서는 로드밸런싱을 통해 여러 서비스 인스턴스에 요청을 고르게 분배하여 단일 인스턴스의 과부하를 방지합니다.

  • 클라이언트 측 로드밸런싱: 클라이언트가 직접 여러 서버 중 하나를 선택하여 요청을 보냅니다. 클라이언트 라이브러리를 통해 구현됩니다.
  • 서버 측 로드밸런싱: 로드밸런서가 클라이언트의 요청을 받아 여러 서버 중 하나로 전달합니다. 일반적으로 하드웨어 로드밸런서나 소프트웨어 로드밸런서를 통해 구현됩니다.
  • 분산 로드밸런싱: DNS 라운드로빈과 같은 방법을 사용하여 클라이언트가 요청을 보낼 서버를 분산합니다.

로드밸런싱은 MSA에서 중요한 역할을 하며, 이를 통해 시스템의 확장성, 가용성, 성능을 보장할 수 있습니다.


MSA에서의 활용 예시

  1. 상품 서비스의 라운드로빈 로드밸런싱:

    • 예를 들어, 상품 서비스(Product Service)가 두 개의 인스턴스(19093, 19094)로 배포되어 있다고 가정합니다. 라운드로빈 방식으로 로드밸런싱을 적용하면, 각 클라이언트 요청이 순차적으로 두 인스턴스에 분배됩니다.
  2. API 게이트웨이를 통한 라우팅:

    • API 게이트웨이는 클라이언트 요청을 받아 적절한 서비스로 라우팅합니다. 예를 들어, /orders 경로로 오는 요청은 Order 서비스로, /products 경로로 오는 요청은 Product 서비스로 라우팅됩니다.
  3. 서버 측 로드밸런싱:

    • 서버 측 로드밸런싱은 로드밸런서가 클라이언트의 요청을 받아 여러 서버 중 하나로 전달합니다. 이는 클라이언트가 서비스의 여러 인스턴스의 존재를 알 필요 없이 하나의 엔드포인트로 요청을 보내도록 합니다.

0개의 댓글