정해진 시간에 자동 실행

매일 아침 리포트를 보내는 장치예요. 사람이 안 해도 도는 일을 만들어요. 대신 잘 돌 때는 아무 소리가 없고, 멈출 때도 아무 소리가 없어요.

쉽게 말하면

가게 간판에 다는 타이머 콘센트예요. 저녁 6시에 켜지고 새벽 1시에 꺼지게 한 번만 맞춰 두면, 그 뒤로는 사장님이 스위치를 안 눌러도 돼요. 정해진 시간에 자동 실행되는 일이 정확히 이거예요. 명령을 한 번 적어 두면 매일 그 시각에 알아서 돌아요. 그리고 타이머 콘센트의 단점도 똑같이 물려받아요. 켜졌는지 안 켜졌는지는 아무도 말해 주지 않아요.

개발자들은 이걸 크론이라고 불러요. 사장님이 이 말을 직접 쓸 일은 거의 없어요. 대신 호스팅 업체 화면에 "스케줄", "정기 실행" 같은 칸으로 보여요.

사람이 매일 하는 방식
매일 아침 9시 · 어제 주문 엑셀로 받기 · 재고 적은 것 눈으로 훑기 · 단골에게 안내 문자

빠뜨려도 아무 일 없는 날이 대부분이에요. 문제는 바쁜 날에 빠뜨린다는 거예요. 그리고 바쁜 날이 그 일이 가장 필요한 날이에요.

맡겨 둔 방식
매일 아침 9시 자동 · 어제 주문 요약 메일 발송 · 재고 기준 미만이면 알림 · 실패하면 사장님에게 통보

빠뜨리지 않아요. 대신 세 번째 줄이 없으면 위험해요. 멈춘 걸 모르는 상태가 며칠 이어지는 게 이 방식의 유일한 사고예요.

그래서 이 문서가 계속 되풀이하는 말은 하나예요. 자동으로 도는 일은 만드는 것보다 지켜보는 것이 어렵다. 만드는 건 대개 반나절이고, 사고는 석 달 뒤에 나요.

무엇을 맡기면 좋은가

기준은 간단해요. 시각이 정해져 있고, 사람의 판단이 안 들어가고, 한 번 더 돌아도 손해가 없는 일이면 맡겨도 돼요. 세 조건 중 하나라도 빠지면 자동으로 돌리기 전에 한 번 더 생각해요.

맡길 일보통 언제 돌리나맡기기 전에 정할 것
어제 매출과 주문 요약을 메일로매일 아침 영업 시작 전받는 사람이 누구인지. 직원 메일이 섞이면 매출이 밖으로 나가요
재고가 기준 밑으로 내려가면 알림하루 한두 번기준 숫자. 이게 없으면 알림이 매일 와서 며칠 뒤부터 아무도 안 봐요
결제가 안 끝난 주문 정리30분에서 한 시간 간격몇 분이 지난 것을 정리할지. 손님이 결제 중인 걸 지우면 큰일이에요
오래된 임시 파일과 기록 지우기새벽, 손님이 가장 적은 시간정말 지워도 되는지. 지우는 일은 되돌릴 수 없어서 가장 늦게 자동화해요
백업 뜨기매일 새벽되살려 본 적이 있는지. 백업과 되살리기에서 연습이 끝난 다음이에요
월말 정산 자료 만들기매월 1일 새벽달마다 날짜가 다른 것을 어떻게 셀지. 31일이 없는 달에 안 도는 사고가 흔해요

돈을 움직이는 일은 마지막에 맡겨요

환불, 자동 청구, 포인트 지급처럼 돈이 오가는 일은 두 번 돌면 두 배가 나가요. 자동으로 돌리려면 "이미 처리한 건은 건너뛴다"는 장치가 먼저 있어야 해요. 그 장치 없이 시각만 맞춰 두는 건 자동화가 아니라 시간 초과와 재시도에서 말하는 중복 사고를 예약해 두는 거예요.

어디서 도는가

자동으로 도는 일에는 시계를 보고 있는 컴퓨터 한 대가 필요해요. 사장님 노트북은 그 자리가 못 돼요. 닫으면 멈추니까요. 그래서 이 일은 항상 켜져 있는 서버 위에 얹혀요.

