12P by xguru 2020-10-29 | favorite | 댓글 2개

- OkCupid가 오픈소스 검색엔진으로 Vespa를 선택한 이유
- 데이팅 추천상대를 실시간 랭킹에 따라 바꿔야 하는데, 기존의 매칭시스템은 계속 바뀌는 사용자의 상태를 빠르게 반영이 어려움
- ElasticSearch는 인메모리 부분 업데이트에 대한 지원이 없음
ㅤ→ 문서는 대부분 정적이지만, 사용자의 정보(좋아요,사람과의 연결/패스,메시징)은 동적으로 계속 바뀜
- Vespa : 빅데이타를 위한 오픈소스 검색엔진 ( 데이터 분석보다는 서빙하는 목적으로 최적화 )
ㅤ→ 전체 문서를 재인덱싱할 필요없이 인메모리 부분 업데이트 지원 (노드당 1초에 40~50K 업데이트 가능 )
ㅤ→ 유연한 랭킹 프레임워크를 재공해서 질의할때 처리가능
ㅤ→ TensorFlow 등의 머신러닝 모델과 직접 연동
ㅤ→ REST 호출시 YQL(Yahoo Query Language) 를 사용한 질의 가능
ㅤ→ Java 컴포넌트를 이용해서 로직 커스터마이즈 가능
ㅤ→ 확장성에 있어서는 샤드에 대한 생각을 할 필요가 없음. 노드를 추가/제거할때마다 데이터가 자동으로 복구되고 복제본에서 재배포됨
- Vespa가 OkCupid 의 내부에 더 잘맞음
ㅤ→ OkCupid 는 사용자에 대한 다양한 정보를 통합해서 사람을 매칭
ㅤ→ 필터와 정렬기준이 각각 100개가 넘으며 계속 추가므로 이런 워크플로우 지원에 Vespa가 적합
ㅤ→ 데이터 쓰기 및 쿼리도 기존 매칭시스템과 유사
ㅤ→ 랭킹 프렘임워크가 훨씬 유연하고 직관적임
ㅤ→ ElasticSearch 의 이상한 쿼리구조 보다, YQL의 표현능력이 더 우수
ㅤ→ 자동 데이터 배포 기능이 작은 팀에 적합

Vespa 의 역사 및 가치에 대한 한국어 소개 글

오픈소스 Yahoo Vespa https://web.archive.org/web/20210922122357/…
( 2023년 현재, 블로그가 사라져서 웨이백머신 링크로 교체해 둡니다 )

"Vespa는 오토바이 브랜드명이기도 하지만 Vertical Search Plaform의 약어"
"Yahoo가 가진 핵심 기술 중에 절대로 공개하지 않을 것만 같은 것 중에 항상 언급이 되는 것 중에 다섯손가락 안에 꼽히는 것이 Vespa"
"Vespa는 검색엔진을 중심으로 둔 통합 콘텐츠 처리 플랫폼의 콤포넌트 셋입니다. 간단히 생각하면 검색엔진이라고 보면 되지만 일반적인 Solr이나 Elastic과 같은 검색엔진 보다는 주변에 가진 부속 컴포넌트들이 훨씬 더 많습니다."

글이 굉장히 긴데, 뒤쪽은 실제로 Vespa를 적용한 OkCupid의 시스템 구조부터 검색쿼리(YQL) 등을 보여주고 있으니 원글을 참고하세요.

글 마지막에도 내용이 있지만 ElasticSearch가 훨씬 더 많이 쓰이고 있고, Vespa는 아직 커뮤니키가 크지 않은게 단점이구요.
근데 여기서 보이는 것처럼 계속적으로 바뀌어야 하는 검색에 있어서는 Vespa도 훌륭한 대안이 될 수 있을듯 합니다.
데이트 상대 매칭을 예로 들었지만, 이커머스 검색들도 요즘은 실시간으로 바뀌어야 좋은 결과를 줄 수 있을테니까요.