if(kakao)2020 세션 정리

if(kakao)2020 세션을 들으면서 좋았던 세션들이나 나중에 다시 볼 세션 아카이빙 용도로 정리해보았다. 개인적으로는 세션 영상을 잘 녹화해주어서 정말 감사하지만 발표 자료가 같이 링크되어 있었다면 훨씬 좋지 않았을까 싶다.

개인화 콘텐츠 푸시 고도화 후기

건너뛰면서 들어서 잘 모르겠지만, 뉴스쪽인듯 하다.

  • 개인화 푸시는 1) 잘 안쓰는 사람이 쓰도록 하도록, 2) 이미 쓰는 사람이 더 많이 쓰도록 하는 것이 있는데, 1번에 초점을 맞춤.
    • 비활성기간이 길어질수록 급속도로 다음주 접속률이 떨어짐 -> 어떻게 보면 당연할 수도 있겠지만, 비활성화 기간을 너무 길게 가져가지 않아야 한다는 것 같음
    • 근데 당연한데 이 사람들은 푸시를 거의 클릭 안함
  • 푸시는 콘텐츠에 따라 클릭율이 굉장히 나뉨
    • 누구나 좋아할 콘텐츠를 보내면 전체적인 클릭율이 굉장히 좋아짐, WAU도 꽤 증가
    • 근데 누구나 좋아할 콘텐츠는 자주 생기지 않음
  • 그렇다면 일반적인 콘텐츠라도 모두가 좋아할 수 있도록 개인화 콘텐츠 푸시를 활용
    • 콘텐츠를 선정하여 선호도를 예측한 뒤, 결과를 분석하여 다시 콘텐츠를 선정하는 전체 자동화를 적용했다.
    • Gradient Boosting 방식을 사용했고, 제목, 본문에 기반해서 모델링했다.
    • 푸시 카피 (제목, 부제)는 템플릿 기반으로 A/B Testing을 통해 계속 걸러냄
  • 예측 방식
    • Contents-based: 콘텐츠를 모델링해서 유저도 모델링함 -> bi encoder 형식인가?
    • CTR(Click through rate) Prediction: 과거에 유저가 클릭했던 정보를 모델링, 클릭 확률 예측
    • Lookalike: 비슷한 유저끼리 클러스터링

E2E 음성인식 가속화 기술 그리고 On-Device로의 확장

요거는 그냥 순수 호기심으로 들음 -> 근데 보다보니까 논문 저자분이 발표하시는 세션이었다. https://arxiv.org/abs/2002.03577

  • 요약: Adaptive Expansion Search를 제안했는데, 이게 WER에서 큰 차이가 나지 않는 성능에서 속도가 굉장히 빨라짐. 이걸 on-device로 개발하자!
  • 용량이 크긴 하지만, 좋은 성능으로 빠른 속도로 음성인식을 On-device로 개발함 -> 데모비디오 있는데 꽤 좋아요

추천 시스템, 써보지 않겠는가? - 맥락과 취향 사이 줄타기

  • 피코마라는 카카오 재팬에서 만든 만화 플랫폼에서 추천 시스템 개발 사례
  • 추천시스템을 적용하려는 상황: 유저가 기본적으로 새로운 작품을 보고 싶어할 때
  • 개인화 추천 vs 연관 추천 -> 유저를 기준으로 취향을 고려해야 하나, 지금 소비중인 맥락을 기준으로 고려해야 하나.
    • 그래서 둘을 A/B 테스트를 해봄
  • 구현: Matrix Factorization 알고리즘 방식 선정
    • user-item matrix를 user embedding을 가지는 user matrix와 item embedding을 가지는 item matrix로 분해하여 구함
    • 개인화 추천: user matrix X item matrix로 구현
    • 연관 추천: item matrix X item matrix로 similarity 구현
  • 결과
    • 상황에 따라 다르지만, 유저가 현재 작품이 마음에 안들어서 나갈때는 개인화가 잘되는 모양새(현재 작품과 유저가 그렇게 유사하지 않을 때)이고, 유저와 현재 작품이 유사할 때는 연관 추천이 잘 된다.
    • 개인화 추천이 작품끼리의 유사도를 기준으로 비교해보았을 때 성능이 좋다.
    • 다만, 작품을 끝까지 읽고 나오는 추천의 경우에는 마음에 들었기 때문에 끝까지 읽은 것이라 연관 추천이 훨씬 좋았음.

UI 테스트를 위한 여정

  • 내부적으로 유지하는 React, Vue용 컴포넌트 라이브러리가 존재
  • 해당 UI 컴포넌트들을 전부 릴리즈 전에 확인할 수 없으니 테스트 작성
  • Snapshot testing with Storybook
    • 이슈1) React Hook을 사용하지 못함 -> 지금은 괜찮음
    • 이슈2) Ref를 사용하지 못함 -> Enzyme으로 교체
    • 이슈3) 모노레포 형태의 라이브러리이기 때문에 jest가 상위 디렉토리의 asset에 접근하기 힘들어 함 -> jest의 rootDir를 모노레포의 최상위로 돌리고 설정함
  • 근데 Snapshot만으로는 CSS 추적은 안됨
    • storyshots-puppeteer를 사용해서 이미지로 테스트하기로 함
    • 이슈1) GIF 타이밍 문제때문에 이상해짐
    • 이슈2) 사용자 동작 시뮬레이션이 필요

카카오와 MongoDB

  • 다른 내용은 스킵
  • 모니터링은 프로메테우스, 그라파나 적용 (exporter는 커스텀으로 작성)
  • 사례
    • 공간 인덱스 (카카오 모빌리티에서 사용자 위치 기반 검색): 이걸 복합 인덱스로 적용
    • MySQL -> MongoDB 마이그레이션
      • 문제: 스케일링의 한계, 스키마 변경 부담
      • 몽고디비는 압축을 해주기 떄문에 로그 데이터 이관 후 63% 정도의 압축률을 보였음
      • 샤드 클러스터 구성해서 스케일링 부담 적어짐

카카오톡 시스템의 진화 - 테스트 자동화로 자신감 갖기

  • 요구사항 충족을 위한 기능 개발에 집중하다보니 테스트가 적어졌고, 개발/배포에 대한 부담이 증폭됨
  • 단위 테스트/통합 테스트 추가, BDD 기반
  • 사실 뒤로는 다른 발표에서 들을 수 있는 이야기이기 때문에 정리는 생략, 근데 들어보면 세세한 생각을 들을 수 있어서 좋긴 하다.
    • 요약: 배포가 힘들다! -> 테스트를 추가해서 자동화 테스트를 진행하자 -> 좋은 환경이 구성됨

카카오톡 사례로 살펴보는 견고한 안드로이드 앱 만들기

이거는 이제는 안드로이드를 절대 안하지만 그냥 궁금해서 들었다. 정리는 스킵하지만 들어보면 재밌어요.

November 30, 2020
Tags: conference