팀 프로젝트 진행 중, 내가 맡은 서비스가 최장 5분까지 시간이 소요되는 일이 있었다.
노션의 API를 호출해서 특정 사용자의 모든 데이터를 읽어오고, 이를 가공하기 위해 Fastapi 서버에 자연어 처리, 이미지 처리 등의 기능을 요청 한 후, DB에 저장하고 생성된 ID를 반환하는 로직이었다.
전체적인 로직을 그림으로 그려보면 다음과 같다.
이때 통신 빈도는 다음과 같다.
이때, Notion에서 안정적으로 사용자의 모든 페이지를 제공해주는 API가 없기 때문에 ( search라는 API가 있지만, 모든 페이지를 읽어온다는 보장이 없다고 명시되어 있다 ) 사용자의 모든 데이터를 불러오기 위해선 API를 재귀적으로 호출해야 하고, 이 작업이 매우 오래 걸린다.
따라서 최소 통신은 5번이지만, 평균 통신은 40번 정도가 된다.
사용자 입장에서 생각했을 때, 시간이 오래 걸리는 서비스는 충분히 참을 수 있다. ( 대부분의 다운로드가 그 예시이다. )
그러나, 현재 어디까지 진행됐는 지 알지 못한다면 기다리기 매우 괴로울 것이다.
따라서, 더 나은 사용자 경험을 위해선 현재 작업이 어느정도 진행되었는 지 실시간으로 공유할 필요가 있다고 생각했다.