LIKEY 웹 — 미디어 · 실시간 · SSR
숏폼 '스토리' 기능 개발
- 문제
- 처음 도입하는 영상 재생 기능이라, 슬라이드를 넘기면 재생이 멈추거나 iOS에서 자동재생 시 전체화면으로 강제 전환되는 등 실패 경로가 많았습니다.
- 설계
- 재생이 실패하면 HLS, 압축본, 원본 순으로 다른 소스로 다시 시도하도록 만들고, 플레이어 생성·해제를 슬라이드 전환과 동기화했습니다.
- 결과
- 소리 없는 영상에서는 음소거 버튼을 숨기는 등 오동작을 하나씩 제거했습니다. 출시 후에도 Sentry 데이터를 보며 성능 개선과 후속 기능 개발을 이어갔습니다.
Sentry 모니터링 기반 SSR 에러 개선
- 문제
- 서버 렌더링 중 발생하는 크래시가 오랫동안 반복되고 있었는데, 에러 메시지만으로는 원인 지점이 보이지 않았습니다.
- 원인
- Sentry에 쌓인 에러 데이터를 분석해, 서버가 페이지 상태를 직렬화하는 과정에서 순환참조가 생기는 구조를 찾아냈습니다.
- 결과
- 문제가 된 데이터 요청을 클라이언트로 옮겨 크래시를 없애고, 같은 유형이 재발하지 않도록 기준을 정리했습니다. 외부 스크립트가 일으키던 라우터 에러도 같은 방식으로 해결했습니다.
실시간 채팅(라이브 · DM) 안정화
- 문제
- 라이브 방송이 끝날 때 실시간 연결을 정리하는 과정에서 에러가 새어 나와 650여 명이 겪고 있었고, DM방은 드나들 때마다 이벤트 리스너가 쌓였습니다.
- 원인
- 연결이 끝나기 전에 해제 요청이 겹치면 앞선 요청이 취소되며 에러가 나는 타이밍 문제, 그리고 해제되지 않고 남는 리스너였습니다.
- 결과
- 연결을 정리하는 순서를 바로잡고, 온라인 여부와 연결 상태를 조합한 3단계 연결 배너를 구축했습니다. 실측하여 리스너가 더는 늘지 않는 것을 확인해 검증하였습니다.
그 외
- 수백 개 쌓여 있던 타입 에러를 단계적으로 전부 정리하고, 다시 쌓이지 않도록 CI에 타입 검증을 추가
- Chrome에서만
.mov썸네일이 안 보이던 버그를 웹 스펙을 확인해 해결 — iOS Safari에서 검게 나오던 썸네일도 수정 - 대용량에서 자주 실패하던 업로드를 파일을 나눠 올리는 청크 방식으로 전환(재시도·진행률 포함), DM 메모리 누수 제거
- 일본 진출 대응 — 백넘버 릴리즈, 6개 통화 가격 포맷 일원화 · 쿠폰함 개발
- 간헐적으로 실패하던 e2e 테스트를 원인을 추적해 해결 · Sentry에 불필요한 에러가 쌓이지 않게 거르는 기준을 팀 표준으로 정착
- 멤버십 프로모션, 실시간 승급 팬 티어, 룰렛·스크래치, AI Twin 채팅 등 수익화 기능 다수 출시
- 디자인 시스템 Shared 컴포넌트 구축과 Histoire 문서화