Apache Kafka를 사용한 마이크로서비스 코드 변경 및 설정

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

Apache Kafka를 사용하여 마이크로서비스 간 비동기 통신을 구현하기 위해서는 계정(Account) 및 메시지(Message) 마이크로서비스 코드를 수정해야 합니다. 다음은 각 단계별로 코드 변경 및 설정 방법을 정리한 내용입니다.

1. 작업 환경 설정

  1. 새 폴더 생성:

    • 섹션 14에서 작업할 새 폴더를 생성합니다. 이전 섹션 13의 코드를 복사하여 섹션 14로 이름을 변경합니다.
    • .idea 폴더를 삭제하고, IntelliJ IDEA에서 섹션 14 코드를 엽니다.
  2. Maven 프로젝트 로드:

    • IntelliJ에서 프로젝트를 열고 Maven 프로젝트를 로드합니다.

2. Apache Kafka 의존성 추가

  1. Accounts Microservice 수정:

    • pom.xml 파일에서 RabbitMQ 관련 의존성을 Kafka 의존성으로 변경합니다.
    • 예를 들어, spring-cloud-stream-binder-rabbitspring-cloud-stream-binder-kafka로 변경합니다.
    • 태그 이름을 s13에서 s14로 업데이트합니다.
    • 변경 후 Maven 프로젝트를 다시 로드합니다.
  2. Message Microservice 수정:

    • Message Microservice의 pom.xml 파일에서도 RabbitMQ 의존성을 Kafka 의존성으로 변경합니다.
    • 마찬가지로 태그 이름을 s13에서 s14로 업데이트합니다.

3. 설정 파일 업데이트

  1. Message Microservice 설정:

    • application.yml 파일에서 RabbitMQ 관련 설정을 삭제하고, Kafka 설정을 추가합니다.
    • spring.cloud.stream.kafka.binder.brokers: localhost:9092로 Kafka 브로커의 위치를 설정합니다.
  2. Accounts Microservice 설정:

    • application.yml 파일에서 RabbitMQ 관련 설정을 삭제하고, Kafka 설정을 추가합니다.
    • 동일하게 spring.cloud.stream.kafka.binder.brokers: localhost:9092로 Kafka 브로커의 위치를 설정합니다.

4. 코드 실행 및 테스트

  1. 마이크로서비스 시작:

    • 모든 마이크로서비스(Config Server, Eureka Server, AccountsApplication, MessageApplication, GatewayServer)를 시작합니다.
  2. Kafka 클러스터 확인:

    • IntelliJ의 Kafkalytic 플러그인을 사용하여 Kafka 클러스터에 연결된 토픽과 소비자(Consumer) 정보를 확인합니다.
  3. 비동기 통신 테스트:

    • Keycloak 서버를 시작하고, Postman에서 액세스 토큰을 받아 계정 생성 API를 호출합니다.
    • Message Microservice에서 브레이크포인트를 걸고, 계정 생성 후 Kafka를 통해 메시지가 전송되는지 확인합니다.
    • H2 콘솔을 통해 계정 테이블의 상태를 확인하여 통신 스위치 값이 null에서 true로 변경되는지 확인합니다.

5. Docker 환경에서 테스트

  1. Docker 이미지 생성 및 배포:
    • 섹션 14에 맞는 Docker 이미지를 생성하고 Docker Hub에 푸시합니다.
    • Docker Compose 파일을 업데이트하여 Docker 환경에서 Kafka 기반 비동기 통신을 테스트합니다.

참고 자료

요약

  • Kafka 의존성 추가: RabbitMQ 의존성을 Kafka로 교체.
  • 설정 파일 수정: RabbitMQ 설정을 삭제하고 Kafka 브로커 설정 추가.
  • 마이크로서비스 테스트: Kafka를 통해 비동기 통신이 잘 이루어지는지 확인.
  • Docker 환경에서 검증: Docker Compose를 사용하여 Kafka와 함께 마이크로서비스를 테스트.

이로써 RabbitMQ에서 Kafka로의 전환이 성공적으로 완료되었습니다. 최신 Spring Cloud Stream 기술을 활용하여 인프라 관련 문제를 최소화하면서 개발 경험을 향상시킬 수 있습니다. 다음 강의에서는 Docker 환경에서의 테스트를 진행합니다.

profile
무슨 생각하며 사니

0개의 댓글