[기술블로그] 2월 4주 주간 기술블로그 Follow Up

금주(2/19~2/25)에 포스팅 된 주요 기술 블로그의 포스팅을 요약하여 공유합니다.

F/U 하는 기술 블로그 목록은 이 링크를, 지난주 포스팅은 이 링크를 참고하세요.

(추천)을 붙인 포스팅은 번역 및 요약을 해두었습니다.

금주 업로드 된 포스팅 개수 : 8


NHN Cloud MeetUp!

JavaScipt Symbol의 근황

게시일 분류 주요 기술
2022.02.21 기술 소개, docs 요약 Javascrip.symbol

ES2015에 추가되었으나, 잘 쓰이지 않는 Symbol 의 현실 개발 활용 방안에 대해 소개한다.


LINE Engineering

LINE Open Source Sprint 2021: 오픈소스에 잘 기여하는 문화 만들기

게시일 분류 주요 기술
2022.02.25 오픈소스 기여, 행사 소개 오픈소스 기여

짧은 기간 동안 LINE의 오픈소스에 기여하는 행사인 오픈소스 스프린트의 소개와 결과 공유

LINE 앱의 다자간 대화 기능 통합

게시일 분류 주요 기술
2022.02.24 기능 마이그레이션 사례 소개, UX 점진적 통합, 사용자관점 기능 추가

LINE의 “여러 명과의 대화” 기능과 “그룹” 기능을 통합하여 “그룹 대화” 기능으로 마이그레이션 하는 과정 소개


kakao Tech

FE개발자의 성장 스토리 12 : Angular E2E 테스팅 경험기

게시일 분류 주요 기술
2022.02.22 기능 마이그레이션 사례 소개, UX Cypress, E2E 테스트, 기능적 테스트

Angular 프로젝트에 Cypress를 이용해 E2E 테스트 적용하고 테스트 품질을 향상시키기 위한 방법 소개


야놀자

[야놀자 R&D] 프리미엄 여가 서비스를 주도하는, 데일리R&D유닛

게시일 분류 주요 기술
2022.02.25 개발 조직 소개, 채용 홍보 기술 부채 해소

데일리 호텔 개발 조직인 데일리 R&D 조직(20명)이 수행한 기술 부채 리뉴얼 프로젝트를 간단히 소개


Google Developers

Google for Games Developer Summit returns March 15

게시일 분류 주요 기술
2022.02.22 행사 소개 Android Game Development Kit 등

3월 15일에 열리는 게임 개발자를 위한 솔루션 소개 행사 Google for Games Developer Summit 공지


Amazon Science Blog

What’s next for deep learning?

게시일 분류 주요 기술
2022.02.22 인터뷰, AI 발전 방향 Symbolic reasoning, Interactive learning

AAAI의 부회장 Nikko Ström 인터뷰.

AAAI : the Assocation for the Advancement of Aritificial Intelligence

Deep learning 이후 AI revolution 예측 : Symbolic reasoning & Interactive learning 소개


THE NETFLIX TECH BLOG

(추천) Rapid Event Notification System at Netflix

게시일 분류 주요 기술
2022.02.19 기능 개발 과정 소개, 대용량 처리 기술 Manhattan, 고가용성, multi device 처리

넷플릭스의 notification 처리 시스템 RENO에 대한 소개.

최대 초당 150K 발생하는 요청을 어떻게 처리 했는지 자세히 적혀있다.

포스팅 요약 보기

개요

  • 목표 : 엄청나게 많은 이벤트를 처리하고 기기로 알림을 보내는 시스템 개발
  • 이유 : Netflix는 iOS, Android, TV, Web browser 등 많은 플랫폼과 2.2억명의 user를 처리해야 함
  • 배경지식

내용

Use cases

  • Viewing Activity : 영상을 보고 있는가? 이벤트
  • Personalized Experience Refresh : 맞춤형 컨텐츠 추천이 끊임없이 업데이트 된다. 사용자에게는 언제 보내줄까
  • Membership Plan Changes : 사용자가 멤버쉽을 바꾸면 즉각적으로 반영되어야 한다.
  • “My List” 업데이트 : 내 목록에 추가하면 이것도 바로 모든 기기에서 보여야 한다.
  • Member Profile 변경 : 프로필, 특히 성별이나 나이제한 등을 걸면 바로바로 반영되어야 한다.
  • System Diagnostic signals : 어플리케이션 troubleshoot을 위한 시스템 진단 정보 추적이 필요함

