SiliconValley_survivor

SiliconValley_survivor

Design Pinterest, 비주얼 추천

비슷하게 생긴 이미지를 찾는 것이 아니라 사용자의 다음 계획에 맞는 Pin을 고르는 시스템

SiliconValley_survivor's avatar
SiliconValley_survivor
Sep 15, 2026
∙ Paid

Introduction & Requirements

사용자가 거실 사진을 보고 있습니다. 마음에 드는 부분은 방 전체가 아니라 창가에 있는 초록색 의자입니다. 의자를 선택하니 비슷한 의자가 나타납니다. 여기에 작은 공간에 어울리는 제품을 찾고 싶다는 조건을 추가합니다. 나중에 다시 보기 위해 몇 개의 Pin을 거실 꾸미기 보드에 저장합니다.

며칠 뒤 홈 피드에는 의자만 계속 나오는 것이 아니라, 그 공간에 어울리는 조명과 책장도 나타날 수 있습니다. 사용자에게는 이어지는 탐색이지만 서버가 풀어야 하는 문제는 서로 다릅니다.

이미지 안에서 무엇을 선택했는지 이해하는 일, 비슷한 대상을 찾는 일, 함께 사용할 만한 대상을 추천하는 일, 여러 관심사 중 지금 보여줄 것을 고르는 일이 필요합니다.

Pinterest의 공식 도움말은 이미지의 일부나 개별 객체를 선택해 유사한 항목을 찾고, 일부 Pin에서는 제안된 키워드로 결과를 좁힐 수 있다고 설명합니다. Lens는 카메라나 업로드한 이미지를 탐색의 출발점으로 사용할 수 있게 합니다. ,

2025년 5월 공식 발표는 VLM을 활용한 시각적 표현의 언어화와 이미지,텍스트를 결합한 검색을 설명했습니다. 발표 당시 적용 카테고리와 지역이 제한돼 있었으므로 모든 기능이 모든 국가와 기기에서 동일하게 동작한다고 가정하지 않습니다.

기술 자료도 과거의 그래프 추천에만 머물지 않습니다. 2026년 PinCLIP 논문은 이미지,텍스트와 Pin–Board 관계를 활용하는 표현 학습을 설명합니다. 2026년 9월 14일에는 시각 검색과 콘텐츠 이해 등에 사용할 공통 멀티모달 AI 기반에 관한 공식 발표도 나왔습니다. PinCLIP 논문, Pinterest의 멀티모달 AI 기반 발표

아래 DB, API, 모델 조합, 처리량과 목표 시간은 공개된 제품 동작을 만족시키기 위한 설계 가정입니다. Pinterest의 현재 내부 아키텍처를 그대로 재현한 문서는 아닙니다. 공개 자료는 2026년 9월 14일 기준으로 확인한 내용을 사용합니다.

가장 단순하게는 이미지마다 벡터를 계산해 두고, 사용자가 선택한 이미지와 가까운 벡터를 찾으면 됩니다. 작은 이미지 카탈로그에서 비슷한 이미지를 찾는 기능은 이 구조로 시작할 수 있습니다.

하지만 거실 사진 전체를 입력하면 의자 대신 비슷한 방을 찾을 수 있습니다. 초록색이라는 공통점만 강하게 반영하면 의자 대신 초록색 옷이 나타날 수도 있습니다. 함께 저장된 조명과 의자는 외형이 다르지만 같은 공간을 꾸미는 데 도움이 됩니다.

이 시스템에서 어려운 상태는 현재 탐색 의도, 장기간의 여러 관심사, 이미지와 Pin의 관계, 공개 가능한 저장 관계입니다. 한 사용자에게 요리와 인테리어와 여행 관심사가 동시에 존재할 수 있고, 비공개 보드에 저장한 행동은 개인화에 활용하더라도 다른 사람에게 공개되면 안 됩니다.

