Meta / database-design

5 개의 포스트

meta

Modernizing the Facebook Groups Search to Unlock the Power of Community Knowledge (새 탭에서 열림)

페이스북은 커뮤니티 내 방대한 정보를 사용자가 더 쉽고 정확하게 찾을 수 있도록 그룹 검색 시스템을 하이브리드 검색 아키텍처로 전면 개편했습니다. 기존의 단순 키워드 매칭 방식에서 벗어나 의미론적 이해를 더한 결과, 검색 정확도와 사용자 참여도가 크게 향상되었으며 오류율은 안정적으로 유지되었습니다. 특히 Llama 3를 활용한 자동화된 모델 기반 평가 시스템을 도입함으로써, 대규모 데이터 환경에서도 고도화된 품질 관리가 가능해졌습니다. ### 기존 커뮤니티 검색의 세 가지 마찰 지점 * **발견의 한계(Discovery):** 과거의 어휘 기반 검색은 정확한 키워드가 일치해야만 결과를 반환했습니다. 예를 들어 사용자가 '프로스팅을 얹은 작은 케이크'를 검색할 때, 게시물에 '컵케이크'라는 단어만 있다면 검색 결과에 노출되지 않는 언어적 간극이 존재했습니다. * **소비의 피로도(Consumption):** 사용자가 원하는 답을 얻기 위해 수많은 댓글을 일일이 읽고 합의된 의견을 찾아내야 하는 '노력의 세금(Effort Tax)' 문제가 발생했습니다. * **검증의 어려움(Validation):** 중고 거래나 전문적인 결정이 필요한 상황에서 커뮤니티의 집단 지성을 활용하고 싶어도, 흩어져 있는 전문 지식과 검증된 조언을 체계적으로 수집하기가 쉽지 않았습니다. ### 현대적인 하이브리드 검색 아키텍처 * **병렬 검색 전략:** 쿼리가 들어오면 토큰화 및 정규화를 거친 후, 어휘적 경로와 의미론적 경로라는 두 가지 파이프라인을 동시에 가동합니다. * **어휘적 경로 (Unicorn):** 페이스북의 역색인(Inverted Index) 시스템인 Unicorn을 사용해 고유 명사나 특정 문구가 포함된 게시물을 정확하게 찾아냅니다. * **의미론적 경로 (SSR):** 12레이어, 2억 개의 파라미터를 가진 검색 의미론적 리트리버(SSR) 모델이 쿼리를 벡터로 변환합니다. 이후 Faiss 벡터 인덱스에서 근사 최근접 이웃(ANN) 검색을 수행하여, 키워드가 겹치지 않더라도 개념적으로 유사한 콘텐츠를 추출합니다. ### MTML 아키텍처 기반의 L2 랭킹 * **특징 통합:** 검색 단계에서 수집된 후보군들을 대상으로 TF-IDF, BM25와 같은 어휘적 점수와 코사인 유사도 같은 의미론적 점수를 통합하여 분석합니다. * **다중 작업 다중 레이블(MTML) 모델:** 단일 목표가 아닌 클릭, 공유, 댓글 등 여러 사용자 참여 지표를 동시에 최적화하는 슈퍼모델 구조를 채택했습니다. 이를 통해 단순히 관련성만 높은 글이 아니라, 실제 커뮤니티에서 의미 있는 상호작용을 이끌어낼 수 있는 양질의 콘텐츠를 상위에 노출합니다. ### Llama 3 기반 자동화 평가 * **LLM 판독관 도입:** 고차원 벡터 공간에서의 검색 품질을 사람이 일일이 검증하기 어려운 한계를 극복하기 위해, Llama 3를 빌드 검증 테스트(BVT) 과정에 통합했습니다. * **정교한 품질 측정:** 검색 결과를 단순히 '좋음/나쁨'으로 나누지 않고, 주제나 도메인이 일치하는 '다소 관련 있음' 등의 세분화된 범주를 두어 검색 결과의 다양성과 미세한 관련성 개선 수치를 측정합니다. --- **실용적 제언** 방대한 커뮤니티 데이터를 다루는 서비스라면 단순 키워드 검색만으로는 사용자의 자연어 의도를 충족하기 어렵습니다. 페이스북의 사례처럼 정확도를 보장하는 **어휘적 검색**과 맥락을 파악하는 **의미론적 검색**을 병렬로 운영하고, 랭킹 단계에서 **사용자 반응 데이터(클릭, 공유 등)**를 다각도로 결합하는 하이브리드 전략이 검색 만족도를 높이는 핵심입니다. 또한, LLM을 평가 도구로 활용하면 수동 라벨링 비용을 줄이면서도 정교한 품질 관리가 가능해집니다.

