들어가며
무료로 사용 가능한 호스팅 서비스인 Railway 와 Discord.py 를 사용한 Discord Bot 의 구축과 운용에 관해 정리해보았습니다.
2023/09/17 추가 기록
Railway의 호스팅 서비스가 유료화되었습니다. 내용은 이하 사이트를 참고해주세요. 스펙이 좋아서 어디로 갈아탈지 고민중입니다. 개인적으로는 5달러를 계속 지불할 용의도 있습니다.
Railway 란
Railway 란, 클라우드 베이스로 어플리케이션의 디플로이가 가능한 플랫폼입니다. 말하자면 PaaS(platform as a Service) 라고 불리는 서비스로 분류됩니다. 대단히 심플한 UI 에다가 GitHub 연동이 가능하여 쉽게 디플로이가 됩니다. 또한, 여러 언어를 사용 가능하며, 소규모 프로젝트부터 대규모 프로젝트까지 대응하고 있습니다. 데이터베이스는 postgreSQL, MY SQL, Redis, MongoDB 4 가지를 제공합니다. 서버가 있는 장소는 US-West 지만 공식의 FAQ에도 나와있듯 조만간 추가될 예정이라고 하군요.
Do you have a EU/APAC region?
Not yet but it's coming soon! Our servers are located in GCP's US-West.
요금체계는 월 5 달러분이 무료이고 이후에는 쓴 만큼 요금이 청구됩니다. 디스코드 봇을 운용하는 정도라면 무료분으로 충분할겁니다. 더해서 디플로이한 어플리케이션이 sleep 되는 경우는 없고 24/7로 호스팅할 수 있다고 명시되어있습니다.
No, Railway applications do not sleep unlike other platforms. If you need to have 24/7 hosting, you can attach a card and unlock the Developer Plan.
환경
- Raspberry Pi 4 Model B
- CentOS Stream 8
- Python 3.11.0
- discord.py 2.1.1
- Python 3.11.0
- CentOS Stream 8
- Railway
도입부
Bot 계정 만들기
Discord Developer Portal 에서 Bot 계정을 만듭니다. 상세한 순서에 관해서는 이미 정리해둔 포스팅이 있으니 생략하겠습니다. 이하의 포스팅을 참고해주세요. 봇을 구동하기 위해서는 액세스 토큰이 필요합니다. 어디 잘 적어서 보관해둡시다.
Railway 계정만들기
Railway 에 접속해서 우상단의 로그인을 눌러 계정을 만듭니다.
등록을 하려면 이메일 주소로 등록하는 방법과 github 연동으로 등록하는 것 2가지가 있습니다. Github 계정을 갖고 있는 분은 github로 연동하는 편이 편하고 좋겠죠. 물론 이메일 주소로 등록해도 별 상관 없습니다. 그런데, 이메일주소로 등록하고 로그인할 때 일일이 메일로 인증할 필요가 있기는 합니다. 귀찮으니까 github 연동을 추천하는 바입니다. (Github계정이 없는 분은, 이 기회에 만들어보시는 게 어떨까요?)
[GitHub]를 선택하면, Railway App by Railway would like permission to:라고 뜰 텐데 [Authorize Railway App] 을 선택합니다. 계정이 생성되었으면 Your account needs to agree to the Terms of Service.Please agree to the new terms to keep on using Railway 라는 이용약관에 동의하라고 하니 해줍시다.
아직 이 상태로는 사용할 수 없기 때문에, 우상단에서 [Verify Account] 를 찾아 선택합니다.
이 때, 막 생성한 Github 계정이면 Your GitHub might be too new or there might be risky repos on your account that means you can't verify with your GitHub. 라는 경고글이 뜰 겁니다. 디스코드 커뮤니티에 질문해 본 결과, 1년 정도 경과한 Github 계정이 아니면 인증이 안되는 것 같습니다. 대신 크레딧카드를 등록하는 걸로 인증하는 방법이 있습니다. 이 방법으로는 1달러 충전하고, 1달러 환불받는 처리 순서를 거쳐야 하지만 저의 경우에는 아무리 기다려도 딱히 요금 청구가 되지 않았습니다. 또한 최종적으로 24/7로 봇을 구동시키려는 경우에 크레딧카드 등록이 필요하니 해둬도 문제는 없습니다.
ㅇ2023/04/12 추가
크레딧카드로 결제해서 인증하는 방법이 없어진 것 같습니다. 이 인증 절차를 생략하고 그대로 " Remove Resource Limits를 선택해주세요.
신용카드 번호를 입력하고 페이지를 갱신한 뒤 밑의 화면처럼 표시되면 문제가 없습니다. 이 때 크레딧카드의 인증이 잘 되지 않는 경우가 있었는데 날이 지나니까 인증이 정상적으로 완료되었습니다. 안되면 날짜를 바꿔서 시도해주세요.
저는 3년 방치해뒀던 github 계정이 있어서 그냥 거기에 레포지토리를 추가하는 걸로 인증했습니다. Your Account is Verified 라고 뜨면 문제 없습니다.
계정 인증이 되었으면 우상단의 Starter Plan $5.00 500Hrs 라고 표시되어 있을 겁니다. 이 플랜으로는 월 5달러, 500시간까지 이용제한이 걸려있습니다. (월초로부터 21일 경과하면 정지합니다.) 이 이용제한을 해제하기 위해 우상단의 [Remove Resource Limits] 를 선택하고 크레딧카드의 번호를 입력한 뒤 [Subscribe to Developer Plan] 을 선택합니다 (페이팔 대응하면 좋겠다)
이걸로 Developer Plan 설정 변경이 완료되었습니다. Developer Plan 의 성능은 다음과 같습니다. 비교적 고성능이 아닌가하고 개인적으로는 생각합니다.
- 최대 8GB の RAM
- 최대 8 コアの가상 CPU
- 최대 100GB の디스크 용량
- 최대 5 인의 프로젝트 멤버
- 데이터 전송량 : 아웃바운드는 100GB 까지 / 인바운드 무제한
요금체계는 다음과 같습니다. 매월 5달러분의 무료분량이 있어서 가벼운 디스코드봇의 운용이라면 무료분을 넘는 일은 없을 겁니다. 다운타임의 검증을 위해 3일간 풀로 봇을 돌려봤는데도 0.0767$ (월간 환산으로 0.8달러) 정도였으니까 부담이 없는 봇이면 10개 정도 호스트 가능할 겁니다.
<요금체계>
서비스 수 x (가동시간(분) x (메모리사용량(GB) ) + 가상CPU 사용량(코어수))
サービス数 ×(稼働時間(分)× (メモリ使用量(GB))+ 仮想 CPU 使用量(コア数))
상세 요금은 다음을 참고해주세요.
덧붙이자면 이쪽에서 월간 사용료의 견적을 보는 것도 가능합니다. 디스코드 봇의 항목으로는 월간 3달러라고 표시되는데, 이건 데이터베이스로 Postgres 와 Redis 를 이용하고 있기 때문에 높게 표시되고 있는 겁니다. 이용하지 않는다면 3달러도 들지 않습니다. 1 개월간 봇을 2개까지 돌려본 결과 0.77달러 청구됐습니다.