Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

[235]루빅스개발이야기 황지수

1,721 views

Published on

[235]루빅스개발이야기 황지수

Published in: Technology

[235]루빅스개발이야기 황지수

  1. 1. RUBICS 개발 이야기 황지수, KAKAO 2016.10.24
  2. 2. Profile • Software Engineer @ KAKAO • BigData • ADTech • RecommenderSystem • a.k.a. Mario
  3. 3. Overview #21개월
  4. 4. RUBICS란? Real-time User Behavior-based Interactive Content Recommender System 콘텐츠 추천 시스템
  5. 5. 코드네임 Tangram 유한한 조각으로 다양한 모양을 만들 수 있는 퍼즐
  6. 6. 콘텐츠 추천 시스템
  7. 7. Agenda • 어떻게 콘텐츠를 추천하고 있는지? • 추천 시스템을 만들면서 어떤 문제를 해결했는지?
  8. 8. Model
  9. 9. 추천 테크닉 • Collaborative Filtering, Content-based Filtering • Cold start problem “이 상품을 본 사람들이 많이 본 상품들입니다”
  10. 10. Cold Start User • Non-Click User: 60% HEAVY USER
  11. 11. Multi-Armed Bandit • Bar가 여러 개인 슬롯머신 • 각 Bar의 승리 확률은 일정 • 최고의 수익을 얻을 수 있는 방법은?
  12. 12. Multi-Armed Bandit 전략 • Explore & Exploit • 알려진 전략 • 𝜀 − 𝑓𝑖𝑟𝑠𝑡 • Upper Confidence Bound • 활용 • 점심 먹을 장소 고르기
  13. 13. MAB 콘텐츠맛집 추천에 활용 • 변수 • “맛이 예전 같지 않아” • “위치에 비해 사람이 많은 것 같아” • “어르신들이 좋아할만 한 집인 듯”
  14. 14. 콘텐츠, 변화하는 CTR 0 0.2 0.4 0.6 0.8 1 1.2 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 NormalizedCTR 뉴스가 송고된 후 지난 시간 (분)
  15. 15. 콘텐츠, Positional Bias 0 0.2 0.4 0.6 0.8 1 1.2 10 30 50 70 90 110 130 150 170 190 210 230 250 NormalizedCTR 시간 (분) 첫번째 세번쨰 열세번째
  16. 16. 루빅스 MAB • Moving Average • 변화하는 CTR 반영 • 다중 Explore • Position, User Cluster 등의 편향 보정 • 피드백을 실시간으로 수집해서 추천에 활용
  17. 17. System #5B
  18. 18. Overview User Content Service App App App Data Model ProfilingModeling Computing Engine Real-Time Analytics Multi Dim DB Visualization TimeSeries DB Data Pipeline
  19. 19. Data Pipeline streaming BatchMini batch ( < minutes ) App App App
  20. 20. 목표 • 데이터에 기반해 진화하는 시스템 • 고성능 • 확장성 • 장애 내구성
  21. 21. Data Driven #2.1배
  22. 22. 루빅스 성과 Daily CLICK 219% Daily UV 143% Before RUBICS(2015 4월) vs. After RUBICS(2015 7월)
  23. 23. 모델 개선 과정 A A’ A’’ B B’’B’ C’’ C C’ A’ A’’ B C’’ C C’ C’’ Offline Test Online Bucket Test
  24. 24. Offline Test • 과거 Log를 이용해서 모델 성능 검증 • Online의 환경을 완벽하게 재현하기는 어렵다
  25. 25. Online Bucket Test • 실환경에서 유저들을 대상으로 테스트 • 사용자를 Bucket으로 나누고, 성과 비교 • 실시간으로 테스트 & 분석 RUBICS APP Bucket A Bucket A Bucket B
  26. 26. Online Bucket Test
  27. 27. Data Flow Response Feedback ReqID à Context Recommender Bucket Mgr RUBICS Front Memory Grid ReqID ReqID JOIN • ReqID • 추천 context를 추적할 수 있는 unique key
  28. 28. Data Flow v1 review Pros • Simple • Response size Cons • Memory grid limit • < 1H, 99% • Abusing • Synthetic data • Click attack
  29. 29. Data Flow v2 Response Feedback RecInfo Recommender Bucket Mgr RUBICS Front Memory Grid RecInfo RecInfo • RecInfo • Bucket Setting • Explore info • Error detection code
  30. 30. High Performance #3ms
  31. 31. Data Center DC1 DC3 DC2 RUBICS • Latency SLA : 50ms • 3ms ( 99%)
  32. 32. Serving Layer • Nginx • Reverse proxy • Play-scala • Non blocking • Couchbase • Low latency, scalability • 단순한 operation • Zookeeper • System config
  33. 33. Serving Layer Recommender History Profile Content Bucket Reverse Proxy • Latency를 줄이기 위한, 데이터 형태와 접근 방식 개선
  34. 34. 서빙에 최적화된 데이터 형태 • Content • Meta data • Precalculated scores • History • 유효한 데이터
  35. 35. 서빙에 최적화된 데이터 준비 DB QueueConsumer Pool BuilderApp KV Lookup ZK Config
  36. 36. Data update Get(Key) à Data, CAS Set(Key, Data, CAS, TTL) Mutate • Couchbase in-place update 지원하지 않음 • CAS를 이용한 atomic update DB
  37. 37. Network I/O 줄이기 Local Cache Recommender History Profile Content Bucket ZK Watch Updater • Local cache 최대한 활용 • ZK watch를 이용해서 데이터 갱신
  38. 38. 수평적 확장 • 요청량 60배 증가 • 노드 추가만으로 확장 App LB App App AppApp
  39. 39. Fault Tolerance #99.998%
  40. 40. 가용성 Total down time : 10여 분 Availability : 99.998 %
  41. 41. Monolithic Queue Feedback Processor
  42. 42. Micro Service Queue Click Impression
  43. 43. Micro Service Queue Impression Validation Item Score User history HDFS archive Hive Loader Distinct
  44. 44. Micro Service • 일부 Task의 장애가 전체 장애로 전파되지 않음 • 독립적으로 개발 가능 • 그렇지만 관리의 복잡도 증가 Validation Item Score User history HDFS archive Hive Loader Distinct
  45. 45. Service Orchestration Tools Task Task Task Task • Task가 죽지 않도록 관리 • 일관된 배포&롤백 방법 • Task를 구현할 때, Restartable & Idempotent 한지 고려 Marathon Task Example
  46. 46. Test Automation Task Metrics System Tests Check State Check Metrics • 지속적으로 전체 데이터 파이프라인 테스트 • Task는 자신의 state를 외부에 공개
  47. 47. Summary
  48. 48. 요약 • 루빅스: 카카오톡, 다음 콘텐츠 추천 • MAB 기반으로 시작 • 추천 성능 개선과 진화를 위해서 • Offline/Online Bucket Test • 시스템 성능 • data 형태와 접근방식 개선 • 수평적 확장이 가능 구조 • 안정적인 데이터 파이프 라인 • Micro Service • Service Orchestration • System Tests
  49. 49. Q&A

×