meta

Capacity Efficiency at Meta: How Unified AI Agents Optimize Performance at Hyperscale (새 탭에서 열림)

메타(Meta)는 방대한 인프라 전반에서 발생하는 성능 문제를 자동으로 탐지하고 해결하기 위해 시니어 엔지니어들의 전문 지식을 인코딩한 통합 AI 에이전트 플랫폼을 구축했습니다. 이 플랫폼은 수동 조사에 소요되던 시간을 대폭 단축하고 수백 메가와트(MW)의 전력을 절감함으로써, 인력의 증가 없이도 인프라 효율성을 극대화하는 성과를 거두었습니다. 결과적으로 엔지니어들이 반복적인 성능 최적화 작업에서 벗어나 제품 혁신에 더 집중할 수 있는 자가 지속 가능한 효율성 엔진을 구현했습니다. ### 인프라 효율성을 위한 공세와 수비 전략 메타는 30억 명 이상의 사용자에게 서비스를 제공하는 만큼, 단 0.1%의 성능 저하도 막대한 전력 낭비로 이어집니다. 이를 관리하기 위해 두 가지 전략을 병행합니다. * **공세(Offense):** 기존 시스템을 더 효율적으로 만들기 위해 선제적으로 코드 개선 기회를 탐색하고 최적화를 배포합니다. * **수비(Defense):** 프로덕션 환경의 리소스 사용량을 모니터링하여 성능 저하(Regression)를 감지하고, 원인이 된 코드 변경사항을 찾아내어 수정을 배포합니다. * **통합 플랫폼:** 과거에는 이를 위해 별도의 시스템이 필요했으나, 현재는 동일한 구조를 공유하는 단일 AI 에이전트 플랫폼을 통해 두 과정을 모두 자동화합니다. ### MCP 도구와 스킬 기반의 아키텍처 AI 에이전트가 숙련된 엔지니어처럼 행동할 수 있도록 플랫폼은 두 가지 핵심 레이어로 구성됩니다. * **MCP 도구(Tools):** LLM이 코드를 호출할 수 있는 표준화된 인터페이스입니다. 프로파일링 데이터 조회, 실험 결과 추출, 코드 검색, 문서 추출 등 개별적인 작업을 수행합니다. * **스킬(Skills):** 시니어 엔지니어들의 도메인 지식을 인코딩한 영역입니다. "엔드포인트 지연 시 GraphQL 엔드포인트를 확인하라"와 같이 특정 상황에서 어떤 도구를 사용하고 결과를 어떻게 해석할지에 대한 추론 패턴을 LLM에 제공합니다. * **효율성 극대화:** 도구와 스킬의 결합을 통해 범용 언어 모델이 전문적인 성능 최적화 지식을 갖춘 에이전트로 진화하며, 동일한 도구 세트로 공세와 수비 업무를 모두 수행합니다. ### FBDetect와 AI 회귀 해결사(Regression Solver) 수비 측면에서는 미세한 성능 변화를 감지하고 즉각적으로 대응하는 시스템이 작동합니다. * **정밀 탐지:** 사내 도구인 'FBDetect'는 노이즈가 많은 환경에서도 0.005% 수준의 미세한 성능 저하를 잡아냅니다. * **Fix-forward 방식:** 기존에는 성능 저하 발생 시 코드를 롤백하거나 방치하는 경우가 많았으나, 이제는 AI 에이전트가 직접 수정 PR(Pull Request)을 생성합니다. * **자동화 프로세스:** 에이전트가 문제의 증상과 원인이 된 PR을 분석한 후, 로깅 샘플링 조정과 같은 전문 지식을 적용해 수정안을 작성하고 원본 작성자에게 검토를 요청합니다. ### 최적화 기회의 코드화 공세 측면에서는 추상적인 최적화 아이디어를 실제 실행 가능한 코드로 전환합니다. * **조사 시간 단축:** 엔지니어가 수동으로 수행하던 10시간 분량의 조사를 약 30분으로 단축하여 효율성을 높였습니다. * **컨텍스트 분석:** AI 에이전트가 최적화 패턴 문서, 유사 사례, 관련 함수 및 검증 기준을 분석하여 최적화안을 도출합니다. * **원클릭 적용:** 예를 들어 CPU 사용량을 줄이기 위한 메모이제이션(Memoization) 적용 등의 작업을 수행하며, 엔지니어는 에디터에서 AI가 생성한 코드를 확인하고 클릭 한 번으로 적용할 수 있습니다. --- **결론 및 추천** 메타의 사례는 단순한 모니터링을 넘어 **'전문 지식의 스킬화'**를 통해 AI가 직접 코드를 수정하는 단계까지 나아갔음을 보여줍니다. 대규모 인프라를 운영하는 조직이라면 성능 지표의 상관관계를 분석하는 '도구'와 이를 해석하는 시니어의 '노하우(스킬)'를 분리하여 AI 플랫폼에 이식하는 접근 방식을 고려해 볼 필요가 있습니다. 이는 인력 증설 없이도 기술 부채와 인프라 비용을 동시에 해결할 수 있는 강력한 모델이 될 것입니다.

