1편: https://yestomo.tistory.com/25 [O+T]: 영상 품질 측정하기 (1. 올바른 영상 변환과 품질 측정)영상 트랜스코딩 - VMAF 품질 측정 과정을 거치며 마주한 문제를 해결하는 과정에 대해 적어놓은 글입니다. 문제 해결 중심으로 글이 전개되므로 영상에서 사용하는 개념에 대한 설명이 적게 들yestomo.tistory.com 0. 개요1편을 진행하기도 전.. 프로젝트를 막 시작했을 때, 팀원들과 영상에 대해 처음 공부하고 이것저것 알아보며 Per-Title-Encoding이라는 것을 알게 되었습니다. 프로젝트 기간에는 시간이 부족해서 완성하지 못했지만, 그때 논의했던 것들이 생각나 따로 공부해봤습니다. 영상 단위로 최적화하는 Per-Title-Encoding도 있고, 아예..
0. 개요유튜브나 넷플릭스, 혹은 다른 OTT 서비스에서 영상을 시청하면 아래와 같이 어디까지 봤는지 그 지점을 표시해줍니다.이렇게 시청 전에 재생 지점을 보여주는 것뿐만 아니라, 이전에 시청했던 영상을 다시 볼 때 마지막으로 봤던 지점부터 이어 볼 수 있는 기능을 제공합니다.특히, 사용자가 영상을 시청하는 동안 일정 주기로 현재 재생 위치를 갱신해야 하기 때문에 같은 사용자가 같은 영상에 대해 짧은 간격으로 반복 요청을 보내는 구조가 됩니다. 또한, OTT 서비스에서 사용자는 영상 시청에 대부분의 시간을 사용하므로 자연스레 트래픽이 가장 몰리는 지점이 됩니다. 이 요청은 같은 사용자와 같은 영상에 대해 짧은 간격으로 반복 호출된다는 특징이 있습니다. 따라서 일반적인 조회와 다르게 반복적인 write 요..
0. 개요프로젝트를 진행하며 사용자가 보게 될 '플레이리스트' 구성에 있어 '시리즈'와 '시리즈가 아닌 콘텐츠' 구분 로직이 복잡했습니다. 특히, OTT 서비스의 홈 화면 API들은 자주 호출되기 때문에 사용자와 데이터가 많다면 병목이 있을 것이라고 예상했습니다. 따라서 K6 테스트 후 병목 지점을 수치로 확인하고, 원인 파악 및 개선 작업을 진행하기로 했습니다. 대표적으로인기 차트 플레이리스트 조회Top Tag(태그 기반) 플레이리스트 조회시청 이력 플레이리스트 조회위 세 가지 API가 홈 화면에서 호출됩니다.겹치는 로직이 많아 인기 차트 플레이리스트 조회 중심으로 개선 과정을 정리했습니다. 테스트 환경다른 요소들은 제외하고, 요청-응답 중심으로 간단하게 그림으로 나타내면 아래와 같습니다. 서버 스펙..
병목 지점 탐색 및 개선 결과 확인을 위해 테스트 환경을 구축한 내용입니다. 프로젝트 내에 병목 지점으로 의심되는 부분은 많지만, 막상 테스트를 진행하지 않아 정말 개선이 필요한 지점인지, 또, 어느 규모에서 얼마나 문제인지 구체적으로 알 수 없었습니다. 의심에 대한 가설을 세우고, 테스트를 진행하여 실제 병목 지점을 파악하고, 이유를 찾아가며 개선 후 검증하는 절차를 거쳐가며 문제 지점부터 해결까지 지표 기반으로 진행하고자 합니다.( 가설 -> 테스트 -> 병목 지점 선정 -> 개선 -> 검증 -> 결과 ) User API 서버의 테스트 및 개선을 위한 환경 구축 과정을 기록합니다. 더미 데이터 준비데이터 규모에 따라 응답 시간이 달라집니다. 너무 작거나 큰 규모의 데이터를 가진 환경에서는 정확한..
💡전시회 기록 서비스의 푸시 알림 중 다중 디바이스에 관한 내용입니다. 알림이 발생하는 상황들과 현재 상태를 소개하고, 다중 디바이스를 지원할 수 있는 설계로의 고민들을 적어보았습니다. 여러 기기에 알림을 보내는 것을 넘어 추가와 삭제, 업데이트를 고려하여 설계하고자 했습니다. 0. 소개 해당 서비스는 안드로이드 앱이며, 사용자에게 푸시 알림을 보내고 사용자는 서비스의 알림 탭에서 해당 알림을 조회할 수 있습니다. 푸시 알림이 어떤 상황에서 발생하는지, 단일 디바이스의 한계는 무엇이었는지를 알아본 후 다중 디바이스로의 변경을 중심으로 예외 상황(앱 삭제, 로그아웃 등)을 어떻게 처리했는지 등의 설계와 구현을 정리했습니다. 1) 단일 디바이스 기존 설계는 User 테이블에 fcm_token 컬럼을 두어 ..
💡이 글은 동시성 처리가 필요한 상황에서 서비스와 게시글의 특성을 통해 효율적으로 조회수를 카운팅 할 수 있는 방법에 대해 살펴봅니다. 동시성을 처리하는 가장 기본적인 작업만 되어 있는 상태부터 세분화하여 업데이트를 위한 락을 줄여가는 방식으로 전개됩니다. 이전 글에서 조회수 카운팅 관련하여 크게 두 가지 문제를 다뤄봤습니다. 하나는 맞춤형 집계를 위한 조회수 카운팅 정책 설정이고, 다른 하나는 여러 요청이 발생할 때의 동시성 문제입니다. 조회수 정책 관련 글과 동시성 처리 관련 글에서 각각의 내용을 확인하실 수 있습니다. 이번에는 사용자가 많아질 경우 게시글 조회마다 발생하는 조회수 업데이트로 인한 성능에 대한 이야기를 해보겠습니다. 현재, update쿼리를 직접 사용하여 업데이트 할 때, 레코..