Docker 이미지를 사용한 마이크로서비스와 Apache Kafka 설정 및 테스트

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

1. Docker 이미지 생성 및 Docker Hub 푸시

  • Docker 이미지 생성: 모든 애플리케이션(총 7개)의 Docker 이미지를 S14 태그로 생성했습니다.
  • Docker Hub에 푸시: 생성된 이미지를 Docker Hub에 푸시했습니다. Docker Hub에서 S14 태그를 확인할 수 있습니다.

2. Docker Compose 파일 업데이트

  • RabbitMQ 제거 및 Kafka 추가:

    • 기존 Docker Compose 파일에서 RabbitMQ 관련 서비스 정의를 제거하고, Apache Kafka 서비스 정의를 추가했습니다.
    • Kafka 설정을 Bitnami GitHub 레포지토리에서 제공하는 Docker Compose 설정을 사용하여 구성했습니다.
    • 이 구성 파일에서는 kafka_data라는 로컬 폴더를 Docker 컨테이너 내부의 Bitnami 폴더와 매핑하여 Kafka 데이터를 로컬에 저장합니다.
  • Accounts 및 Message Microservice 설정 변경:

    • application.yml 파일에서 spring_cloud_stream_kafka_binder_brokers 환경 변수를 설정하여 Kafka 브로커와의 연결을 구성했습니다.
    • Kafka 서비스 이름을 kafka로 지정하고, 포트를 9092로 설정했습니다.

3. 컨테이너 시작 및 테스트

  • 기존 인스턴스 및 컨테이너 중지:

    • 모든 로컬 마이크로서비스 인스턴스 및 Docker 컨테이너를 중지했습니다.
    • 로컬 Apache Kafka 서버와 Keycloak 컨테이너도 중지했습니다.
  • Docker Compose로 컨테이너 시작:

    • docker compose up -d 명령어를 사용하여 모든 컨테이너를 시작했습니다. 몇 분이 소요됩니다.
  • Keycloak 설정:

    • Keycloak 관리 콘솔에 접속하여 새로운 클라이언트를 생성하고, easybank-callcenter-cc라는 클라이언트 ID를 사용했습니다.
    • 클라이언트 인증을 활성화하고, 서비스 계정 역할을 할당했습니다.
    • Postman에서 생성된 클라이언트의 자격 증명을 사용하여 액세스 토큰을 가져왔습니다.

4. Kafka 기반 비동기 통신 테스트

  • API 호출:
    • Postman을 사용하여 POST API를 호출하고, Kafka를 통해 메시지가 전달되는지 확인했습니다.
    • 메시지 마이크로서비스의 로그에서 이메일 및 SMS 전송과 관련된 로그를 확인했습니다.
    • 계정 마이크로서비스 로그에서는 통신 요청이 성공적으로 트리거되었는지 확인할 수 있었습니다.

5. 문서화 및 코드 공유

  • 문서화:

    • RabbitMQ를 Kafka로 교체하는 과정에서 필요한 두 가지 주요 변경 사항(의존성 변경 및 Kafka 연결 세부 정보 업데이트)을 문서화했습니다.
    • 이 문서는 향후 참조를 위해 GitHub 레포지토리에 포함되었습니다.
  • 코드 공유:

    • 모든 코드는 GitHub 레포지토리의 section14 폴더에 체크인되었습니다. 이 폴더에는 Kafka, Spring Cloud Functions 및 Stream을 사용한 이벤트 기반 마이크로서비스 구현이 포함되어 있습니다.

요약

  • Kafka 도입: RabbitMQ를 Kafka로 교체하여 비동기 통신을 구현했습니다.
  • Docker 구성: Kafka와 함께 작동하는 Docker 컨테이너를 설정 및 테스트했습니다.
  • Spring Cloud Stream: Spring Cloud Stream을 사용하여 최소한의 코드 변경으로 Kafka를 마이크로서비스에 통합했습니다.

이 과정을 통해 마이크로서비스 간의 이벤트 기반 통신을 성공적으로 구현했습니다. Spring Cloud Stream의 강력한 기능을 활용하여 인프라 문제를 쉽게 해결할 수 있었습니다. 다음 섹션에서는 Docker 환경에서의 Kafka 테스트를 마무리합니다.

profile
무슨 생각하며 사니

0개의 댓글