ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION1288 / 1500
분산 시스템난이도 중하5분 답변 목표 · 보강본

정기 작업 서버가 한 시간 멈췄습니다. 밀린 작업을 전부 실행할지 최신 한 번만 실행할지 어떻게 정하나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

정기 시각과 실제 실행, 미실행 보충 정책을 구분해야 합니다. 매 시각의 효과가 필요한 정산과 최신 상태만 계산하면 되는 캐시 갱신은 서로 다른 정책을 요구합니다.

동작 원리와 전제

예정 실행 시각을 논리 작업 키에 포함해 중복 스케줄러와 재시작을 멱등 처리할 수 있습니다. 밀린 모든 작업을 한 번에 시작하면 회복 중 과부하가 생기므로 동시성·대기·우선순위 예산을 둡니다.

선택과 실패 처리

현지 시간 기반 cron은 일광절약시간의 누락·중복 시각을 처리해야 합니다. 이전 실행이 끝나지 않았을 때 겹칠지 건너뛸지 큐에 둘지도 정합니다. lease가 만료돼도 옛 작업이 끝난 것은 아니므로 결과 갱신에 세대 조건을 둡니다.

구체적인 사례와 검증

매시간 원장을 마감하는 작업은 10시·11시 실행을 각각 복구해야 할 수 있지만 현재 캐시를 갱신하는 작업은 최신 한 번만 수행해도 될 수 있습니다. 예정 시각을 논리 키로 남기면 어떤 회차를 처리했는지 알 수 있습니다. 중복 scheduler가 같은 회차를 실행해도 처리 기록과 외부 효과가 한 번만 남게 합니다. 오케스트레이터의 concurrency policy가 실행 시작을 제한해도 장애·재생으로 중복이 생길 수 있으므로 멱등성을 유지합니다. 밀린 작업을 보충할 때 정상 사용자 트래픽을 굶기지 않도록 별도 budget과 우선순위를 사용합니다.

중단·시계 변경·중복 scheduler·장기 실행·재시도를 시험합니다. 예정 시각·시작·완료·보충·건너뜀을 구분해 기록합니다. 스케줄러가 호출했다는 사실과 실제 업무 변경이 완료됐다는 것은 다릅니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • 핵심 구분: 정기 시각과 실제 실행, 미실행 보충 정책을 구분해야 합니다.
  • 선택 조건: 현지 시간 기반 cron은 일광절약시간의 누락·중복 시각을 처리해야 합니다.
  • 검증 기준: 중단·시계 변경·중복 scheduler·장기 실행·재시도를 시험합니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 정기 scheduler가 한 번 실행을 예약하면 외부 효과도 정확히 한 번이라고 한다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 날짜 경계를 계산할 때 현지 달력 하루와 24시간의 경과를 어떻게 구분하나요?
  • 옛 작업자가 소유권 만료 뒤 깨어나면 실제 저장 지점에서 어떤 세대로 쓰기를 거절하나요?
  • 처리 성공 뒤 ACK가 유실돼 다시 받은 이벤트를 원장에 한 번만 반영하려면 어떻게 하나요?

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

원리부터 공부하고 싶다면

답변을 보충하는 개념·예제·슈도코드를 읽어 보세요.

← 전체 질문 보기