Kafka 3

HTTP와 Kafka를 통한 MongoDB 도큐먼트 생성 비교 (부하테스트)

먼저 구현한 서비스의 로직을 살펴보자 - main(nestjs) 서버는 엔드포인트로 유튜브 링크를 전달받습니다. - main에서 extractor(python) 서버로 받은 링크 정보를 또 다시 전달합니다. - extractor 서버에서 유튜브 링크 관련 정보(메타데이터)를 추출합니다. - 정보를 데이터베이스(MongoDB Atlas) 저장합니다. 위 과정에서 axios를 사용하여 http 통신을 하는 것과 카프카 브로커로 메시지를 전달하는 두 가지 방식을 비교해 보았다. 각 서버는 모두 컨테이너로 실행했다. axios로 http 요청 후 도큐먼트 생성 먼저 axios로 구현한 코드를 살펴보자 // links.service.ts import { HttpService } from '@nestjs/axios..

카프카 컨테이너로 메시지 전송하기 - nest.js, python

GitHub - issuebombom/get_youtube_audio Contribute to issuebombom/get_youtube_audio development by creating an account on GitHub. github.com Nest.js로 클라이언트에게 유튜브 링크를 입력받으면 이를 카프카 브로커에 메시지로 전송하고, python 라이브러리인 pytube로 해당 링크의 영상 정보를 획득하기 위해 python에서 consumer를 구현하여 메시지를 구독한다. 오늘 핵심 주제는 위 과정을 docker compose를 이용하여 각각 컨테이너로 빌드하여 동작하게 하는 것을 구현하는 과정과 이 과정에서 해결한 문제들에 대해서 알아보자. 컨테이너 없이 로컬 환경에서 간단하게 구현하는 내용..

카프카로 메시지 전송하기 - Nest.js와 python

카프카로 메시지 전송하기 - Nest.js와 python Nest.js에서 유튜브 링크를 python 코드로 작성된 서버에 전송하면 받아서 해당 영상 정보를 출력해주는 간단한 서비스를 구현해 보았다. 이전 글에서는 axios로 http 통신을 통해 정보를 주고 받는 코드를 구현해 보았다. (참조: https://issuebombom.tistory.com/117) 이번에는 주고 받는 것은 아니지만 카프카 메시지 브로커를 중간에 두고서 메시지를 전달하는 코드를 구현해 보았다. Kafka란 무엇인가? (간단하게) 어디에선가 받은 이벤트를 잘 보관하고 있다가 구독자에게 이벤트를 잘 전달해주는 이벤트 브로커를 말한다. 이벤트 브로커는 토픽이라는 일종의 파일시스템(fs)의 폴더와 같은 저장 공간을 가지고 그 안에 ..