콘텐츠로 이동

작업 스케줄러

tinyauth는 만료된 토큰, 사용된 인증 코드, 이메일 인증 토큰 같은 임시 데이터를 주기적으로 정리하는 내장 스케줄러를 제공해요. 이 설정은 schedulercleanup 최상위 섹션으로 구성돼요.


config.yaml
scheduler:
enabled: true
mode: croner
cleanup_cron: '0 2 * * *'
# mode: database 를 사용할 때만 적용돼요.
poll_interval_ms: 5000
lock_ttl_ms: 60000
background_retry_delay_ms: 1000
background_max_attempts: 3
background_retention_ms: 604800000
instance_id: ''
  • scheduler.enabled: 내장 스케줄러를 활성화할지 여부예요. 기본값은 true예요.
  • scheduler.mode: 스케줄러 백엔드예요. croner는 단일 프로세스용 인메모리 스케줄러이고, database는 DB lease를 사용해 여러 인스턴스 중 하나만 작업을 획득하도록 하는 분산 스케줄러예요. 기본값은 croner예요.
  • scheduler.cleanup_cron: 내장 정리 작업 실행 주기예요. 표준 5필드 cron 형식(분 시 일 월 요일)을 사용해요. 기본값은 0 2 * * *(매일 오전 2시)예요.
  • scheduler.poll_interval_ms: database 모드에서 due job을 확인하는 주기예요. 기본값은 5000이에요.
  • scheduler.lock_ttl_ms: database 모드에서 job lease가 유효한 시간이에요. 작업이 오래 걸리면 실행 중 lease가 자동 갱신돼요. 기본값은 60000이에요.
  • scheduler.background_retry_delay_ms: database 모드에서 실패한 background job을 다시 실행하기 전 대기 시간이에요. 기본값은 1000이에요.
  • scheduler.background_max_attempts: database 모드에서 background job을 최종 실패로 표시하기 전 최대 시도 횟수예요. 기본값은 3이에요.
  • scheduler.background_retention_ms: database 모드에서 완료된 background job(succeeded/failed)을 보존하는 기간(ms)이에요. 기본값은 604800000(7일)이에요. pending/running job은 이 정리 정책으로 삭제하지 않아요.
  • scheduler.instance_id: database 모드에서 lease 소유자를 식별하는 값이에요. 비워두면 프로세스마다 고유한 값이 자동 생성돼요. 직접 지정할 경우 replica/process마다 반드시 고유해야 해요.

각 데이터 유형별로 정리 정책을 세밀하게 설정할 수 있어요.

정리 정책의 보존 기간(retention)은 다음과 같은 형식을 사용해요.

형식의미예시
"0"즉시 (보존 기간 없음)만료 즉시 삭제
"30s"30초
"30m"30분
"24h"시간24시간
"7d"7일
"1y"년 (365일)1년
cleanup:
revoked_tokens:
enabled: true
retention: '0'
  • enabled: 취소된 토큰 정리 활성화 여부예요. 기본값은 true예요.
  • retention: 토큰 만료 후 보존 기간이에요. 기본값은 "0"(만료 즉시 삭제)이에요.
cleanup:
oauth_codes:
enabled: true
consumed_retention: '24h'
  • enabled: 인증 코드 정리 활성화 여부예요. 기본값은 true예요.
  • consumed_retention: 사용된 인증 코드의 보존 기간이에요. 기본값은 "24h"예요.
cleanup:
email_verifications:
enabled: true
retention: '0'
  • enabled: 만료된 이메일 인증 토큰 정리 활성화 여부예요. 기본값은 true예요.
  • retention: 만료 후 보존 기간이에요. 기본값은 "0"이에요.
cleanup:
password_resets:
enabled: true
retention: '0'
  • enabled: 만료된 비밀번호 재설정 토큰 정리 활성화 여부예요. 기본값은 true예요.
  • retention: 만료 후 보존 기간이에요. 기본값은 "0"이에요.

대기 중인 OAuth 가입 (pending_oauth_registrations)

섹션 제목: “대기 중인 OAuth 가입 (pending_oauth_registrations)”
cleanup:
pending_oauth_registrations:
enabled: true
retention: '0'
  • enabled: 중단된 OAuth 가입 흐름 정리 활성화 여부예요. 기본값은 true예요.
  • retention: 만료 후 보존 기간이에요. 기본값은 "0"이에요.

  • account_deletion.enabled: 사용자가 스스로 계정 삭제를 요청할 수 있는지 결정해요.
  • account_deletion.retention: 삭제 요청 후 실제 영구 삭제까지의 유예 기간이에요. tinyauth cleanup이 실행될 때 이 정책이 적용돼요.
  • tokens.key_rotation.*: JWT 키 순환 정책이에요. 정리 작업과 같은 유지보수 시점에 함께 반영돼요.

config.yaml
tokens:
key_rotation:
enabled: true
interval_days: 30
overlap_days: 7
account_deletion:
enabled: true
retention: 30d
scheduler:
enabled: true
mode: croner
cleanup_cron: '0 2 * * *'
cleanup:
revoked_tokens:
enabled: true
retention: '0'
oauth_codes:
enabled: true
consumed_retention: '24h'
email_verifications:
enabled: true
retention: '0'
password_resets:
enabled: true
retention: '0'
pending_oauth_registrations:
enabled: true
retention: '0'

스케줄러와 별개로, CLI를 통해 수동으로 정리 작업을 실행할 수도 있어요.

Terminal window
# 정리 작업 실행
tinyauth cleanup
# 실제 삭제 없이 대상만 확인 (드라이 런)
tinyauth cleanup --dry-run
# 상세 진행 상황 출력
tinyauth cleanup --verbose
# 커스텀 설정 파일 사용
tinyauth cleanup -c /path/to/config.yaml