도는 자리어떤 모습으로 보이나알아 둘 것
호스팅 업체의 스케줄 기능관리 화면에 시각과 실행할 주소를 넣는 칸이 있어요가장 흔한 방식이에요. 호스팅 요금제에 따라 최소 간격이 정해져 있어요
서버 안의 크론 설정화면이 없어요. 개발자가 서버에 접속해서 한 줄 적어요사장님이 볼 수 없는 자리라, 무엇이 몇 시에 도는지 목록을 따로 받아 두세요
바깥에서 시각 맞춰 두드려 주는 서비스정해진 시각에 내 주소를 한 번 불러 줘요간단한 대신 그 주소를 아무나 부르면 곤란해요. 열쇠말을 붙여 막아요
대기열에 넣어 두고 순서대로오래 걸리는 일을 뒤로 빼서 하나씩 처리해요메일 수천 통처럼 긴 일에 써요. 시각 맞추기와는 다른 물건이에요
  1. 1무엇을 몇 시에 할지 한 문장으로 적어요. "매일 아침 8시에 어제 주문 요약을 사장 메일로" 정도면 충분해요.
  2. 2그 일을 손으로 한 번 돌려 봐요. 자동으로 걸기 전에 사람이 눌러서 결과가 맞는지 봐요. 여기서 틀리면 자동으로 걸어도 매일 틀려요.
  3. 3시각을 어느 나라 시계로 셀지 정해요. 서버 시계가 한국 시각이 아닌 경우가 많아요. 시간대와 날짜 처리를 같이 봐요.
  4. 4실패했을 때 누구에게 알릴지 정해요. 이 줄이 이 목록에서 가장 중요해요. 성공 알림은 없어도 되고 실패 알림은 반드시 있어야 해요.
  5. 5손님이 가장 적은 시간에 걸어요. 무거운 일이 낮에 돌면 손님 화면이 같이 느려져요.
  6. 6일주일 뒤에 한 번 확인해요. 걸어 둔 날은 다들 보지만, 조용히 멈추는 건 대개 그다음 주예요.

무료 요금제에서는 안 도는 경우가 있어요

손님이 없을 때 서버를 재우는 요금제가 있어요. 그러면 자는 동안 정해진 시각이 지나가고, 아침에 아무 일도 안 일어난 채 하루가 시작돼요. 자동 실행을 붙일 계획이면 그 요금제가 스케줄을 지원하는지 먼저 확인하세요.

이 일이 실패하는 방식

이 주제의 사고는 빨간 글씨로 안 와요. 아무 일도 안 일어나는 모습으로 와요. 그래서 증상을 미리 외워 두는 게 대응의 절반이에요.

보이는 증상실제로 벌어진 일지금 할 일
며칠째 아침 메일이 안 와요일은 돌았는데 메일이 스팸함에 가거나 발송이 막혔어요먼저 스팸함을 봐요. 비어 있으면 메일 보내기 쪽 문제예요
어제부터 아무것도 안 돌아요코드를 새로 올리면서 스케줄 설정이 같이 지워졌어요배포한 사람에게 스케줄 목록이 그대로인지 물어요. 배포마다 확인 대상이에요
9시에 도는 일이 밤 12시에 돌았어요서버 시계가 다른 나라 기준이었어요시각 기준을 한국으로 바꾸거나, 그 차이만큼 어긋나게 적어 둬요
같은 안내 문자가 손님에게 두 번 갔어요이전 실행이 안 끝났는데 다음 실행이 시작돼 겹쳤어요겹치지 않게 잠그거나 간격을 늘려요. 보낸 기록을 먼저 보고 건너뛰게 고쳐요
월말 집계만 안 나왔어요그날 일이 도중에 끊겼어요. 오래 걸리는 일에 실행 시간 한계가 있어요오류 기록에서 그 시각을 봐요. 일을 잘게 쪼개는 쪽이 답인 경우가 많아요
새벽에 손님 화면이 느렸다는 말무거운 일이 손님 요청과 같은 자리에서 돌았어요시각을 옮기거나, 한 번에 처리하는 양을 줄여요

장면 1 · 외주 개발자가 작업을 마치며 말했다