기능 요구사항

  • 사용자는 관심사와 최근 탐색을 반영한 홈 피드를 조회할 수 있습니다.

  • 사용자는 Pin을 열어 관련 아이디어와 유사한 콘텐츠를 탐색할 수 있습니다.

  • 사용자는 이미지 전체 또는 선택 영역으로 검색하고 텍스트 조건으로 결과를 좁힐 수 있습니다.

  • 사용자는 카메라나 업로드한 이미지를 비주얼 검색에 사용할 수 있습니다.

  • 사용자는 보드를 만들고 Pin을 저장하거나 제거하며 공개 범위와 공유 권한을 관리할 수 있습니다.

  • 시스템은 명시적 검색 조건과 개인화 선호를 구분해 적용합니다.

  • 시스템은 공개 가능한 Pin–Board 관계를 활용하고 신규 Pin에는 콘텐츠 기반 추천 경로를 제공합니다.

  • 사용자는 특정 보드나 활동을 추천에 사용하지 않도록 설정할 수 있습니다.

  • 시스템은 실제 화면 노출, 상세 보기, 저장과 외부 사이트 이동을 구분해서 기록합니다.

  • 운영자는 모델,피처,그래프,인덱스 버전을 관리하고 장애 시 호환되는 이전 조합으로 복구할 수 있습니다.

비기능 요구사항

다음은 실제 Pinterest의 SLA가 아닌 설계 목표입니다.

  • 홈 피드와 Related Pins API는 지역 내 Gateway 수신부터 응답까지 p95 200ms, p99 400ms를 목표로 합니다.

  • 비주얼 검색은 입력 이미지가 서버에 준비된 이후 결과 반환까지 p95 500ms, p99 1초를 목표로 합니다. 이미지 업로드 시간은 별도로 측정합니다.

  • 대표적인 정상 네트워크에서 첫 화면 이미지 표시 시간을 p95 1초 이내로 유지하는 것을 목표로 합니다.

  • 유효한 추천 결과를 제공하는 월간 가용성은 99.95%를 목표로 하고, 대체 추천 비율을 따로 기록합니다.

  • 보드 저장과 권한 변경은 강한 정합성을 적용합니다. 저장 성공 이후의 보드 조회는 해당 변경을 확인할 수 있어야 합니다.

  • 서버가 수락한 최근 행동은 온라인 관심 피처에 p95 2초, p99 10초 이내 반영하는 것을 목표로 합니다.

  • 신규 Pin은 처리와 적격성 확인 이후 검색 후보에 p95 1분 이내 포함하는 것을 목표로 합니다. 그래프 임베딩 갱신 완료와는 구분합니다.

  • 공개 범위와 접근 권한은 후속 읽기에서 현재 상태를 확인합니다. 비공개 데이터의 전역 추천 경로 유입을 차단합니다.

  • 추천은 관련성, 유용한 저장, 만족도, 다양성, 안전성과 비용을 함께 평가합니다.

  • 임시 검색 이미지, 사용자 행동과 파생 데이터의 보관,삭제 범위를 추적하고 필요한 데이터만 사용합니다.

Out of Scope

  • 광고 경매와 광고 과금

  • Pinterest 안에서의 주문,결제,배송 처리

  • 외부 판매자의 실시간 재고를 보장하는 시스템

  • 생성형 이미지 편집과 콜라주 제작 도구

  • 메시지와 댓글 시스템의 전체 구현

  • 동영상 인코딩과 스트리밍의 상세 설계

  • 실제 Pinterest의 비공개 모델 가중치와 운영 설정

상품과 유사한 이미지를 찾거나 외부 판매 페이지로 이동하는 기능은 다룹니다. 이미지가 비슷하다는 이유로 동일한 상품이거나 구매 가능한 재고가 있다고 판단하지는 않습니다.

Traffic & Capacity Assumptions

아래 수치는 용량 계산을 위한 가정이며 실제 Pinterest 이용 통계가 아닙니다. 저장량에는 십진 단위를 사용합니다.

사용자 수와 추천 요청

DAU를 1억 명으로 가정하고, 홈 피드,관련 Pin,검색을 합쳐 사용자당 하루 100개 Pin이 실제 화면에 노출된다고 하겠습니다. 하루 100억 노출이며 평균 초당 약 11만 6천 건입니다. 피크를 평균의 5배로 두면 초당 약 58만 노출입니다.

