EC2 on ECS も捨てたものじゃないのだよ
概要
最近fargateのコンテナ起動が高速化するというSOCIを試していて、その中でEC2 on ECS との比較をした時にハっっっ!!とした事があったので記録しておく。
ちなみにSOCI?って思った方はこちらどうぞ
EC2 on ECS はコンテナが0秒起動する
たいそうな事が起きそうな目次書きですが、これ大した話ではありません。
EC2 on ECS は 0秒起動する はちょっと語弊があるかもですが、1秒以内を"0秒"と捉えて記載しています。これであれば事実です。当たり前のように起きます。
なぜそんなに早く起動するのか??
EC2インスタンス内にプル済のコンテナイメージがあるからです。
あー、まぁ考えたらそうか、な話ですね。なので認識済の方も多い話かと思います。
私はうっかりそんな事が頭から抜けてて最初は驚きました。
なのでこれは、そのインスタンス内での対象のイメージを使った2回目以降のコンテナ起動に該当する話です。
これがfargateだと毎回コンテナ起動の度にイメージをプルしてくるので、毎回数十秒はコンテナ起動の時間を要します。
SOCIの記事を見てる中でもコンテナ起動の時間の76%はイメージのダウンロードにかかっている、なんて言われています。私が体験した内容でいくと、76%どころか90%以上がコンテナイメージのダウンロードにかかってたのかな、といった印象です。
勿論コンテナイメージの作りやサイズによってはもっと時間のかかる場合もあるかと思いますが、私は400MB近いコンテナイメージが0秒起動(1秒以内)するのを複数回確認しました。(3秒台の時もありました。)
私はこれからのコンテナ起動なら基本fargateでしょう!なんて思ってましたが以下のようなユースケースが該当するならEC2 on ECS も検討してみてもいいかもしれません。
- バッチ処理など単発処理にコンテナを使う
- 速さを求める
- 処理が重たくない
- ある程度負荷の目安がついている
- 24/365で1時間に複数回発生する可能性のある処理に使う
ここまで条件がそろっていればfargateよりEC2 on ECSを使った方がパフォーマンス高く安定して高速な処理を行うインフラが用意できる事になるのかなと思います。コスト面もリザーブドインスタンスなど使えば結構安くなりますしね。
ということで以上サーバレスが叫ばれる時代ですが、EC2 on ECSも捨てたものじゃないよ、という話でした。
Discussion