"코드도 다 짰고, 슬랙으로도 잘 와요. 근데 매일 아침 9시에 컴퓨터 켜서 실행 버튼 누르는 게 귀찮아요. 까먹고 늦잠 자면 뉴스 못 받는 거잖아요?"
맞아요. 내가 직접 실행 버튼을 눌러야 한다면 그건 반쪽짜리 자동화입니다. 진짜 자동화는 내 컴퓨터가 꺼져 있어도, 내가 여행을 가도 알아서 돌아가는 것이죠.
그러려면 내 코드를 **늘 켜져 있는 컴퓨터(서버)**로 옮겨야 해요. "서버를 사야 하나요?" 아니요! 우리에겐 GitHub Actions라는 공짜 클라우드 컴퓨터가 있거든요.
이 글을 읽고 나면
- 내 컴퓨터가 꺼져 있어도 코드가 돌아가게 할 수 있어요.
- GitHub Actions가 뭔지 이해할 수 있어요.
- 크론(Cron) 시계를 맞춰서 "매일 아침 9시에 실행해"라고 명령할 수 있어요.
1. GitHub Actions: 깃허브가 빌려주는 컴퓨터
우리가 git push로 코드를 올리는 저장소(GitHub) 있죠?
거기엔 단순히 코드 저장 기능만 있는 게 아니에요.
"네가 원하면 내 컴퓨터(서버)를 잠깐 빌려줄게. 거기서 코드 실행해도 돼." 라는 기능이 숨어있어요. 이게 바로 GitHub Actions예요.
우리는 이 컴퓨터한테 **작업 지시서(Workflow)**를 딱 한 장 써주면 됩니다.
"매일 아침 9시에, 내 코드를 다운받아서, node index.js를 실행해줘."

2. 작업 지시서 만들기 (Workflow)
이 지시서는 .github/workflows 폴더에 .yml 파일로 만들어요.
좀 복잡해 보이지만, AI한테 시키면 1초 만에 만들어줘요.
⏰ 크론(Cron) 시간 설정의 함정
여기서 주의할 점! GitHub 컴퓨터는 **영국 시간(UTC)**을 써요. 한국(KST)은 영국보다 9시간 아빠르죠.
- 한국 아침 9시 = 영국 밤 12시 (00)
- 한국 저녁 6시 = 영국 아침 9시 (09)
그래서 "한국 아침 9시에 실행해줘"라고 하려면, 지시서엔 **"0시 0분(UTC)에 실행해"**라고 적어야 합니다.
3. 실전: 자동화 완성하기 (상황극)
자, 이제 마지막 퍼즐을 맞춰볼까요? AI에게 시켜서 지시서를 만들고, 비밀번호(환경변수)를 등록해봅시다.
1단계: 지시서 작성 요청
🧑🏻💻 나 (팀장)
"이 프로젝트를 GitHub Actions로 매일 실행하고 싶어. 한국 시간으로 아침 9시마다 실행되게 워크플로우 파일을 만들어줘.
참고: 시간 설정할 때 UTC 변환해줘."
🤖 AI (신입사원)
"네!
.github/workflows/daily.yml파일을 만들게요. 한국 아침 9시는 UTC로 0시니까cron: '0 0 * * *'로 설정했습니다. Node.js 환경에서 의존성 설치하고 실행하는 코드입니다."
(AI가 만들어준 파일을 그대로 저장하면 됩니다!)
2단계: 비밀값 등록 (★가장 중요★)
여기서 그냥 Push 하면 에러가 납니다. 왜냐고요?
.env 파일은 GitHub에 안 올렸잖아요? (보안 때문에)
그래서 GitHub 컴퓨터는 슬랙 웹훅 주소를 모르는 상태예요.
AI한테 물어보면 이렇게 알려줄 거예요.
🧑🏻💻 나 (팀장)
"근데
.env파일은 안 올렸는데, GitHub가 환경변수를 어떻게 알아?"
🤖 AI (신입사원)
"좋은 지적입니다! 코드는 공개되지만 비밀번호는 공개되면 안 되죠. **GitHub 저장소 설정(Settings)**에 비밀번호를 따로 저장하는 금고가 있어요."
[따라 해보세요]
- GitHub 저장소 상단 메뉴의 Settings 클릭
- 왼쪽 메뉴에서 Secrets and variables → Actions 클릭
- New repository secret 초록색 버튼 클릭
- Name:
SLACK_WEBHOOK_URL(AI가 코드에 쓴 이름과 똑같이!) - Secret:
https://hooks.slack.com/...(내 진짜 주소 붙여넣기) - Add secret 버튼 클릭
이제 GitHub 컴퓨터도 우리 비밀 주소를 알게 됐어요! (하지만 사람 눈에는 안 보여요. 안전하죠?)
3단계: 배포 및 확인
이제 터미널에서 코드를 올리기만 하면 끝입니다.
git add .
git commit -m "자동화 완성"
git push
GitHub 페이지에 가서 Actions 탭을 눌러보세요. 설정한 시간이 되면 자동으로 리스트가 생기고 초록색 체크(✅)가 뜰 거예요.
4. 드디어 완성! 🎉
축하합니다! 이제 여러분의 컴퓨터가 꺼져 있어도, 여행을 가도, 잠을 자도 **여러분의 충실한 비서(봇)**는 매일 아침 9시에 일어나서 뉴스를 검색하고, 요약해서, 슬랙으로 배달해줄 거예요.
이게 바로 개발자들이 말하는 **'서버리스(Serverless) 자동화'**예요. 서버를 직접 관리하지 않으면서(less) 서버의 혜택을 누리는 거죠.
오늘의 핵심 정리
✅ GitHub Actions: 공짜로 빌려 쓰는 클라우드 컴퓨터. ✅ 시간 설정: UTC(영국 시간) 기준이라 -9시간 계산해야 한다. ✅ Secrets: 비밀번호(환경변수)는 코드가 아니라 Settings 메뉴에 저장한다.
셀프체크
□ 한국 오후 2시에 실행하려면 UTC로 몇 시로 설정해야 할까요? (힌트: 14 - 9)
□ .env 파일에 있는 비밀키를 코드에 적어서 GitHub에 올리면?
□ GitHub Actions를 쓰면 내 컴퓨터를 켜둬야 하나요?
정답 보기
- 05시 (아침 5시)
- 절대 안 됨 / 해킹 위험 100%
- 아니요, 꺼도 됩니다. (MS가 대신 켜주니까요)
다음 글 예고
자동화 프로젝트, 생각보다 어렵지 않았죠? 단순 반복 업무에서 해방된 기분이 어떤가요?
이제 우리는 더 큰 세상으로 나갑니다. PART 7: 데이터 서비스 프로젝트가 기다리고 있어요.
단지 나 혼자 보는 봇이 아니라, 남들에게 보여주는 데이터 대시보드를 만들어볼 거예요. "내 지출 내역을 시각화해서 보고 싶다!" 이 욕망을 실현하기 위해 **[29편: DB 설계]**부터 다시 시작해봅시다!
이 시리즈 로드맵
PART 6: 자동화 프로젝트 (완료!) 🏆
[ 25편 ] 자동화 아이디어
[ 26편 ] 데이터 수집/정리
[ 27편 ] 슬랙 봇 만들기
[ 28편 ] 정기 실행 (Mission Complete!)
↓
PART 7: 데이터 서비스 📊
[ 29편 ] DB 설계 (다음 편)
...
자동화 봇이 처음으로 성공했을 때의 짜릿함! 댓글로 공유해주세요 🎉