매일 새벽 3시에 백업 도는 걸로 걸어 뒀습니다.

여기서 물을 건 두 가지예요. "실패하면 누구에게 알림이 오나요." 그리고 "그 백업으로 한 번 되살려 봤나요." 알림이 없으면 멈춘 걸 몇 달 뒤에 알게 되고, 되살려 본 적이 없으면 그건 아직 백업이 아니라 파일이에요. 두 답을 받아 적어 두면 이 자동화는 값을 해요.

확인해 보세요

매일 아침 8시에 어제 주문 요약 메일을 자동으로 받기로 했어요. 걸기 전에 가장 먼저 정해야 하는 건?

맡기거나 만들 때 쓰는 문장

직접 만들든 남에게 맡기든 필요한 말은 같아요. 전문어를 몰라도 돼요. 왼쪽에서 내 상황을 찾아 오른쪽을 그대로 보내세요.

내 상황그대로 보낼 문장
매일 아침 요약을 받고 싶어요"매일 한국 시각 아침 8시에 어제 주문 요약을 제 메일로 보내 주세요. 주문이 0건인 날에도 0건이라고 보내 주세요."
멈추면 알고 싶어요"이 작업이 실패하면 제 메일로 알림이 오게 해 주세요. 성공할 때는 안 보내도 됩니다."
두 번 도는 게 무서워요"이미 처리한 건은 건너뛰게 만들어 주세요. 같은 안내가 두 번 나가면 안 됩니다."
무엇이 걸려 있는지 알고 싶어요"지금 자동으로 도는 작업 목록을 시각과 함께 한 장으로 정리해 주세요."
시각이 자꾸 어긋나요"기준 시계를 한국 시각으로 맞춰 주세요. 서버 시계가 무엇인지도 알려 주세요."
일이 너무 오래 걸려요"한 번에 다 하지 말고 나눠서 처리하게 바꿔 주세요. 중간에 끊겨도 다음 실행이 이어받게요."
새벽 일이 손님 화면을 느리게 해요"이 작업이 손님 요청과 같이 몰리지 않게 시간과 처리량을 조정해 주세요."

직접 해보기

두 번째 줄부터 붙여 보세요

일곱 줄 중 하나만 쓴다면 두 번째 줄이에요. "실패하면 제 메일로 알림이 오게 해 주세요." 이 한 줄이 자동화를 안심하고 늘릴 수 있는 물건으로 바꿔요. 스튜디오에서 만드는 중인 것이 있으면 그 자리에 그대로 붙여 보세요.

스튜디오에서 적어 보기

자주 묻는 것

Q. 1분마다 도는 것도 되나요?
되는 곳도 있고 최소 간격이 정해진 곳도 있어요. 다만 짧게 돌수록 겹칠 확률이 올라가요. 1분마다 도는 일이 1분 넘게 걸리면 앞의 것이 안 끝난 채 다음이 시작돼요. 짧게 돌리기 전에 그 일이 몇 초 걸리는지부터 재요.
Q. 웹훅과 뭐가 다른가요?
부르는 쪽이 달라요. 자동 실행은 내 시계가 시작해요. 웹훅저쪽에서 일이 생겼을 때 저쪽이 나를 불러요. 결제 완료처럼 언제 올지 모르는 일은 웹훅이고, 매일 아침처럼 시각이 정해진 일은 자동 실행이에요.
Q. 잘 돌고 있는지 어떻게 확인하나요?
실패 알림 하나면 대부분 잡혀요. 다만 알림 자체가 안 가는 사고가 있어서, 한 달에 한 번은 결과물을 눈으로 봐요. 백업 파일 날짜, 메일 도착 날짜 같은 것이면 충분해요. 사이트 감시까지 붙이면 더 든든해요.
Q. 서버 없이 만든 사이트에도 붙일 수 있나요?
붙일 수 있어요. 요청이 올 때만 잠깐 도는 방식에서도 정해진 시각에 대신 두드려 주는 기능을 대부분 제공해요. 대신 한 번에 오래 도는 일은 중간에 끊길 수 있어서, 일을 잘게 나누는 설계가 같이 필요해요.
Q. 새로 배포하면 걸어 둔 게 사라지나요?
자리에 따라 달라요. 설정 파일에 적어 두는 방식이면 배포와 함께 유지되고, 서버에 손으로 적어 둔 방식이면 서버를 새로 만들 때 같이 사라져요. 그래서 무엇이 어디에 적혀 있는지 목록을 한 장 받아 두는 게 좋아요.
Q. 손님이 아주 적은데 지금 필요한가요?
대부분 아직 아니에요. 하루 주문이 몇 건이면 아침에 직접 보는 편이 빠르고 정확해요. 필요해지는 순간은 정해져 있어요. 빠뜨리면 손해가 나는 일이 생겼을 때예요. 재입고 알림이나 결제 미완료 정리가 그런 일이에요.

