티스토리 뷰

Programming

CRON / Scheduler

ipxy 2025. 4. 17. 07:32
728x90

 

 

✅ 1. CRON (크론)

📌 정의

유닉스/리눅스 계열 운영체제에서 사용되는 시간 기반 작업 스케줄러
주기적으로 반복되는 작업을 자동으로 실행하기 위해 사용

📌 동작 방식

  • 리눅스의 cron daemon이 정해진 시간에 등록된 명령을 실행
  • 설정 파일인 **crontab**을 사용하여 작업 등록

📌 Cron 표현식 예시

* * * * *   명령어
│ │ │ │ │
│ │ │ │ └── 요일 (0=일요일~6=토요일)
│ │ │ └──── 월 (1~12)
│ │ └────── 일 (1~31)
│ └──────── 시 (0~23)
└────────── 분 (0~59)

📌 예시

# 매일 자정에 스크립트 실행
0 0 * * * /home/user/backup.sh

# 매 5분마다 실행
*/5 * * * * /usr/bin/python3 /home/user/task.py

✅ 2. Scheduler (일정 실행기)

📌 정의

정해진 시간, 주기 또는 조건에 따라 작업을 실행하는 시스템 또는 기능의 총칭

📌 CRON과의 차이

  • CRON은 Unix/Linux의 기본 scheduler 도구
  • Scheduler는 보다 일반적인 개념이며, 다양한 환경에서 쓰임

📌 어디에 쓰이나?

환경  스케줄러 도구
OS cron, Windows Task Scheduler
클라우드 AWS EventBridge (구 CloudWatch Events), GCP Cloud Scheduler
Kubernetes CronJob
Java 앱 Quartz Scheduler, Spring @Scheduled
CI/CD GitHub Actions, GitLab CI에서 schedule 기능
Workflow 도구 Airflow, Argo Workflows

🔍 CRON vs 일반 Scheduler 차이점

항목 CRON  일반 Scheduler
범위 Unix/Linux 한정 범용 (앱, 클라우드, K8s 등)
표현 방식 crontab 표현식 대부분 cron 형식 + 조건
제어 방식 터미널 또는 crontab -e GUI, 코드, YAML 등 다양
반복 주기 설정 가능 가능 (더 유연한 조건 설정도 가능)
상태 추적 기본 없음 (로그 직접 남겨야 함) 상태, 이력 추적 포함 가능

🛠 실제 활용 예시들

① Kubernetes CronJob

apiVersion: batch/v1
kind: CronJob
metadata:
  name: sample-job
spec:
  schedule: "0 2 * * *"  # 매일 새벽 2시
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - name: job
              image: busybox
              command: ["sh", "-c", "echo Hello World"]
          restartPolicy: OnFailure

② Spring Boot에서 @Scheduled

@Scheduled(cron = "0 0 * * * *") // 매 정시에 실행
public void runTask() {
    System.out.println("정시 작업 실행!");
}

③ GitHub Actions 스케줄 예

on:
  schedule:
    - cron: "0 8 * * 1-5"  # 평일 오전 8시 실행

🎯 함께 알아두면 좋은 개념

개념 설명
@Scheduled(fixedDelay, fixedRate) 특정 주기로 실행하는 Spring 기능
Job Queue 예약된 작업을 큐에 넣고 워커가 처리
Retry, Backoff 실패 시 재시도 간격 설정
TimeZone 설정 국제화 서비스에서는 타임존 고려 필수
Distributed Scheduler 여러 인스턴스에서 중복 실행 방지 필요 (e.g. Quartz clustered, Redis lock 등)

📌 정리 요약

  • CRON: 리눅스 기반에서 실행되는 전통적인 시간 기반 작업 실행 도구
  • Scheduler: 시간뿐 아니라 조건/이벤트 기반으로도 실행 가능한 포괄적인 개념
  • 모든 백엔드 시스템, 배치 작업, DevOps 환경에서 기본적으로 필요하며 CI/CD, 워크플로우 자동화, 정기 백업, 데이터 수집 등 광범위한 용도에 사용됨

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함