meta

How Meta Used AI to Map Tribal Knowledge in Large-Scale Data Pipelines (새 탭에서 열림)

메타(Meta)는 대규모 데이터 처리 파이프라인에서 AI 코딩 에이전트의 효율성을 극대화하기 위해, 코드베이스의 암묵적 지식(Tribal Knowledge)을 스스로 학습하고 구조화하는 '프리컴퓨트 엔진(Pre-compute Engine)'을 구축했습니다. 50개 이상의 전문 AI 에이전트가 4,100개가 넘는 파일과 3개의 언어로 구성된 복잡한 저장소를 분석하여 59개의 핵심 컨텍스트 파일을 생성했으며, 이를 통해 AI의 도구 호출 횟수를 40% 줄이고 며칠이 걸리던 탐색 작업을 30분으로 단축했습니다. 결과적으로 AI는 단순한 코드 소비자가 아닌, 스스로 지식 지도를 제작하고 유지보수하는 능동적인 엔진으로 거듭났습니다. ## 코드의 이면에 숨겨진 '암묵적 지식'의 한계 * 대규모 시스템은 Python 설정, C++ 서비스, Hack 자동화 스크립트 등 여러 언어와 저장소가 얽혀 있어 단순한 코드 읽기만으로는 전체 맥락을 파악하기 어려움. * 직렬화 호환성을 위해 삭제해서는 안 되는 '권장되지 않는(deprecated)' 값이나, 단계별로 이름이 바뀌는 필드 규약 등 엔지니어들의 머릿속에만 있는 비직관적인 패턴들이 존재함. * 이러한 맥락이 없는 AI 에이전트는 컴파일은 가능하지만 논리적으로는 오류가 있는 코드를 생성하거나, 정답을 찾기 위해 불필요한 탐색 과정을 반복하며 리소스를 낭비함. ## 전문 에이전트 군단을 활용한 지식 추출 워크플로 * **역할 분담:** 탐색(Explorer), 분석(Analyst), 집필(Writer), 비평(Critic), 수정(Fixer) 등 50개 이상의 전문화된 에이전트가 단일 세션 내에서 협업함. * **5대 핵심 질문:** 분석 에이전트는 각 모듈에 대해 '무엇을 설정하는가?', '주요 수정 패턴은?', '빌드 실패를 유발하는 비직관적 패턴은?', '모듈 간 의존성은?', '주석에 숨겨진 지식은?'이라는 다섯 가지 질문에 답하며 정보를 추출함. * **비직관적 패턴의 문서화:** 코드 자체로는 드러나지 않는 50개 이상의 설계 의도와 종속 관계를 찾아내어 AI가 실수하기 쉬운 지점을 명확히 함. ## 백과사전이 아닌 '나침반' 원칙의 컨텍스트 파일 * **간결성 유지:** 각 컨텍스트 파일은 25~35줄(약 1,000토큰) 내외로 작성되어 모델의 컨텍스트 윈도우 부하를 최소화하며, 모든 파일의 합계가 현대적 모델 용량의 0.1% 미만을 차지함. * **4대 구성 요소:** 빠른 명령(Quick Commands), 핵심 파일 리스트, 비직관적 패턴, 참고 자료 섹션으로 구성하여 군더더기 없는 실행 가능한 정보를 제공함. * **그래프 기반 탐색:** 다중 저장소 간의 의존성 인덱스를 생성하여, 수천 토큰이 소모되던 영향도 분석 과정을 단 수백 토큰의 그래프 조회로 대체함. ## 시스템의 신뢰도와 지속 가능성 확보 * **품질 게이트:** 3단계의 독립적인 비평 에이전트 검토를 통해 컨텍스트의 품질 점수를 3.65에서 4.20(5점 만점)으로 끌어올렸으며, 모든 파일 경로는 자동 검증되어 환각 현상을 제거함. * **자기 유지보수:** 몇 주 단위로 자동화된 작업이 실행되어 경로 유효성을 검사하고, 정보 누락을 감지하며, 오래된 참조를 자동으로 수정하여 '정보의 부패'를 방지함. * **모델 독립성:** 특정 AI 모델에 종속되지 않는 지식 레이어를 구축하여, 향후 더 뛰어난 모델이 등장하더라도 동일한 구조화된 지식을 활용할 수 있음. 이러한 접근 방식은 독자적인 대규모 코드베이스를 운영하는 모든 개발 팀에 적용될 수 있습니다. AI 에이전트에게 방대한 문서를 읽히는 대신, 핵심적인 '비직관적 패턴'과 '의존성 지도'를 간결한 나침반 형태로 제공하는 것이 AI의 문제 해결 속도와 정확도를 높이는 가장 실무적인 전략입니다.

