Skip to content

[Dev] 아키텍처

Bear edited this page Apr 26, 2023 · 4 revisions

데이터플로우 다이어그램

image

상세 설명

  1. 이벤트가 발생하면 해당 데이터는 트리거 큐에 인입된다.
  2. 이 인입된 이벤트를 다운로더에서 받아서 다운로드를 수행하면서 다운로드 결과값을 지속적으로 다운로드 결과 큐에 보낸다.
  3. 프로세서에서는 캐싱된 데이터를 가지고, 신규 혹은 변경데이터를 감지하고 변경될 데이터만 적재 데이터 큐에 보낸다.
  4. 로더는 실제로 적재 데이터큐에 쌓인 데이터를 DB에 업로드한다.

프로젝트별 역할 정의

트리거

  • 지정한 시간 or 클라이언트 액션에 의하여 요청 메세지 ( Request or Message ) 를 생성하여 다운로더에 전달한다.

다운로더

  • 트리거에서 받은 메세지를 컨슈밍한다.
  • 메세지에 포함 된 인증 값 및 URL을 이용하여 http 파일 다운로드를 수행한다.
  • 다운로드 시작 전 헤더 값에 저장되어 있는 파일 사이즈와 이전 수집 파일 사이즈를 비교하여 수행 여부를 판단한다.
  • 파일을 다운로드하며 첫 줄의 헤더를 분석하여 product ( 상품, 리뷰, 여행, 티켓, 기사 등등 ) 를 생성한다.
  • 생성 된 product 의 유효성 및 정합성을 검증한다.
  • 검증이 완료된 product를 프로세서로 프로듀싱한다.

인프라

캐시 데이터 저장 관련 인프라

diff-check를 위한 저장소로는 2가지를 고려한다.

  1. Redis
  2. Kafka Streams

이 두 부분은 PoC가 필요하다.

큐 관련 인프라

초기에 트리거에서 인입되는 페이로드는 SQS를 활용한다. 이후 스트리밍 프로세스를 통과하는 곳의 모든 큐는 Kafka를 활용한다.

비고

해당 플로우는 DB에 대한 추가 매핑 및 CDC, 삭제 이벤트는 제외하고 구성되어있음.