# 노션 페이지 미디어 업로드 누락 개선을 위한 Queue 구현
Problem
Admin 페이지에서 Notion API를 이용하여 교육 자료를 업로드하는 중, 미디어 자료 중 일부가 간헐적이고 무작위적으로 업로드에 실패하여 교육 자료의 일부가 지속적으로 누락되는 이슈에 직면하였습니다.
Solution
기존 Promise.all 로직에서 발생할 수 있는 문제들을 세분화하여 가설을 세우고 검증하는 과정을 통해, 동시 다발적인 요청으로 인한 서버의 메모리 제한(OOM)이 원인임을 파악했습니다. 서버 Scale-Up 없이 프론트엔드 레벨에서 문제를 해결하기 위해, Recursive(재귀) 알고리즘을 활용한 큐(Queue) 기반의 순차적 업로드 로직으로 전면 재구성했습니다.
✨ 개선 결과
- 미디어 업로드 로직을 순차 처리 방식으로 변경하여, 간헐적으로 발생하던 미디어 누락 이슈를 완벽히 해결하고 업로드 성공률을 100%로 개선했습니다.
- 재업로드 로직과 함께 전체 업로드 진행 상황을 보여주는 Progress UI를 구성하여, 관리자가 업로드 상태를 명확히 인지할 수 있도록 UX를 향상시켰습니다.
- 순차 처리로 인해 기존 업로드 방식보다 시간은 더 소요되었으나, '속도'보다 '기능의 정확성(데이터 무결성)'을 우선시하는 비즈니스적 트레이드오프(Trade-off)를 성공적으로 조율했습니다.
Before
약 80%
After
100%
Learned
- • 외부 API와 내부 API를 모두 이용하는 기능에서 문제가 발생했을 때, 원인을 파악하기 위한 가설 검증 단계와 실험을 체계적으로 진행해볼 수 있었습니다.
- • 기능의 정확도와 처리 속도 사이의 충돌 상황에서, 서비스의 비즈니스적 관점과 우선순위를 고려하여 합리적인 결정을 내리는 시야를 얻게 되었습니다.
- • 비동기 로직과 재귀 함수의 흐름을 다시 검토해볼 수 있었으며, 유지보수를 위한 직관적인 코드 설계의 중요성을 깨달았습니다.
- • 서버의 리소스 제한이 있을 때 백엔드 인프라 수정에만 의존하지 않고, 프론트엔드 단에서의 구조적 로직 개선만으로도 문제를 해결할 수 있는 역량을 길렀습니다.
Detail Article








