[기술블로그] 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 : 많은 프로세스가 네트워크를 기다리다가 네트워크가 열리는 순간 모든 프로세스가 활성 상태로 되어버리는 문제
- Event age : 시간이 많이 지난 이벤트는 없애버린다
- Online Device : 온라인인 기기에만 알림을 보낸다
- Scaling 정책 : scale-down에 비해 scale up을 공격적으로 수행한다.
- Event 중복 제거 : 앱이 백그라운드에서 도는 경우 같은 이벤트를 여러버누 보내는 경우가 많아 제거한다.
- 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
댓글남기기