SaaS 백그라운드 작업에 우선순위가 필요한 이유
SaaS에서 보고서 생성과 알림 전송을 같은 백그라운드 큐에 넣으면 한 고객의 대량 보고서가 긴급 알림을 뒤로 밀 수 있습니다. 모든 작업이 비동기라는 이유로 같은 우선순위여서는 안 됩니다.
업무 중요도와 소요 시간을 나눈다
짧고 긴급한 인증 알림, 몇 분 걸려도 되는 정산, 밤에 처리할 대량 내보내기를 분류합니다. 작업마다 마감 시각, 예상 실행 시간, 고객 영향 범위를 정의합니다.
우선순위 큐를 분리한다
긴급 작업과 일반 배치를 별도 큐나 워커 풀로 분리하면 한 종류의 폭주가 전체 서비스를 막는 일을 줄일 수 있습니다. 그러나 높은 우선순위만 계속 처리하면 낮은 작업이 굶주릴 수 있어 최소 처리량을 보장합니다.
고객별 공정성도 지킨다
대형 고객 한 곳이 긴급 큐를 독점할 수 있습니다. 고객별 동시 실행 한도와 공정한 스케줄링을 두고, 특정 고객의 작업이 다른 고객의 대기 시간에 미치는 영향을 계측합니다.
재시도가 우선순위를 왜곡하지 않게 한다
실패 작업이 즉시 같은 큐로 돌아오면 새로운 긴급 작업을 밀어냅니다. 재시도 횟수와 간격을 제한하고 반복 실패는 별도 대기열로 보내 담당자가 원인을 확인하게 합니다.
대기 시간으로 정책을 평가한다
큐 길이 하나만 보지 말고 우선순위·고객별 가장 오래된 작업의 나이, p95 대기 시간, 마감 초과를 측정합니다. 정책 변경 후 낮은 우선순위의 굶주림이 늘지 않았는지도 확인합니다.
현장에 적용할 때의 순서
- 작업 마감과 고객 영향으로 우선순위 정의
- 큐·워커 풀과 고객별 실행 한도 분리
- 대기 시간과 굶주림을 함께 감시
주의할 실패: 모든 비동기 작업을 한 큐에 넣고 순서만 신뢰
관찰할 지표: 우선순위별 p95 대기·마감 초과·굶주림
적용 전 체크리스트
- 작업별 마감·실행 시간·고객 영향을 분류한다
- 긴급과 배치 큐를 분리하고 굶주림을 방지한다
- 고객별 p95 대기와 마감 초과를 추적한다
참고 자료
Amazon SQS — Fair Queues. 멀티테넌트 큐에서 고객별 공정성을 다루는 방식은 AWS 공식 자료를 참고했습니다. 업무 우선순위별 큐 분리는 적용 제안입니다.
이미지와 도식은 이해를 돕기 위한 개념 시각화입니다. 특정 고객의 실제 설비·데이터·화면을 재현한 것이 아닙니다.
#SaaS #작업큐 #우선순위 #백그라운드작업 #멀티테넌트 #NoisyNeighbor #재시도 #운영 #성능 #공정성
이 주제를 실제 시스템으로 옮기려면 웹 서비스 개발 살펴보기