ソリューション · ボット
Telegram ボット向けの VPS
ボットはアイドル時 100 MB 未満で、ほとんどの時間を待機に費やすため、マシンが制約になることはまずありません。U1-1(月額 $6.90)で 1 つのボットを問題なく稼働できます。実際に請求額を左右するのはメディアと、独自の Bot API サーバーを運用するかどうかです。どちらも計算で求められ、以下に示します。
判断の前提となる判断
Webhook かロングポーリングか
bot にドメイン、証明書、開放ポートが必要かどうかを決めるのは、プランではなくこちらです。
ロングポーリング
bot は Telegram へ外向きに接続し、更新を待ちます。ドメインも TLS 証明書も、インターネットに開放するポートも不要で、NAT の内側でも動作します。最も早く動かせる方法であり、ほとんどの bot にとって恒久的な解決策としても十分です。
Webhook
Telegram がお客様に接続します。パブリックアドレス、有効な証明書、開放ポートが必要です(ここにあるどのプランでも対応可能)。その代わりにポーリングループがなく、実際の負荷のもとでよりスケールします。移行は負荷やレイテンシーが必要とした時点で行い、それより前には不要です。
計算してみる
プランで実際に動かせるボット数
ボット数 =(RAM − オペレーティングシステムの 300 MB)÷ ボット 1 つが使用するメモリ。2 つの列は、ステートレスなコマンドボットと、ORM・スケジューラー・キャッシュを備えたボットです。
| プラン | RAM | 軽いボット | 重いボット | 転送量 | 価格 | デプロイ |
|---|---|---|---|---|---|---|
| U1-1ボット 1 つ、利用者数を問わず | 1 GB | 12 | 4 | Unmetered(計測なし) | $6.90 | デプロイ |
| C1-1-25ボット 1 つ、計測ありだが安価 | 1 GB | 12 | 4 | 1 TB | $9.90 | デプロイ |
| GL2-4複数のボット、またはデータベース付きのボット | 4 GB | 63 | 25 | Unmetered(計測なし) | $11.90 | デプロイ |
| BD-8セルフホストの Bot API サーバー | 8 GB | 131 | 52 | 32 TB | $12.90 | デプロイ |
bot のユーザー数はこの計算に含まれていません。問題にも含まれないからです。Telegram はユーザーごとに接続を開くのではなく、更新を 1 件ずつプロセスに渡します。答えを変えるのは、ご自身で保持する状態です。大きなキャッシュ、プロセス内データベース、モデルなどです。
料金を決める数値
メモリではなくメディア
平均ファイルサイズ × 1 日のメッセージ数 × 30。送受信の両方が計上されます。受信したファイルも転送量です。
| bot が扱うデータ | 100/日 | 5,000/日 | 50,000/日 |
|---|---|---|---|
| テキストのみコマンドと返信。実質的に無料です。 | < 1 GB | < 1 GB | 3 GB |
| 写真圧縮された画像の送受信。 | < 1 GB | 44 GB | 439 GB |
| ボイスメッセージと短い動画コミュニティ bot の一般的な負荷です。 | 9 GB | 439 GB | 4.3 TB |
| ドキュメントと長い動画通常のボットに対する Telegram 自身のダウンロード上限。 | 59 GB | 2.9 TB | 28.6 TB |
マシンを変える唯一の要素
公開 Bot API 上のボットは、最大 20 MB のファイルをダウンロードし、最大 50 MB をアップロードできます(当社ではなく Telegram の制限です)。ファイルがお客様のディスクに保存されることはありません。独自の Bot API サーバーを運用すると、上限は 2 GB になり、すべてのファイルがお客様のサーバーに保存されます。ここでディスクと転送量が付随的なものではなくなります。BD-8 は 100 GB の SSD と 32 TB を $12.90 で提供し、この用途に適した構成です。そうした運用をしないのであれば、その分を支払う必要はありません。
正直なところ
当社が実際に購入するなら
当社自身も Telegram bot を運用しています。これは当社ならそれを載せるマシンです。
ボット 1 つの場合
U1-1 · $6.90/月
1 コア、1 GB、15 GB SSD、転送量の計測なし。そのため、bot が予期せずメディアを扱い始めても、想定外の請求が発生することはありません。bot を Restart=always 付きで systemd の管理下に置けば、停止する原因として残るのはご自身のコードだけです。手狭になった場合、bot の移行はディレクトリとトークンをコピーするだけです。
よくある質問