Closed5
AWS を使って Heroku の Sleep を防ぐ構成について検討した
ピン留めされたアイテム
結論
AWS を使って Heroku のスリープを防ぐのであれば・・・
- 多少コストが掛かっても良いのであれば CloudWatch Synthetics か Route 53 ヘルスチェック
- コード実装が必要になるものの、無料で実現したいのであれば EventBridge + AWS Lambda
という感じ。
Heroku の無料プランである Free dyno で Web サーバーを動かす場合、 30 分間トラフィックが無い場合にスリープ状態になるという特性がある
アプリに Free Web dyno があり、その dyno が 30 分間 Web トラフィックを受信しない場合、その dyno は休眠状態になります。
スリープ状態になるのを防ぐためには、30分以内の間隔でアプリケーションに対して HTTP リクエストすれば良い。
これは、 Heroku の カスタムクロックプロセスや Scheduler アドオンを使うことで実現できるので、シンプルに実現するのであれば、これらを使うのがベターそう
ここからは AWS を使って同様に(可能であれば無料で)スリープを防げないかな?と思って調べたメモ
案1. CloudWatch Synthetics を使う
- Blue Print を使ってサクッと HTTP リクエストを送る監視を実現できる
- しかし、現状の無料枠は 1ヶ月あたり 100 回の実行 となっている
- 30分間隔で1ヶ月リクエストするのであれば 1,440 程度の実行が必要になるので、無料枠を超えてしまう
1 か月あたり 100 回の Canary 実行
案2. Route 53 のヘルスチェック機能を使う
- 現状無料枠が無い
案3. EventBridge + AWS Lambda
- 無料で実現できそう
- EvengBridge: AWS が発行するイベントは無料
- AWS Lambda:
- 1,000,000 件/月の無料リクエスト
- 1 か月あたり最大 320 万秒のコンピューティング時間
- ただし Lambda 関数の実装が自前で必要
このスクラップは2021/05/17にクローズされました