정해진 시간에 자동 실행
매일 아침 리포트를 보내는 장치예요. 사람이 안 해도 도는 일을 만들어요. 대신 잘 돌 때는 아무 소리가 없고, 멈출 때도 아무 소리가 없어요.
쉽게 말하면
가게 간판에 다는 타이머 콘센트예요. 저녁 6시에 켜지고 새벽 1시에 꺼지게 한 번만 맞춰 두면, 그 뒤로는 사장님이 스위치를 안 눌러도 돼요. 정해진 시간에 자동 실행되는 일이 정확히 이거예요. 명령을 한 번 적어 두면 매일 그 시각에 알아서 돌아요. 그리고 타이머 콘센트의 단점도 똑같이 물려받아요. 켜졌는지 안 켜졌는지는 아무도 말해 주지 않아요.
개발자들은 이걸 크론이라고 불러요. 사장님이 이 말을 직접 쓸 일은 거의 없어요. 대신 호스팅 업체 화면에 "스케줄", "정기 실행" 같은 칸으로 보여요.
빠뜨려도 아무 일 없는 날이 대부분이에요. 문제는 바쁜 날에 빠뜨린다는 거예요. 그리고 바쁜 날이 그 일이 가장 필요한 날이에요.
빠뜨리지 않아요. 대신 세 번째 줄이 없으면 위험해요. 멈춘 걸 모르는 상태가 며칠 이어지는 게 이 방식의 유일한 사고예요.
그래서 이 문서가 계속 되풀이하는 말은 하나예요. 자동으로 도는 일은 만드는 것보다 지켜보는 것이 어렵다. 만드는 건 대개 반나절이고, 사고는 석 달 뒤에 나요.
무엇을 맡기면 좋은가
기준은 간단해요. 시각이 정해져 있고, 사람의 판단이 안 들어가고, 한 번 더 돌아도 손해가 없는 일이면 맡겨도 돼요. 세 조건 중 하나라도 빠지면 자동으로 돌리기 전에 한 번 더 생각해요.
| 맡길 일 | 보통 언제 돌리나 | 맡기기 전에 정할 것 |
|---|---|---|
| 어제 매출과 주문 요약을 메일로 | 매일 아침 영업 시작 전 | 받는 사람이 누구인지. 직원 메일이 섞이면 매출이 밖으로 나가요 |
| 재고가 기준 밑으로 내려가면 알림 | 하루 한두 번 | 기준 숫자. 이게 없으면 알림이 매일 와서 며칠 뒤부터 아무도 안 봐요 |
| 결제가 안 끝난 주문 정리 | 30분에서 한 시간 간격 | 몇 분이 지난 것을 정리할지. 손님이 결제 중인 걸 지우면 큰일이에요 |
| 오래된 임시 파일과 기록 지우기 | 새벽, 손님이 가장 적은 시간 | 정말 지워도 되는지. 지우는 일은 되돌릴 수 없어서 가장 늦게 자동화해요 |
| 백업 뜨기 | 매일 새벽 | 되살려 본 적이 있는지. 백업과 되살리기에서 연습이 끝난 다음이에요 |
| 월말 정산 자료 만들기 | 매월 1일 새벽 | 달마다 날짜가 다른 것을 어떻게 셀지. 31일이 없는 달에 안 도는 사고가 흔해요 |
돈을 움직이는 일은 마지막에 맡겨요
환불, 자동 청구, 포인트 지급처럼 돈이 오가는 일은 두 번 돌면 두 배가 나가요. 자동으로 돌리려면 "이미 처리한 건은 건너뛴다"는 장치가 먼저 있어야 해요. 그 장치 없이 시각만 맞춰 두는 건 자동화가 아니라 시간 초과와 재시도에서 말하는 중복 사고를 예약해 두는 거예요.
어디서 도는가
자동으로 도는 일에는 시계를 보고 있는 컴퓨터 한 대가 필요해요. 사장님 노트북은 그 자리가 못 돼요. 닫으면 멈추니까요. 그래서 이 일은 항상 켜져 있는 서버 위에 얹혀요.
| 도는 자리 | 어떤 모습으로 보이나 | 알아 둘 것 |
|---|---|---|
| 호스팅 업체의 스케줄 기능 | 관리 화면에 시각과 실행할 주소를 넣는 칸이 있어요 | 가장 흔한 방식이에요. 호스팅 요금제에 따라 최소 간격이 정해져 있어요 |
| 서버 안의 크론 설정 | 화면이 없어요. 개발자가 서버에 접속해서 한 줄 적어요 | 사장님이 볼 수 없는 자리라, 무엇이 몇 시에 도는지 목록을 따로 받아 두세요 |
| 바깥에서 시각 맞춰 두드려 주는 서비스 | 정해진 시각에 내 주소를 한 번 불러 줘요 | 간단한 대신 그 주소를 아무나 부르면 곤란해요. 열쇠말을 붙여 막아요 |
| 대기열에 넣어 두고 순서대로 | 오래 걸리는 일을 뒤로 빼서 하나씩 처리해요 | 메일 수천 통처럼 긴 일에 써요. 시각 맞추기와는 다른 물건이에요 |
- 1무엇을 몇 시에 할지 한 문장으로 적어요. "매일 아침 8시에 어제 주문 요약을 사장 메일로" 정도면 충분해요.
- 2그 일을 손으로 한 번 돌려 봐요. 자동으로 걸기 전에 사람이 눌러서 결과가 맞는지 봐요. 여기서 틀리면 자동으로 걸어도 매일 틀려요.
- 3시각을 어느 나라 시계로 셀지 정해요. 서버 시계가 한국 시각이 아닌 경우가 많아요. 시간대와 날짜 처리를 같이 봐요.
- 4실패했을 때 누구에게 알릴지 정해요. 이 줄이 이 목록에서 가장 중요해요. 성공 알림은 없어도 되고 실패 알림은 반드시 있어야 해요.
- 5손님이 가장 적은 시간에 걸어요. 무거운 일이 낮에 돌면 손님 화면이 같이 느려져요.
- 6일주일 뒤에 한 번 확인해요. 걸어 둔 날은 다들 보지만, 조용히 멈추는 건 대개 그다음 주예요.
무료 요금제에서는 안 도는 경우가 있어요
손님이 없을 때 서버를 재우는 요금제가 있어요. 그러면 자는 동안 정해진 시각이 지나가고, 아침에 아무 일도 안 일어난 채 하루가 시작돼요. 자동 실행을 붙일 계획이면 그 요금제가 스케줄을 지원하는지 먼저 확인하세요.
이 일이 실패하는 방식
이 주제의 사고는 빨간 글씨로 안 와요. 아무 일도 안 일어나는 모습으로 와요. 그래서 증상을 미리 외워 두는 게 대응의 절반이에요.
| 보이는 증상 | 실제로 벌어진 일 | 지금 할 일 |
|---|---|---|
| 며칠째 아침 메일이 안 와요 | 일은 돌았는데 메일이 스팸함에 가거나 발송이 막혔어요 | 먼저 스팸함을 봐요. 비어 있으면 메일 보내기 쪽 문제예요 |
| 어제부터 아무것도 안 돌아요 | 코드를 새로 올리면서 스케줄 설정이 같이 지워졌어요 | 배포한 사람에게 스케줄 목록이 그대로인지 물어요. 배포마다 확인 대상이에요 |
| 9시에 도는 일이 밤 12시에 돌았어요 | 서버 시계가 다른 나라 기준이었어요 | 시각 기준을 한국으로 바꾸거나, 그 차이만큼 어긋나게 적어 둬요 |
| 같은 안내 문자가 손님에게 두 번 갔어요 | 이전 실행이 안 끝났는데 다음 실행이 시작돼 겹쳤어요 | 겹치지 않게 잠그거나 간격을 늘려요. 보낸 기록을 먼저 보고 건너뛰게 고쳐요 |
| 월말 집계만 안 나왔어요 | 그날 일이 도중에 끊겼어요. 오래 걸리는 일에 실행 시간 한계가 있어요 | 오류 기록에서 그 시각을 봐요. 일을 잘게 쪼개는 쪽이 답인 경우가 많아요 |
| 새벽에 손님 화면이 느렸다는 말 | 무거운 일이 손님 요청과 같은 자리에서 돌았어요 | 시각을 옮기거나, 한 번에 처리하는 양을 줄여요 |
장면 1 · 외주 개발자가 작업을 마치며 말했다
“매일 새벽 3시에 백업 도는 걸로 걸어 뒀습니다.”
여기서 물을 건 두 가지예요. "실패하면 누구에게 알림이 오나요." 그리고 "그 백업으로 한 번 되살려 봤나요." 알림이 없으면 멈춘 걸 몇 달 뒤에 알게 되고, 되살려 본 적이 없으면 그건 아직 백업이 아니라 파일이에요. 두 답을 받아 적어 두면 이 자동화는 값을 해요.
확인해 보세요
매일 아침 8시에 어제 주문 요약 메일을 자동으로 받기로 했어요. 걸기 전에 가장 먼저 정해야 하는 건?
맡기거나 만들 때 쓰는 문장
직접 만들든 남에게 맡기든 필요한 말은 같아요. 전문어를 몰라도 돼요. 왼쪽에서 내 상황을 찾아 오른쪽을 그대로 보내세요.
| 내 상황 | 그대로 보낼 문장 |
|---|---|
| 매일 아침 요약을 받고 싶어요 | "매일 한국 시각 아침 8시에 어제 주문 요약을 제 메일로 보내 주세요. 주문이 0건인 날에도 0건이라고 보내 주세요." |
| 멈추면 알고 싶어요 | "이 작업이 실패하면 제 메일로 알림이 오게 해 주세요. 성공할 때는 안 보내도 됩니다." |
| 두 번 도는 게 무서워요 | "이미 처리한 건은 건너뛰게 만들어 주세요. 같은 안내가 두 번 나가면 안 됩니다." |
| 무엇이 걸려 있는지 알고 싶어요 | "지금 자동으로 도는 작업 목록을 시각과 함께 한 장으로 정리해 주세요." |
| 시각이 자꾸 어긋나요 | "기준 시계를 한국 시각으로 맞춰 주세요. 서버 시계가 무엇인지도 알려 주세요." |
| 일이 너무 오래 걸려요 | "한 번에 다 하지 말고 나눠서 처리하게 바꿔 주세요. 중간에 끊겨도 다음 실행이 이어받게요." |
| 새벽 일이 손님 화면을 느리게 해요 | "이 작업이 손님 요청과 같이 몰리지 않게 시간과 처리량을 조정해 주세요." |
직접 해보기
두 번째 줄부터 붙여 보세요
일곱 줄 중 하나만 쓴다면 두 번째 줄이에요. "실패하면 제 메일로 알림이 오게 해 주세요." 이 한 줄이 자동화를 안심하고 늘릴 수 있는 물건으로 바꿔요. 스튜디오에서 만드는 중인 것이 있으면 그 자리에 그대로 붙여 보세요.
스튜디오에서 적어 보기자주 묻는 것
- Q. 1분마다 도는 것도 되나요?
- 되는 곳도 있고 최소 간격이 정해진 곳도 있어요. 다만 짧게 돌수록 겹칠 확률이 올라가요. 1분마다 도는 일이 1분 넘게 걸리면 앞의 것이 안 끝난 채 다음이 시작돼요. 짧게 돌리기 전에 그 일이 몇 초 걸리는지부터 재요.
- Q. 웹훅과 뭐가 다른가요?
- 부르는 쪽이 달라요. 자동 실행은 내 시계가 시작해요. 웹훅은 저쪽에서 일이 생겼을 때 저쪽이 나를 불러요. 결제 완료처럼 언제 올지 모르는 일은 웹훅이고, 매일 아침처럼 시각이 정해진 일은 자동 실행이에요.
- Q. 잘 돌고 있는지 어떻게 확인하나요?
- 실패 알림 하나면 대부분 잡혀요. 다만 알림 자체가 안 가는 사고가 있어서, 한 달에 한 번은 결과물을 눈으로 봐요. 백업 파일 날짜, 메일 도착 날짜 같은 것이면 충분해요. 사이트 감시까지 붙이면 더 든든해요.
- Q. 서버 없이 만든 사이트에도 붙일 수 있나요?
- 붙일 수 있어요. 요청이 올 때만 잠깐 도는 방식에서도 정해진 시각에 대신 두드려 주는 기능을 대부분 제공해요. 대신 한 번에 오래 도는 일은 중간에 끊길 수 있어서, 일을 잘게 나누는 설계가 같이 필요해요.
- Q. 새로 배포하면 걸어 둔 게 사라지나요?
- 자리에 따라 달라요. 설정 파일에 적어 두는 방식이면 배포와 함께 유지되고, 서버에 손으로 적어 둔 방식이면 서버를 새로 만들 때 같이 사라져요. 그래서 무엇이 어디에 적혀 있는지 목록을 한 장 받아 두는 게 좋아요.
- Q. 손님이 아주 적은데 지금 필요한가요?
- 대부분 아직 아니에요. 하루 주문이 몇 건이면 아침에 직접 보는 편이 빠르고 정확해요. 필요해지는 순간은 정해져 있어요. 빠뜨리면 손해가 나는 일이 생겼을 때예요. 재입고 알림이나 결제 미완료 정리가 그런 일이에요.
더 깊이 (안 읽어도 괜찮아요)
왜 겹침이 사고의 절반인가 · 자동 실행은 앞의 실행이 끝났는지 확인하지 않아요. 시각이 되면 그냥 시작해요. 평소 10초 걸리던 일이 자료가 늘어 3분이 되면, 1분 간격으로 걸어 둔 일은 어느 순간 세 개가 동시에 돌아요. 같은 손님에게 문자가 세 번 가고, 같은 줄을 세 번 고쳐요. 그래서 짧은 간격으로 도는 일에는 "돌고 있으면 이번 차례는 건너뛴다"는 잠금이 붙어요. 간격을 정할 때는 평소 걸리는 시간이 아니라 가장 오래 걸렸던 날을 기준으로 봐요.
시각이 어긋나는 진짜 이유 · 서버 시계는 세계 표준시로 맞춰 두는 경우가 많아요. 한국 시각과 아홉 시간 차이가 나요. 아침 8시로 적었는데 저녁에 도는 사고의 대부분이 이거예요. 여기에 한 겹이 더 있어요. 서머타임을 쓰는 나라 기준으로 맞춰 두면 일 년에 두 번 실행 시각이 한 시간 움직여요. 한국은 서머타임이 없어서 기준을 한국 시각으로 잡아 두면 이 문제가 통째로 사라져요.
실패했을 때 다시 시도해야 하나 · 일의 성격에 달렸어요. 요약 메일처럼 한 번 걸러도 되는 일은 다시 시도하지 않아도 돼요. 다음 날 오면 되니까요. 반면 정산 자료 만들기처럼 그날 안 하면 안 되는 일은 다시 시도가 필요해요. 다만 다시 시도를 붙이는 순간 중복 처리 위험이 같이 들어와요. 그래서 순서가 정해져 있어요. 먼저 "이미 한 건은 건너뛴다"를 만들고, 그다음에 다시 시도를 켜요. 순서를 바꾸면 손님에게 안내가 두 번 가요.
목록 한 장이 인수인계의 절반이다 · 자동으로 도는 일은 화면에 안 보여서 만든 사람 머릿속에만 남기 쉬워요. 담당이 바뀌면 무엇이 도는지 아무도 몰라요. 그래서 표 한 장을 남겨요. 무엇을, 몇 시에, 어디서, 실패하면 누구에게. 네 칸이면 충분하고, 이 표가 있으면 사고 났을 때 볼 곳을 바로 찾아요.
하나 더
1분마다 도는 알림 작업을 걸었는데, 자료가 늘면서 한 번 도는 데 3분이 걸리게 됐어요. 가장 먼저 생길 일은?
이것만 기억하세요
- ·정해진 시각에 도는 일은 시계를 보고 있는 컴퓨터 한 대가 필요해요. 사장님 노트북은 그 자리가 못 돼요
- ·맡겨도 되는 일은 시각이 정해져 있고, 판단이 안 들어가고, 한 번 더 돌아도 손해가 없는 일이에요
- ·실패 알림 한 줄이 이 주제의 절반이에요. 성공 알림은 없어도 되고 실패 알림은 반드시 있어야 해요
- ·시각이 어긋나면 서버 시계부터 봐요. 기준을 한국 시각으로 잡아 두면 대부분 해결돼요
- ·무엇이 몇 시에 어디서 도는지 표 한 장을 남겨요. 담당이 바뀔 때 이 표가 사고를 막아요