LoginSignup
3
2

More than 1 year has passed since last update.

IBM Cloud Code Engine の無料利用枠を効果的に使う

Last updated at Posted at 2022-07-28

はじめに

IBM Cloud には Code Engine というフルマネージド型のサーバーレス・プラットフォームが存在します。
こちらのサービスは従量課金制にて提供されており、毎月割り当てられる無料利用枠を超過すると課金が発生します。
スクリーンショット 2022-07-28 12.02.26.png
料金体系ページより

無料利用枠にある着信要求項目は1か月あたり100,000件のHTTP要求という記載がありイメージしやすかったのですが、他項目のCPU: 10万vCPU秒/月メモリー: 1か月あたり200,000 GB秒に関しては、実際のところどれほど無料で利用できるのか具体的にイメージできなかったため少し調査してみました。

最小and最大インスタンス数: 1 / vCPU: 0.5個 / メモリ: 1GB 構成の場合

まずは、HTTP要求を受け付ける一般的なWebアプリケーションを上記構成のCode Engineに実際にデプロイして確認してみます。
デプロイするアプリとして Code Engine のサンプルアプリとしてOSS提供されている以下のアプリを採用します。
https://github.com/IBM/CodeEngine/tree/main/hello

Code Engineのアプリケーションの作成設定画面に遷移し、ソースコードからビルドする形式を選択、そしてビルド詳細の指定として下記のように入力します。
スクリーンショット 2022-07-28 12.47.18.png

今回のアプリはlisten ポートなどはデフォルトのままで動作するため、空欄のままでOKです。

あとはランタイム設定にて今回確認したい構成を指定して、
スクリーンショット 2022-07-28 12.23.23.png

最後に右カラムの作成ボタンを押下するとデプロイが開始されます。
スクリーンショット 2022-07-28 12.25.57.png

少し待つとデプロイが完了し、右上にあるアプリケーションのテストボタンから作成されたエンドポイントに対してHTTPリクエストを送ることができます。
スクリーンショット 2022-07-28 12.54.58.png

無事にデプロイできていそうです。お手軽で良いですね。
スクリーンショット 2022-07-28 12.55.40.png

今回デプロイしたアプリケーションのOverviewページを見てみると、下記のように表示されています。
スクリーンショット 2022-07-28 12.57.01.png

これはつまり、今回のアプリケーション作成時に設定した通り、最小インスタンス数として指定した1インスタンスが起動中、インスタンスが起動しているのでvCPUを0.5個使用中、メモリを1GB使用中、ということを表しています。
最大インスタンス数も最小と同様に1を指定しているため、このアプリは基本的にはこの状態を維持することになるのかなと思います。

これであればvCPU/メモリの使用量をシンプルに計算できそうです。

e.g. 上記構成における1日の使用量

  • vCPU
    • 1(インスタンス) * 0.5(vCPU) * 60(秒) * 60(分) * 24(時間) = 43200(vCPU秒)
  • メモリ
    • 1(インスタンス) * 1(GB) * 60(秒) * 60(分) * 24(時間) = 86400(GB秒)

(実際にはアプリケーションのビルド時にもvCPU/メモリは使用されますが、それらはアプリケーション作成時に設定したランタイム設定とは別枠にて計算されます。今回はまずシンプルに概算したいため上記計算には含めていません。ビルド時の価格設定に関しての詳細はこちらをご確認ください。)

では、Code Engne の無料利用枠はどれほどだったかとふりかえってみると下記の通りでした。

  • vCPU
    • 100000(vCPU秒/月)
  • メモリ
    • 200000(GB秒/月)

ということで、今回の構成のままアプリを使い続けると、vCPU/メモリ共におおよそ下記の日数にて毎月割り当てられる無料利用枠を使い切ることになりそうです。

  • vCPU
    • 100000 / 43200 = 2.31481481(日)
  • メモリ
    • 200000 / 86400 = 2.31481481(日)

最小インスタンス数: 0 / vCPU: 0.5個 / メモリ: 1GB 構成の場合

もう少し長い期間を無料で利用できるとうれしいため、今度は最小インスタンスを0にしてみます。
最小インスタンス数以外は先程と同じ設定にして、また新たにアプリケーションをデプロイします。
スクリーンショット 2022-07-28 14.20.31.png

前回同様に少し待つとデプロイが完了し、ブラウザからエンドポイントにアクセスすることで、こちらも前回同様にHello Worldを確認できました。
今回新たにデプロイしたアプリケーションのOverviewページを見てみると、下記の表示となっており、インスタンスは起動した状態です。
スクリーンショット 2022-07-28 14.22.34.png

暫く何もしないで放置していると、インスタンス数が0になりました。
合わせてvCPU/メモリも0になり、全くそれらを使用していない、という状態です。
スクリーンショット 2022-07-28 14.31.20.png

インスタンスが一つも起動していない状態で、HTTP要求を送ってみます。今回は応答時間も確認したいため、要求の送信ボタンを押下します。
スクリーンショット 2022-07-28 14.33.50.png

すると、少し待つ必要がありますが、12107ミリ秒後にレスポンスが確認できました。
スクリーンショット 2022-07-28 14.35.01.png

起動インスタンス数も1になりました。
スクリーンショット 2022-07-28 14.35.08.png

インスタンスが起動している状態で、要求の送信ボタンを押下してみると467ミリ秒後にレスポンスが確認できました。
スクリーンショット 2022-07-28 14.38.09.png

そして、また暫く放置するとアクティブなインスタンス数は0になります。
これで、リクエストがある時間帯のみインスタンスが起動する(=リクエストが無い時間帯はvCPU/メモリを使用しない)、という構成にできました。
インスタンス未起動時に発生したリクエストへの応答は遅くなってしまいますが、稀にしか使わない、初回リクエストへのレスポンスは遅くても良い、というような要件のアプリであれば、vCPU/メモリ使用量をかなり抑えることができ、用途によっては毎月の無料利用枠のみでの運用も現実的かと思います。
(毎月の無料利用枠を超過したとしてもリーズナブルなお値段体系だと思うので、気にしすぎずカジュアルに利用していけると良さそうです)

おわりに

今回の調査によって、Code Engine の無料利用枠のボリュームがどれほどなのか、どうすると効果的に使えるのか、という点をイメージすることができました。
Code Engine は個人的にお気に入りなサービスとなりそうなので、引き続きいろんな用途で活用していきたいと思います。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2