Docker 환경에서 테스트

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

이번 강의에서는 Docker 환경에서 RabbitMQ를 활용한 이벤트 주도 마이크로서비스의 변경 사항을 테스트 합니다. 이 과정에서 AccountsMessage 마이크로서비스를 Docker 환경에서 설정하고, RabbitMQ를 통해 이벤트가 올바르게 전달되고 처리되는지 확인합니다.

1. Docker 이미지 생성 및 업데이트

  • Docker 이미지 생성: Accounts, Message 등의 마이크로서비스를 위한 Docker 이미지를 생성하고, 태그 이름은 S13으로 지정했습니다. 이 이미지들은 Docker Hub에 푸시되어 다른 개발자들도 사용할 수 있습니다.

  • Docker Compose 파일 업데이트:

    • RabbitMQ 서비스를 추가했습니다. 서비스 이름은 rabbit이며, 기본 포트 설정과 RabbitMQ의 기본 설정을 사용합니다.
    • 각 마이크로서비스(Config Server, Eureka Server, Accounts, Loans, Cards, Gateway Server)의 태그 이름을 S12에서 S13으로 변경했습니다.
    • AccountsMessage 마이크로서비스에 depends_on 속성을 추가하여 RabbitMQ 서비스에 의존하도록 설정했습니다.
    • 환경 변수로 SPRING_RABBITMQ_HOST를 추가하여 RabbitMQ 서비스와의 통신이 가능하도록 설정했습니다.

2. Docker 컨테이너 시작

  • 로컬 시스템에서 기존 인스턴스 및 컨테이너 종료: 모든 실행 중인 로컬 애플리케이션과 Docker 컨테이너를 중지했습니다. 특히 RabbitMQ와 Keycloak 컨테이너를 중지하여 새로운 설정이 적용되도록 했습니다.

  • Docker Compose로 모든 컨테이너 시작: docker-compose up -d 명령어를 사용하여 모든 컨테이너를 시작했습니다. 이 과정에서 필요한 경우, 시스템 리소스를 확보하기 위해 불필요한 컨테이너나 설정(Grafana 관련)을 제거할 수 있습니다.

3. RabbitMQ와 Keycloak 설정

  • RabbitMQ 콘솔 확인: RabbitMQ 콘솔에서 communication-sentsend-communication이라는 두 개의 교환(exchange)이 생성되었는지 확인했습니다. 이전에 잘못 생성된 고아 교환(emailsms-out-0)은 새로운 RabbitMQ 컨테이너에서는 보이지 않습니다.

  • Keycloak 설정: Keycloak 컨테이너가 새로 시작되었기 때문에 클라이언트와 역할을 새로 생성해야 했습니다. EazyBankCallCenter-cc라는 클라이언트를 생성하고, accounts 역할을 할당했습니다. 이 설정을 통해 Postman에서 올바른 엑세스 토큰을 얻을 수 있었습니다.

4. API 테스트

  • 계정 생성 요청: Postman을 사용하여 Accounts 마이크로서비스에 계정을 생성하는 요청을 보냈습니다. 요청 후 성공적인 응답(HTTP 201)을 받았고, 이로써 이벤트가 RabbitMQ를 통해 전송되었음을 확인했습니다.

  • 로그 확인:

    • Message 마이크로서비스의 로그에서는 이메일과 SMS가 성공적으로 전송된 것을 확인했습니다.
    • Accounts 마이크로서비스의 로그에서는 통신 요청이 성공적으로 처리되었으며, 통신 상태가 업데이트된 것을 확인했습니다.

5. GitHub 리포지토리 업데이트

  • 코드 확인: 이번 섹션에서 논의한 모든 코드는 GitHub 리포지토리에 section_13 폴더로 업로드되었습니다. 이벤트 주도 마이크로서비스와 RabbitMQ, Spring Cloud Functions 및 Spring Cloud Stream을 활용한 구현 내용이 포함되어 있습니다.

결론 및 다음 단계

이번 강의에서는 Docker 환경에서 RabbitMQ를 활용한 이벤트 주도 마이크로서비스의 통합과 테스트를 성공적으로 수행했습니다. 이를 통해 마이크로서비스 간의 비동기 통신이 원활하게 이루어졌음을 확인했습니다.

다음 섹션에서는 Kafka를 활용하여 이벤트 주도 마이크로서비스를 구현하는 방법을 다룰 예정입니다. 이 과정을 통해 다양한 이벤트 스트리밍 기술을 비교하고, 각각의 장단점을 이해할 수 있을 것입니다.

감사합니다. 다음 강의에서 뵙겠습니다.

profile
무슨 생각하며 사니

0개의 댓글