meta

Friend Bubbles: Enhancing Social Discovery on Facebook Reels (새 탭에서 열림)

페이스북 릴스(Reels)의 '친구 버블(Friend Bubbles)'은 친구가 좋아하거나 반응한 콘텐츠를 사용자에게 추천하여 새로운 발견과 사회적 연결을 돕는 기능입니다. 이 시스템은 머신러닝을 활용해 사용자 간의 친밀도를 측정하고 소셜 그래프 신호를 비디오 랭킹 로직에 결합함으로써, 단순한 콘텐츠 소비를 넘어 친구와의 대화로 이어지는 의미 있는 상호작용을 창출합니다. 결과적으로 친구 버블은 개인의 관심사와 소셜 신호를 동시에 충족시켜 플랫폼의 체류 시간과 사회적 가치를 모두 높이는 역할을 합니다. **사용자 간 친밀도 모델을 통한 핵심 관계 식별** 친구 버블 시스템은 사용자가 누구의 상호작용에 더 민감하게 반응할지 판단하기 위해 두 가지 상호 보완적인 머신러닝 모델을 사용합니다. * **설문 기반 친밀도 모델:** 실제 사용자들을 대상으로 한 설문 데이터와 소셜 그래프(함께 아는 친구, 위치 정보, 상호작용 패턴 등)를 결합하여 학습합니다. 매주 수조 개의 친구 관계를 대상으로 추론(Inference)을 실행하여 오프라인에서의 실제 친밀도를 예측합니다. * **플랫폼 내 활동 기반 모델:** 친구 버블이 표시되었을 때 발생하는 좋아요, 댓글, 공유 등의 실시간 반응을 학습합니다. 이를 통해 사용자가 특정 소셜 맥락에서 누구의 추천을 더 가치 있게 여기는지 동적으로 파악합니다. * **관계의 질 중심:** 단순히 친구가 많다고 해서 더 많은 버블을 보여주는 것이 아니라, 사용자가 진정으로 의미 있다고 느낄 만한 관계를 소수 정예로 선별하여 추천의 품질을 높입니다. **소셜 신호를 반영한 비디오 랭킹 최적화** 좋은 친구 콘텐츠가 일반적인 인기 콘텐츠에 밀려나지 않도록 랭킹 시스템 전반에 소셜 컨텍스트를 주입합니다. * **검색(Retrieval) 단계 확장:** 친밀도 모델이 식별한 가까운 친구들이 상호작용한 영상을 명시적으로 검색 결과에 포함시켜, 순위 모델(Ranking)에 충분한 후보군이 전달되도록 퍼널 상단을 확장합니다. * **MTML(Multi-Task Multi-Label) 모델 적용:** 기존 랭킹 모델에 '친구 친밀도'와 '버블 노출 시 참여도'를 새로운 특징(Feature)과 과업(Task)으로 추가합니다. 이를 통해 모델은 영상 자체의 품질뿐만 아니라 관계의 힘이 주는 고유한 가치를 학습합니다. * **연속적 피드백 루프:** `P(비디오 참여 | 버블 노출)`라는 조건부 확률을 활용해 사용자가 버블을 보고 실제로 반응할 가능성을 예측하며, 소셜 연결성과 콘텐츠 몰입도 사이의 균형을 맞추기 위해 가중치를 미세하게 조정합니다. **성능 저하 없는 실시간 인프라 구축** 릴스는 성능에 매우 민감한 서비스이므로, 추가적인 데이터 처리가 사용자 경험을 해치지 않도록 설계되었습니다. * **프리페치(Prefetch) 활용:** 비디오가 화면에 나타나기 전 메타데이터와 썸네일을 미리 불러오는 기존 윈도우에 친구 버블 데이터를 통합하여 로드 지연을 방지했습니다. * **최적화된 자원 관리:** 부드러운 스크롤을 유지하고 CPU 오버헤드를 최소화하기 위해 캐싱된 결과를 재사용하고 데이터 호출 구조를 단순화했습니다. 친구 버블의 성공 사례는 추천 시스템이 단순히 사용자의 과거 이력만을 쫓는 것이 아니라, 사용자 주변의 사회적 맥락을 깊이 있게 이해할 때 더 큰 가치를 만들 수 있음을 보여줍니다. 기술적으로는 모델에 관계 중심의 특징(Feature)을 직접 주입하고, 인프라 측면에서는 데이터 로딩의 우선순위를 정교하게 관리하는 것이 핵심입니다. 단순히 '인기 있는' 콘텐츠를 보여주는 것을 넘어 '내 지인에게 의미 있는' 콘텐츠를 상위에 노출하고 싶다면, 이와 같은 하이브리드 소셜 랭킹 접근법이 효과적인 전략이 될 것입니다.

