StudyDad Loop 제품을 만들며 배운 운영과 설계를 기록합니다.

FamBlend를 중심으로 실제 구현, 운영 메모, GitHub 포트폴리오를 연결해 쌓아가는 StudyDad의 작업 기록입니다.

worker 2

API timeout을 피하는 잡 큐와 비동기 워커 패턴

운영 콘솔 아키텍처 시리즈 7/9운영 콘솔에는 버튼을 누르면 파일을 만들어 내려받는 기능이 자주 있다. 엑셀, CSV, 집계표, 분석 리포트 같은 것들이다. 처음에는 단순하게 생각하기 쉽다.사용자가 요청한다. 서버가 데이터를 조회한다. 파일을 만든다. 응답으로 내려준다.작은 데이터라면 이 방식도 괜찮다. 하지만 작업이 수 초에서 수십 초 걸리기 시작하면 동기 HTTP 요청 안에서 끝내는 방식은 금방 한계에 부딪힌다.문제 상황리포트 생성은 다음 특성을 가졌다.여러 테이블에서 데이터를 조회한다.파일 생성 시간이 데이터 양에 따라 달라진다.브라우저가 응답을 기다리는 동안 사용자는 아무것도 알 수 없다.API Gateway나 프록시에는 timeout이 있다.실패했을 때 어디까지 진행됐는지 추적해야 한다.동기 A..

Worker가 결과 파일을 만들고 Object Storage에 올리는 흐름

데이터와 리포트 설계 시리즈 4/8리포트 생성 작업을 job으로 모델링했다면 다음 질문이 생긴다.누가 실제 파일을 만들 것인가?API 요청을 받은 서버가 직접 만들 수도 있지만, 오래 걸리는 작업은 worker로 분리하는 편이 좋다.API는 작업을 접수하고, worker는 파일을 만든다. 결과 파일은 object storage에 저장한다.API와 worker를 나누는 이유API의 역할은 사용자의 요청을 받는 것이다.worker의 역할은 시간이 오래 걸리는 처리를 수행하는 것이다.둘을 나누면 장점이 있다.API 응답이 빨라진다.무거운 파일 생성이 일반 요청을 막지 않는다.worker 실패를 job 상태로 기록할 수 있다.파일 생성 작업의 timeout과 메모리를 별도로 조정할 수 있다.재시도와 모니터링이 ..