2024/01 4

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를 이용하여 각각 컨테이너로 빌드하여 동작하게 하는 것을 구현하는 과정과 이 과정에서 해결한 문제들에 대해서 알아보자. 컨테이너 없이 로컬 환경에서 간단하게 구현하는 내용..

성경 읽기 사이트 제작 과정 정리 - python, javascript

제작 배경 평소 교회 갈 때는 성경이 무겁다는 핑계로 잘 들고 다니지 않게 되다 보니 간단한 성경 조회 사이트를 만들어서 휴대폰으로 볼 수 있게 만들어야겠다는 결심을 하게 되었다. 사실 성경을 볼 수 있는 무료 앱도 있지만 상단에 비치되는 배너 광고가 보고 싶지 않았다. 얼핏 생각해도 금방 만들 수 있을 것 같아서 시작하게 되었고, 예상대로 금방 만들었다. 먼저 제작 과정은 아래와 같았다. 성경 내용 수집, 조회 방식을 고려한 데이터 형식 선정 성경 조회 서비스 개발(백엔드) 성경 조회 및 결과 확인을 위한 정적 html 제작 (프론트) 위 제작 과정에 따라 차근차근 살펴보도록 하겠다. 성경 내용 수집 사이트 선정 (http://www.holybible.or.kr/) 성경 수집을 위해 구글, 네이버 서칭..

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

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