검색과 추천 - (사이드 플젝) 태스크 설정 - 인덱싱 인프라 구축
사이드 프로젝트: 제품 검색 인덱스 인프라 구축
프로젝트 개요
이번 사이드 프로젝트에서는 Amazon Berkeley Objects (ABO) 데이터셋을 사용하여 강력한 제품 검색 인덱스 인프라를 구축할 예정입니다. 주요 초점은 대규모 데이터 인덱싱 처리와 배치 인덱싱 및 실시간 업데이트를 위한 효율적인 파이프라인 생성에 있습니다.
데이터셋
Amazon Berkeley Objects (ABO) 데이터셋의 abo-listings.tar
파일을 사용할 것입니다. 이 파일에는 제품 리스팅과 메타데이터가 포함되어 있습니다.
핵심 요구사항
- 제품 listing 전체를 Elasticsearch에 인덱스
abo-listings
데이터를 활용하여 Elasticsearch에 제품 정보를 인덱싱.- 대규모 데이터셋을 효율적으로 처리하기 위해 Spark를 사용하여 데이터를 전처리 후 인덱싱.
- 제품 인덱스의
item_keywords
와product_description
를 업데이트할 수 있는 API 제공- Kafka를 통해 업데이트 이벤트를 수신하고, 이를 처리하여 Elasticsearch의 제품 정보를 동기화.
- Spark 또는 Flink를 사용하여 업데이트된 정보를 효율적으로 반영.
item_keywords
와product_description
정보로 제품 검색- 사용자가 입력한 키워드와 제품 설명을 기반으로 Elasticsearch에서 최적화된 검색을 수행.
- 다양한 필터와 정렬 옵션을 제공하여 사용자 경험을 향상.
주요 기술
- Apache Kafka
- Apache Spark
- Elasticsearch
인프라 파이프라인
이 프로젝트는 두 가지 주요 파이프라인 구축에 중점을 둡니다:
1. 배치 인덱스 파이프라인
이 파이프라인은 데이터셋의 초기 대량 인덱싱을 처리합니다:
Batch Index Pipeline
- 데이터 소스:
ABO_listing.json
- 과정: Preprocessing > Spark 기반 Indexer > Elasticsearch
- 설명: 대규모 제품 listing 데이터를 전처리한 후, Spark를 활용하여 데이터를 병렬 처리하고, Elasticsearch에 인덱싱합니다.
2. 인덱스 업데이트 파이프라인
이 파이프라인은 제품 인덱스의 실시간 업데이트를 관리합니다:
Index Update Pipeline
- 데이터 소스: 업데이트 이벤트 (e.g., item_keywords, product_description 변경)
- 과정: Kafka > Spark/Flink 기반 Updater > Elasticsearch
- 설명: Kafka를 통해 실시간으로 들어오는 업데이트 요청을 Spark 또는 Flink로 처리하여, 기존 인덱스 데이터를 최신 상태로 유지합니다.
프로젝트 목표
이 프로젝트의 주요 목적은 대규모 데이터셋을 처리할 수 있는 인덱싱 인프라를 구축하는 것입니다. 배치 및 실시간 업데이트 파이프라인을 모두 구현함으로써, 단순한 API 기반 인덱싱을 넘어서는 포괄적인 시스템을 만들 것입니다.
이러한 접근 방식을 통해 다음과 같은 이점을 얻을 수 있습니다:
- 대용량의 초기 데이터를 효율적으로 처리하고 인덱싱
- 실시간 업데이트를 처리하여 검색 인덱스를 최신 상태로 유지
- 분산 시스템 및 데이터 처리 기술에 대한 실질적인 경험 획득
이 제품 검색 인덱스 인프라 구축의 구현 세부사항과 도전 과제들에 대해 앞으로 업데이트해 나가겠습니다.
This post is licensed under CC BY 4.0 by the author.