meta

How Advanced Browsing Protection Works in Messenger (새 탭에서 열림)

메신저의 고급 브라우징 보호(ABP) 기술은 종단간 암호화(E2EE) 환경에서 사용자의 프라이버시를 침해하지 않으면서도 악성 링크로부터 사용자를 안전하게 보호하기 위해 설계되었습니다. 이 시스템은 '프라이빗 정보 검색(PIR)' 기술과 정교한 인프라를 활용하여, 서버가 사용자가 어떤 링크를 클릭했는지 알 수 없게 하면서도 수백만 개의 악성 사이트 목록을 실시간으로 대조합니다. 결과적으로 사용자는 보안 위협으로부터 보호받는 동시에 대화 내용의 기밀성을 완벽하게 유지할 수 있습니다. ### 프라이빗 정보 검색(PIR)과 ABP의 설계 원칙 * PIR은 클라이언트가 서버의 데이터베이스를 조회할 때, 서버가 클라이언트의 쿼리 내용을 전혀 알 수 없도록 설계된 암호화 프로토콜입니다. * 가장 단순한 방법은 서버의 전체 데이터베이스를 클라이언트에 전송하는 것이지만, ABP의 데이터베이스는 크기가 너무 크고 업데이트가 빈번하여 이 방식은 불가능합니다. * 대안으로 OPRF(망각 의사 난수 함수)를 사용하고 데이터베이스를 여러 개의 '버킷(Bucket)'으로 나누어 샤딩(Sharding)하는 방식을 도입했습니다. 이를 통해 선형 탐색의 범위를 획기적으로 줄여 효율성을 높였습니다. ### URL 접두사 매칭의 복잡성과 프라이버시 문제 * 악성 URL은 단순한 문자열 일치가 아니라 접두사(Prefix) 매칭이 필요합니다. 예를 들어 `example.com`이 차단 목록에 있다면 `example.com/a/b/index.html` 같은 하위 경로도 차단되어야 합니다. * URL의 모든 가능한 접두사를 개별적으로 쿼리하는 방식은 서버에 누출되는 정보량을 증가시켜, 이론적으로 서버가 사용자의 원래 URL을 유추할 수 있게 만듭니다. * 도메인을 기준으로 버킷을 구성하면 프라이버시는 향상되지만, 단축 URL 서비스처럼 특정 도메인에 수많은 링크가 집중될 경우 버킷 크기가 비정상적으로 커져 데이터 전송 효율이 급격히 떨어지는 문제가 발생합니다. ### 규칙 세트(Ruleset)를 통한 데이터 균형 최적화 * 서버는 버킷 크기의 불균형을 해결하기 위해 클라이언트와 사전에 공유하는 '규칙 세트(Ruleset)'를 생성합니다. * 규칙 세트는 특정 해시 접두사에 대해 URL 경로 세그먼트를 몇 개 더 추가하여 다시 해싱할지를 지시하는 매핑 테이블입니다. * 클라이언트는 이 규칙에 따라 반복적으로 해싱 작업을 수행하여 최종적인 버킷 식별자를 도출합니다. 이 과정을 통해 서버는 사용자가 어떤 도메인을 조회하는지 알 수 없으면서도 균등하게 분배된 데이터 묶음을 응답할 수 있습니다. * 서버는 가장 큰 버킷을 반복적으로 쪼개는 반복 연산 과정을 통해 이 규칙 세트를 생성하며, 이를 통해 전체 시스템의 응답 속도와 대역폭 사용을 최적화합니다. ABP 기술은 암호학적 프리미티브와 대규모 인프라 공학을 결합하여 보안과 프라이버시라는 상충하는 가치를 동시에 실현한 사례입니다. 사용자 입장에서는 추가적인 조작 없이도 고도화된 보안 설정을 유지할 수 있으며, 서비스 제공자는 사용자 데이터를 열람하지 않고도 안전한 플랫폼 환경을 구축할 수 있습니다.