로드 밸런싱 테스트: 두 개의 Loans 마이크로서비스 인스턴스 시작하기

날아올라돼지야·2024년 8월 28일
0

Loans 마이크로서비스의 두 개의 인스턴스를 시작하고 클라이언트 사이드 로드 밸런싱(Client-side Load Balancing)의 작동 방식을 데모로 확인해보겠습니다.

1. Docker Compose 파일 수정

먼저, docker-compose.yml 파일을 열고 Loans 마이크로서비스에 대한 구성을 복사하여 동일한 파일 아래에 붙여넣습니다.

  • 서비스 이름 변경: 각 인스턴스는 별도의 컨테이너로 동작하기 때문에 서비스 이름이 고유해야 합니다. 예를 들어 loans1로 변경합니다.
  • 컨테이너 이름 변경: 컨테이너 이름도 고유해야 합니다. 따라서 loans-ms1로 변경합니다.
  • 포트 번호 변경: 동일한 호스트에서 포트 충돌을 방지하기 위해 포트 번호를 다르게 설정해야 합니다. 예를 들어, 8090에서 8091로 변경합니다.
services:
  loans:
    image: eazybytes/loans:s8
    container_name: loans-ms
    ports:
      - "8090:8090"
    ...
  loans1:
    image: eazybytes/loans:s8
    container_name: loans-ms1
    ports:
      - "8091:8090"
    ...

2. Docker Compose 실행

수정된 docker-compose.yml 파일을 저장한 후, 다음 명령어를 실행하여 Docker Compose를 시작합니다:

docker-compose up -d

이 명령어는 모든 마이크로서비스와 함께 두 개의 Loans 인스턴스를 시작합니다. 실행이 완료되면 CPU 사용량이 증가할 수 있으므로 잠시 기다립니다.

3. Eureka 대시보드에서 인스턴스 확인

Docker 컨테이너가 실행된 후, 웹 브라우저에서 Eureka 대시보드(http://localhost:8070)를 열어 두 개의 Loans 인스턴스가 성공적으로 등록되었는지 확인합니다.

  • Loans 마이크로서비스 인스턴스: 두 개의 Loans 인스턴스가 등록되었으며, loans-msloans-ms1이 각각 다른 포트에서 실행되고 있는지 확인할 수 있습니다.
  • Eureka Apps API: 또한 http://localhost:8070/eureka/apps를 통해 API로 모든 인스턴스 세부 정보를 확인할 수 있습니다.

4. 클라이언트 사이드 로드 밸런싱 테스트

이제 Postman을 사용하여 클라이언트 사이드 로드 밸런싱을 테스트할 수 있습니다.

  1. 데이터 생성: 각 마이크로서비스에 대한 데이터를 생성합니다. 계정, 카드, 대출 정보를 생성하고 동일한 전화번호를 사용합니다.
  2. FetchCustomerDetails API 테스트: FetchCustomerDetails API를 호출할 때마다 로드 밸런싱이 이루어져 요청이 번갈아 가며 두 개의 Loans 인스턴스 중 하나로 전달됩니다.
GET http://localhost:8080/api/fetchCustomerDetails?mobileNumber=1234567890
  • 성공적인 응답: Loans 인스턴스 중 하나에 데이터가 존재할 경우, 성공적인 응답을 받습니다.
  • 실패 응답: 데이터가 없는 인스턴스로 요청이 전달되면, loan not found 오류를 받게 됩니다.

이 방식으로 클라이언트 사이드 로드 밸런싱이 실제로 어떻게 작동하는지 확인할 수 있습니다.

5. 결론

클라이언트 사이드 로드 밸런싱이 어떻게 작동하는지 확인했습니다. Loans 마이크로서비스의 두 개의 인스턴스를 통해 로드 밸런싱의 실제 동작을 확인했으며, Eureka 서버를 통해 마이크로서비스 인스턴스가 어떻게 관리되고 있는지도 알 수 있었습니다. 다음으로 서버 사이드 서비스 디스커버리 및 로드 밸런싱에 대해 다룰 예정입니다.

profile
무슨 생각하며 사니

0개의 댓글