-
Notifications
You must be signed in to change notification settings - Fork 0
[Dev] 아키텍처
Bear edited this page Apr 26, 2023
·
4 revisions
- 이벤트가 발생하면 해당 데이터는 트리거 큐에 인입된다.
- 이 인입된 이벤트를 다운로더에서 받아서 다운로드를 수행하면서 다운로드 결과값을 지속적으로 다운로드 결과 큐에 보낸다.
- 프로세서에서는 캐싱된 데이터를 가지고, 신규 혹은 변경데이터를 감지하고 변경될 데이터만 적재 데이터 큐에 보낸다.
- 로더는 실제로 적재 데이터큐에 쌓인 데이터를 DB에 업로드한다.
트리거
- 지정한 시간 or 클라이언트 액션에 의하여 요청 메세지 ( Request or Message ) 를 생성하여 다운로더에 전달한다.
다운로더
- 트리거에서 받은 메세지를 컨슈밍한다.
- 메세지에 포함 된 인증 값 및 URL을 이용하여 http 파일 다운로드를 수행한다.
- 다운로드 시작 전 헤더 값에 저장되어 있는 파일 사이즈와 이전 수집 파일 사이즈를 비교하여 수행 여부를 판단한다.
- 파일을 다운로드하며 첫 줄의 헤더를 분석하여 product ( 상품, 리뷰, 여행, 티켓, 기사 등등 ) 를 생성한다.
- 생성 된 product 의 유효성 및 정합성을 검증한다.
- 검증이 완료된 product를 프로세서로 프로듀싱한다.
diff-check
를 위한 저장소로는 2가지를 고려한다.
- Redis
- Kafka Streams
이 두 부분은 PoC가 필요하다.
초기에 트리거에서 인입되는 페이로드는 SQS
를 활용한다.
이후 스트리밍 프로세스를 통과하는 곳의 모든 큐는 Kafka
를 활용한다.
해당 플로우는 DB에 대한 추가 매핑 및 CDC, 삭제 이벤트는 제외하고 구성되어있음.