파이썬 자동화 봇 24시간 돌리기 (무료 클라우드 호스팅)
지난 스케줄링 편에서 "매일 9시에 자동 실행"되는 봇을 만들었잖아요. 뿌듯하셨을 텐데, 조금 지나면 이상한 찜찜함이 올라옵니다.
이 봇, 결국 내 노트북이 켜져 있어야만 돌거든요.
노트북을 닫거나, 밤새 켜뒀는데 윈도우가 자동 업데이트로 재부팅해버리면? 그 순간 봇도 같이 멈춰요. 봇 하나 때문에 24시간 컴퓨터를 켜두는 것도 전기세에 발열에 부담스럽고요.
그래서 이번엔 그 찜찜함을 없애볼 거예요. 내 컴퓨터를 완전히 꺼도 봇이 알아서 도는 진짜 24시간 자동화요.
무료 클라우드, 사실 별거 아니에요
"서버에 배포한다"는 말, 처음 들으면 뭔가 거창해 보이죠. 핵심만 딱 말씀드릴게요.
클라우드는 그냥 24시간 켜져 있는 남의 컴퓨터를 빌리는 거예요.
저 멀리 데이터센터에 늘 깨어 있는 컴퓨터가 있고, 그 한 조각을 회원가입만으로 빌려 쓰는 거죠. 쉽게 비유해볼게요. 내 집(노트북)은 밤엔 불 끄고 자야 하잖아요. 근데 24시간 운영하는 공유 오피스에 책상 하나를 빌려두면, 내가 잠든 사이에도 그 책상 위에선 일이 돌아가요. 내 컴퓨터를 꺼도 봇이 도는 이유가 이거예요. 그럼 "배포"란 내 노트북 코드를 그 빌린 책상으로 이사시키는 것뿐이에요.
어디에 올리나요
무료로 시작할 곳은 여럿인데, 저는 딱 하나 추천해요. PythonAnywhere요.
초보자한테 제일 친절해요. 웹 브라우저 안에서 모든 걸 처리하거든요. 별도 설치 없이 로그인해서 코드 올리고, 터미널 쓰고, 예약까지 한 곳에서 다 돼요. 무료 계정도 있고요. Railway나 Render도 있지만 git 연동이 필요해 초보한텐 살짝 어려워요. 처음엔 그냥 PythonAnywhere로 시작하세요.
자동화 봇 배포의 큰 흐름 4단계
플랫폼이 뭐든 배포는 똑같은 4단계예요. 이 틀만 기억해두시면 돼요.
- 코드 올리기 — 내 파이썬 파일을 서버로 옮겨요. PythonAnywhere는 웹에서 드래그로 올리면 끝이에요.
- 라이브러리 설치 — 내 코드가 쓰는 라이브러리를 서버에도 깔아요.
- 실행 / 스케줄 등록 — 한 번만 돌릴 거면 그냥 실행하고, "매일 자동으로"면 예약을 걸어요.
- 로그 확인 — 잘 도는지, 에러는 없는지 봐요.
처음 한 번이 어렵지, 두 번째부터는 금방이에요.
이삿짐 목록, requirements.txt
2단계 라이브러리 설치, 여기서 초보자가 제일 많이 막히시거든요.
내 컴퓨터엔 그동안 pip install로 이것저것 깔아뒀지만, 서버는 텅 빈 새 컴퓨터예요. 내가 뭘 썼는지 알려줘야 서버가 똑같이 설치해줘요. 이사할 때 "가구 목록" 적어가는 거랑 똑같은 거죠. 그 목록 만드는 건 한 줄이면 돼요.
# 내 프로젝트 폴더에서, 지금 깔린 라이브러리 목록을 파일로 뽑기
pip freeze > requirements.txt
이러면 requirements.txt 파일이 생기고, 안엔 이런 게 들어 있어요.
requests==2.31.0
beautifulsoup4==4.12.2
openpyxl==3.1.2
이 파일을 코드랑 같이 올리고, 서버 터미널에서 이 한 줄만 치면 목록대로 한 번에 깔려요.
# 서버 콘솔에서: 목록대로 라이브러리 한 번에 설치
pip install -r requirements.txt
비밀값은 코드에 적지 마세요
전에 API 키를 .env 파일에 담아 관리했던 거 기억나시죠. 그런데 내 컴퓨터의 .env를 그대로 서버에 올리는 건 하지 마세요. 특히 git 공개 저장소에 올라가면 봇들이 몇 분 만에 키를 긁어가 과금 폭탄이 날아와요.
클라우드에선 대신 환경변수를 써요. 플랫폼 설정 화면에 OPENAI_API_KEY = sk-... 이렇게 등록해두면, 코드에선 똑같이 읽어와요.
import os
# 코드엔 키를 적지 않고, 서버에 등록해둔 환경변수 값을 읽어옴
api_key = os.environ.get("OPENAI_API_KEY")
사무실 금고 비밀번호를 서류(코드)에 적어 다니지 않고, 금고 관리대장에 따로 등록해두는 거랑 같아요. 서류를 잃어버려도 비밀번호는 안 새어나가죠. 값 넣는 장소만 로컬에선 .env, 서버에선 환경변수로 바뀔 뿐이에요.
무료 티어의 한계, 솔직히 말할게요
무료가 다 되는 건 아니에요. 이걸 미리 알면 나중에 덜 당황하시거든요.
무료는 하루에 쓸 수 있는 계산 시간이 정해져 있어요. 가벼운 봇엔 충분한데 무거운 걸 계속 돌리면 부족하고요. 그리고 대부분 "24시간 계속 떠 있는 프로그램"은 제한하고, 대신 정해진 시각에 잠깐 실행되는 예약 작업(스케줄 태스크)은 허용해요.
그래서 팁이 하나 있어요. 지난 편처럼 "1분마다 무한 루프"로 돌리는 것보다, "매일 9시에 한 번 실행"하는 스케줄 태스크가 무료 티어랑 궁합이 훨씬 좋아요. 참, 서버가 해외에 있으면 시간대가 달라요(보통 UTC라 한국보다 9시간 느려요). "9시" 걸었는데 엉뚱한 시각에 돌면 십중팔구 이거니 확인하세요.
서버에선 로그가 유일한 눈이에요
배포하면 거의 반드시 만나는 상황이 있어요. "내 컴퓨터에선 잘 됐는데 서버에선 안 돼요."
원인은 대개 셋 중 하나예요. 라이브러리를 서버에 안 깔았거나(requirements.txt 빠뜨림), 코드에 C:\Users\... 같은 내 컴퓨터 전용 경로를 박았거나, 환경변수 설정을 빼먹었거나.
문제는 서버엔 화면이 없다는 거예요. 실행 과정을 눈으로 볼 수 없죠. 그래서 지난 편에서 배운 로깅이 진가를 발휘해요. bot.log 같은 로그 파일이 서버에선 유일한 눈이거든요. 로그를 열어 "어디까지 돌다가 멈췄는지"만 봐도 원인이 거의 보여요.
오늘의 실습
지금까지 만든 봇 중 제일 간단한 하나를 골라 PythonAnywhere에 올려보세요. "현재 시각을 로그에 남기는 5줄짜리 봇"이어도 좋아요.
목록 만들고, 올리고, 콘솔에서 한 번 성공시키고, 스케줄 태스크로 "매일 정해진 시각 실행"을 걸어두세요. 그다음이 진짜 중요해요. 내 컴퓨터를 완전히 끄고, 다음 날 봇이 돌았는지 확인해보세요. 그 순간이 바로 "진짜 24시간 자동화"를 체감하는 지점이에요.
이제 내 컴퓨터를 꺼도 봇이 도는 무대를 차렸잖아요. 다음 편에서는 그 무대에 올릴 진짜 쓸모 있는 봇을 처음부터 만들어볼 거예요. 매일 환율이랑 주식 시세를 모아 슬랙으로 딱 알려주는 봇이요. 무대는 차렸으니, 이제 주인공을 올릴 차례예요.
제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀
'Application > Python' 카테고리의 다른 글
| [Python] 25. 파이썬 Pillow로 이미지 일괄 처리하기 (리사이즈와 워터마크) (0) | 2026.08.14 |
|---|---|
| [Python] 24. 파이썬 로깅과 에러 알림: 봇이 죽지 않게 지키기 (0) | 2026.08.13 |
| [Python] 23. 파이썬 스케줄링: schedule 모듈로 정기 실행하기 (0) | 2026.08.10 |
| [Python] 22. 파이썬으로 AI 문서 요약과 번역 봇 만들기 - 긴 문서도 통째로 (0) | 2026.08.07 |
| [Python] 21. 파이썬으로 ChatGPT API 호출하기 - AI에게 텍스트 처리 자동으로 시키기 (0) | 2026.08.04 |