더 깊이 (안 읽어도 괜찮아요)

왜 겹침이 사고의 절반인가 · 자동 실행은 앞의 실행이 끝났는지 확인하지 않아요. 시각이 되면 그냥 시작해요. 평소 10초 걸리던 일이 자료가 늘어 3분이 되면, 1분 간격으로 걸어 둔 일은 어느 순간 세 개가 동시에 돌아요. 같은 손님에게 문자가 세 번 가고, 같은 줄을 세 번 고쳐요. 그래서 짧은 간격으로 도는 일에는 "돌고 있으면 이번 차례는 건너뛴다"는 잠금이 붙어요. 간격을 정할 때는 평소 걸리는 시간이 아니라 가장 오래 걸렸던 날을 기준으로 봐요.

시각이 어긋나는 진짜 이유 · 서버 시계는 세계 표준시로 맞춰 두는 경우가 많아요. 한국 시각과 아홉 시간 차이가 나요. 아침 8시로 적었는데 저녁에 도는 사고의 대부분이 이거예요. 여기에 한 겹이 더 있어요. 서머타임을 쓰는 나라 기준으로 맞춰 두면 일 년에 두 번 실행 시각이 한 시간 움직여요. 한국은 서머타임이 없어서 기준을 한국 시각으로 잡아 두면 이 문제가 통째로 사라져요.

실패했을 때 다시 시도해야 하나 · 일의 성격에 달렸어요. 요약 메일처럼 한 번 걸러도 되는 일은 다시 시도하지 않아도 돼요. 다음 날 오면 되니까요. 반면 정산 자료 만들기처럼 그날 안 하면 안 되는 일은 다시 시도가 필요해요. 다만 다시 시도를 붙이는 순간 중복 처리 위험이 같이 들어와요. 그래서 순서가 정해져 있어요. 먼저 "이미 한 건은 건너뛴다"를 만들고, 그다음에 다시 시도를 켜요. 순서를 바꾸면 손님에게 안내가 두 번 가요.

목록 한 장이 인수인계의 절반이다 · 자동으로 도는 일은 화면에 안 보여서 만든 사람 머릿속에만 남기 쉬워요. 담당이 바뀌면 무엇이 도는지 아무도 몰라요. 그래서 표 한 장을 남겨요. 무엇을, 몇 시에, 어디서, 실패하면 누구에게. 네 칸이면 충분하고, 이 표가 있으면 사고 났을 때 볼 곳을 바로 찾아요.

하나 더

1분마다 도는 알림 작업을 걸었는데, 자료가 늘면서 한 번 도는 데 3분이 걸리게 됐어요. 가장 먼저 생길 일은?

이것만 기억하세요

  • ·정해진 시각에 도는 일은 시계를 보고 있는 컴퓨터 한 대가 필요해요. 사장님 노트북은 그 자리가 못 돼요
  • ·맡겨도 되는 일은 시각이 정해져 있고, 판단이 안 들어가고, 한 번 더 돌아도 손해가 없는 일이에요
  • ·실패 알림 한 줄이 이 주제의 절반이에요. 성공 알림은 없어도 되고 실패 알림은 반드시 있어야 해요
  • ·시각이 어긋나면 서버 시계부터 봐요. 기준을 한국 시각으로 잡아 두면 대부분 해결돼요
  • ·무엇이 몇 시에 어디서 도는지 표 한 장을 남겨요. 담당이 바뀔 때 이 표가 사고를 막아요
VibeCampusNew build