오늘은 백엔드 작업이었다. 텔레그램 봇을 연동해서 Railway에 올라간 FastAPI에 명령을 보내고 응답을 받을 수 있게 됐다.
배포 후에 서버 상태를 확인하려면 Cloud Run 콘솔에 들어가야 한다. 로그를 보려면 GCP 로그 익스플로러를 열어야 한다. 번거롭다.
텔레그램 봇이 있으면 폰에서 /status를 보내면 된다. "서버 살아있어?", "오늘 매매일지 몇 건 작성됐어?" — 이런 질문을 개발자 도구 없이 할 수 있다.
폴링 방식이 아니라 웹훅을 썼다. Cloud Run 서버의 /telegram/webhook 엔드포인트에 텔레그램이 메시지를 POST로 보낸다. 서버가 알아서 처리하고 답장한다.
보안은 chat_id 화이트리스트로 해결했다. 환경변수 ALLOWED_CHAT_IDS에 허용된 채팅 ID를 넣으면, 모르는 사람이 봇 주소를 알아도 응답하지 않는다. 처음엔 시크릿 토큰 방식을 썼다가 더 단순한 방법으로 바꿨다.
/start — 봇 소개
/help — 명령어 목록
/status — 서버 상태 확인 (DB 연결, 환경변수 목록)
/log — 최근 에러 로그 조회
/status는 Supabase 연결이 살아있는지, 환경변수가 제대로 설정됐는지 체크해서 응답한다. 배포 직후 "잘 올라갔나?" 확인이 30초 만에 된다.
TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID 두 개를 추가했다. Cloud Run은 환경변수를 바꾸면 새 버전이 배포되는 구조라 CLI 한 줄로 해결됐다.
gcloud run services update backend \
--set-env-vars="TELEGRAM_BOT_TOKEN=...,TELEGRAM_CHAT_ID=..."
기능을 만드는 것과 운영하는 것은 다르다. 텔레그램 봇은 사용자를 위한 기능이 아니라 나를 위한 도구다. 운영 편의성이 올라가면 배포를 더 자주 할 수 있다. 더 자주 배포한다는 건 더 빠르게 개선한다는 뜻이다.
개발자 도구는 사용자에게는 보이지 않지만, 서비스 품질에 직접 영향을 준다.
이 글의 소감을 Threads에서 확인하세요.
스레드에서 보기