응답당 Pin을 20개 전달하고 그중 실제 노출되는 비율을 80%로 두면 하루 약 6억 2,500만 페이지 요청이 필요합니다. 평균 약 7,230 QPS, 피크 약 3만 6,200 QPS입니다.

이미지 그리드는 한 화면에 여러 Pin을 보여주므로 노출 수와 API 요청 수가 다릅니다. 배치를 크게 만들면 호출은 줄지만 내려받고도 보지 않은 이미지와 오래된 후보가 늘어납니다. 응답 크기는 스크롤 속도와 이미지 전송 비용을 함께 보고 결정합니다.

비주얼 질의와 모델 호출

위 페이지 요청 중 새로운 비주얼 질의가 하루 2천만 건 발생한다고 가정하겠습니다. 평균 초당 약 231건, 같은 피크 배수에서는 초당 약 1,160건입니다. 이 값은 페이지 요청에 추가로 더하는 QPS가 아니라 이미지 이해 연산이 필요한 부분집합입니다.

이미 존재하는 Pin을 사용하는 검색은 준비된 표현을 재사용할 수 있습니다. 반면 새로운 사진이나 임의의 선택 영역은 온라인 이미지 처리가 필요할 수 있습니다. 페이지 요청 수만으로 이미지 인코더와 VLM 용량을 계산하면 이 차이를 놓칩니다.

피크 페이지 요청마다 상세 모델이 400개 후보를 평가하면 초당 약 1,450만 질의,Pin 쌍을 처리합니다. 큰 VLM을 모든 후보에 적용하기보다, 사전 계산한 표현으로 후보를 줄이고 제한된 후보에 상세 비교를 적용할 이유가 생깁니다.

저장과 행동 이벤트

사용자당 하루 Pin 저장을 2건으로 가정하면 하루 2억 저장, 평균 약 2,315건, 피크 약 1만 1,600건의 저장 요청입니다. 저장 취소와 권한 변경은 여기에 별도로 추가됩니다.

저장은 단순 분석 이벤트가 아닙니다. 사용자가 보드에서 다시 확인할 원본 상태를 만들고, 이후 추천 그래프에도 영향을 줍니다. 원본 저장 성공과 파생 그래프 반영을 구분해야 합니다.

실제 노출마다 노출 기록과 일부 추가 행동을 합쳐 평균 2개의 수집 이벤트가 생긴다면 하루 200억 이벤트입니다. 평균 초당 약 23만 건, 피크 초당 약 116만 건이며, 이벤트당 400바이트라면 원시 로그는 하루 약 8TB입니다.

압축 전 3중 복제와 3일 보관을 적용하면 약 72TB입니다. 추천 결정 로그, 인덱스와 운영 여유 공간은 별도입니다. 배치 전송은 HTTP 요청 수를 줄이지만 처리해야 할 이벤트 자체를 줄이지는 않습니다.

이미지 저장과 전송

하루 새로운 이미지 콘텐츠 500만 개, 원본 평균 1MB와 여러 크기 변환본 합계 0.3MB를 가정하면 하루 약 6.5TB가 추가됩니다. 단순 연간 누적은 약 2.37PB이며 복제와 삭제는 제외한 값입니다.

전달한 Pin 메타데이터에 대응해 이미지가 모두 다운로드되고 평균 전송 크기가 80KB라면, 하루 125억 항목에 약 1PB가 필요합니다. 평균 대역폭은 약 92.6Gbps, 5배 피크는 약 463Gbps입니다. 상세 원본 확대와 사용자 기기 캐시 효과는 별도로 계산합니다.

따라서 목록에는 화면 크기에 맞는 이미지 변환본을 제공하고 원본은 상세 보기에서 필요할 때 받습니다. 이미지 바이트는 CDN이 전달하며 추천 서버가 직접 중계하지 않습니다.

This post is for paid subscribers

Already a paid subscriber? Sign in
© 2026 실리콘밸리_생존자 · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture