"코드도 다 짰고, 슬랙으로도 잘 와요. 근데 매일 아침 9시에 컴퓨터 켜서 실행 버튼 누르는 게 귀찮아요. 까먹고 늦잠 자면 뉴스 못 받는 거잖아요?"

맞아요. 내가 직접 실행 버튼을 눌러야 한다면 그건 반쪽짜리 자동화입니다. 진짜 자동화는 내 컴퓨터가 꺼져 있어도, 내가 여행을 가도 알아서 돌아가는 것이죠.

그러려면 내 코드를 **늘 켜져 있는 컴퓨터(서버)**로 옮겨야 해요. "서버를 사야 하나요?" 아니요! 우리에겐 GitHub Actions라는 공짜 클라우드 컴퓨터가 있거든요.


이 글을 읽고 나면

  • 내 컴퓨터가 꺼져 있어도 코드가 돌아가게 할 수 있어요.
  • GitHub Actions가 뭔지 이해할 수 있어요.
  • 크론(Cron) 시계를 맞춰서 "매일 아침 9시에 실행해"라고 명령할 수 있어요.

1. GitHub Actions: 깃허브가 빌려주는 컴퓨터

우리가 git push로 코드를 올리는 저장소(GitHub) 있죠? 거기엔 단순히 코드 저장 기능만 있는 게 아니에요.

"네가 원하면 내 컴퓨터(서버)를 잠깐 빌려줄게. 거기서 코드 실행해도 돼." 라는 기능이 숨어있어요. 이게 바로 GitHub Actions예요.

우리는 이 컴퓨터한테 **작업 지시서(Workflow)**를 딱 한 장 써주면 됩니다. "매일 아침 9시에, 내 코드를 다운받아서, node index.js를 실행해줘."

GitHub Actions 작동 원리


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)**에 비밀번호를 따로 저장하는 금고가 있어요."


[따라 해보세요]

  1. GitHub 저장소 상단 메뉴의 Settings 클릭
  2. 왼쪽 메뉴에서 Secrets and variablesActions 클릭
  3. New repository secret 초록색 버튼 클릭
  4. Name: SLACK_WEBHOOK_URL (AI가 코드에 쓴 이름과 똑같이!)
  5. Secret: https://hooks.slack.com/... (내 진짜 주소 붙여넣기)
  6. 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를 쓰면 내 컴퓨터를 켜둬야 하나요?

정답 보기
  1. 05시 (아침 5시)
  2. 절대 안 됨 / 해킹 위험 100%
  3. 아니요, 꺼도 됩니다. (MS가 대신 켜주니까요)

다음 글 예고

자동화 프로젝트, 생각보다 어렵지 않았죠? 단순 반복 업무에서 해방된 기분이 어떤가요?

이제 우리는 더 큰 세상으로 나갑니다. PART 7: 데이터 서비스 프로젝트가 기다리고 있어요.

단지 나 혼자 보는 봇이 아니라, 남들에게 보여주는 데이터 대시보드를 만들어볼 거예요. "내 지출 내역을 시각화해서 보고 싶다!" 이 욕망을 실현하기 위해 **[29편: DB 설계]**부터 다시 시작해봅시다!


이 시리즈 로드맵

PART 6: 자동화 프로젝트 (완료!) 🏆
[ 25편 ] 자동화 아이디어
[ 26편 ] 데이터 수집/정리
[ 27편 ] 슬랙 봇 만들기
[ 28편 ] 정기 실행 (Mission Complete!)

   ↓

PART 7: 데이터 서비스 📊
[ 29편 ] DB 설계 (다음 편)
   ...

자동화 봇이 처음으로 성공했을 때의 짜릿함! 댓글로 공유해주세요 🎉