단어가 낯설어서 사람들이 지레 겁먹는 경우가 많아요. 먼저 정리해 드릴게요. 'Cron'은 그리스어 chronos, 즉 '시간'에서 왔어요. 그게 전부예요. 크론 잡은 그냥 시간 기반 작업이에요. 컴퓨터에게 '이 시각에, 혼자서, 반복해서 실행해'라고 지시해둔 일감이죠.
스프링클러를 떠올려 보세요. 매일 새벽 6시에 직접 호스를 꺼내지 않잖아요. 한 번 타이머를 맞춰두면, 우리가 깨어있든 자고 있든, 멕시코 해변에 있든 상관없이 6시에 알아서 작동해요. 잔디는 물을 먹고, 우리는 다시 신경 쓸 필요가 없어요. 크론 잡이 소프트웨어에서 하는 일이 정확히 그거예요.
한 번 시각을 설정하면 영구히 실행돼요. 누가 시작 버튼을 누르지 않아도 되고, 자리를 지킬 필요도 없어요. 이제 클록이 주인이에요.
핵심은 이거예요. 크론 잡은 언제라는 질문에 답해요. 스케줄과 작업을 건네주면 그대로 따르죠.
- 매시 정각.
- 매일 오전 9시.
- 매주 월요일 새벽 5시, 우리가 일어나기 전.
- 매월 1일.
- 하루 종일 15분마다.
이게 우리가 이미 의존하는 자동화 절반을 조용히 돌리는 엔진이에요. 한 번 보이기 시작하면 어디서든 눈에 띄어요. 이 중 어떤 것도 사람이 시계를 지켜볼 필요가 없어요.
야간 백업. 사무실이 비는 새벽 2시, 매일 밤 데이터가 안전한 곳에 복사돼요.
월요일 보고서. 커피도 마시기 전에 이미 받은편지함에 들어와 있어요.
가격 모니터링. 15분마다 실행되다가 경쟁사가 가격을 낮추는 순간 알림을 보내요.
'구독 갱신 3일 전' 이메일. 아무도 전송 버튼을 누르지 않아도 정확한 날, 정확한 사람에게 발송돼요.
크론 잡은 인접한 개념들과 맞물릴 때 진가가 드러나요.
헤드리스(Headless) 작업은 화면도, 클릭도, 대시보드도 없이 어둠 속에서 실행되는 작업이에요. 여기에 크론 잡을 붙이면 마지막 남은 사람마저 루프에서 빠지게 돼요. 헤드리스는 누가 지켜볼 필요 없음을 의미하고, 크론은 누가 시작할 필요 없음을 의미해요. 둘을 쌓으면, 스스로 깨어나 어둠 속에서 일을 마치고 다시 잠드는 작업이 돼요. 일어난 줄도 모르는 거죠.
솔직하게 한 마디 덧붙이자면, '한 번 설정하고 잊어버려라'에는 함정이 있어요. 크론 잡은 맹목적으로 복종해요. 작업이 여전히 의미가 있든 없든 실행하거든요. 새벽 2시에 잡이 조용히 망가지면, 매일 밤 2시에 고장난 버전을 즐겁게 실행하다가 다운스트림에서 뭔가 이상해 보일 때까지 알 수가 없어요. 중요한 작업이라면 완료 시 알림을 보내거나, 특히 실패 시 알림을 보내도록 구성하는 게 좋아요. 실행된 백업도 좋지만, 실행 안 된 날 밤에 소리치는 백업이 훨씬 낫거든요.
웹훅과 헷갈리는 경우가 많으니 차이를 정리하면 이렇게 돼요.
- 웹훅은 무언가 발생했을 때 실행돼요. 주문이 들어오면 반응하는 거예요. 이벤트 기반이죠.
- 크론 잡은 클록이 말할 때 실행돼요. 오전 9시가 되면 돌아가요. 시간 기반이에요.
하나는 세상이 건드려줄 때까지 기다려요. 다른 하나는 시계를 보다가 스스로 움직이죠.
한 번 설정하고, 우리 삶을 살면 돼요.