RENO 설계

RENO : Rapid Event Notification System

  • 이벤트 소스 일원화

다양한 microservice와 다양한 사용자 actions에서 이벤트가 발생한다.

이를 근 실시간으로 처리하기 위해 일원화된 이벤트 소스를 분산 컴퓨팅으로 처리했다.

RENO는 이를 위해 Manhattan 프레임워크를 사용하였다.

Manhattan : 이벤트 관리 프레임워크. 단일 이벤트 소스 역할

  • 이벤트 우선순위 지정

이벤트에 따라 우선순위를 매겨 처리 순서를 지정해야 한다.

우선순위 큐와 각 큐 별 처리 클러스터(corresponding event processing clusters)를 생성했다.

클러스터에 따라 scaling 정책을 독립적으로 적용했다.

  • Hybrid Communication Model

다양한 기기를 지원해야하기 때문에 Push만 사용할 수도, Pull 만 사용할 수도 없다.

📌 참고) Push : 서버 알림을 보내고 / Pull : 사용자가 알림을 가져옴

TV는 항상 켜져있지 않아서 Push를 받을 수 없고, mobile은 pull 알림이 계속 발생하면 너무 알림이 많이 뜬다.

그래서 Push And Pull communication model을 구현했다.

서버는 알림이 발생하면 바로 push하고, 클라이언트는 다양한 lifecycle에서 home을 호출해 알림을 pull 한다.

  • Targeted Delivery

기기 종류에 따라 delivery 방법을 다르게 만들었다.

Android는 FCM, Apple은 APNS, 웹과 TV는 Zuul Push이다.

  • 높은 RPS 처리

RENO에서 사용한 높은 RPS 처리 최적화 방법 5개를 소개한다.

2.2억명의 사용자가 초당 150K씩 요청을 보내대니 thundering herd problem 이 발생한다.

thundering herd problem : 많은 프로세스가 네트워크를 기다리다가 네트워크가 열리는 순간 모든 프로세스가 활성 상태로 되어버리는 문제

  1. Event age : 시간이 많이 지난 이벤트는 없애버린다
  2. Online Device : 온라인인 기기에만 알림을 보낸다
  3. Scaling 정책 : scale-down에 비해 scale up을 공격적으로 수행한다.
  4. Event 중복 제거 : 앱이 백그라운드에서 도는 경우 같은 이벤트를 여러버누 보내는 경우가 많아 제거한다.
  5. Bulkheaded delivery : 기기별로 다른 시스템을 통해 알림을 내보낸다.

실 적용 라이브러리

Event Management Engine : Manhattan 프레임워크 사용

Event Priority Based Queues : Amazon SQS queues 사용

Event Priority Based Clusters : AWS Instance Clusters로 SQS queues를 구독

Outbound Messaging System : 기타 플랫폼에 Zuul Push solution 사용

Persistent Store : 알림 송신 내용 저장을 위해 Cassandra Database 사용

Observability : metrics(CPU, memory, performance)와 edge-of-the-service 추가 모니터링. Mantis로 모니터링

결론

성과

  • 새로운 use cases에도 쉽게 적용 가능해졌다
  • 높은 처리를 수평적 확장으로 처리 가능

정리하며

넷플릭스의 사용자가 급격하게 늘어나면서 RENO는 message delivery에 대한 보장과 message batching과 같은 많은 이득을 주고 있다.

이 RENO 시스템에 대한 채용을 진행중이다!


포스팅이 없는 블로그

네이버 D2 : 1/29

당근마켓 팀 블로그 : 2/18

우아한형제들 기술 블로그 : 2/17

WATCHA 팀 블로그 : 2/14

무신사 기술 블로그 : 21/12/17

직방 TECH : 2/11

ebay Tech Blog : 2/11

Linked in Engineering : 2/18

Engineering at Meta : 1/18

slack engineering : 2/18

댓글남기기