Lapis Lazuli

technical blog for web developer

【AWS】ECSを検討する際に必要なこと

ちょうど機会があったので、今回はECSについて書きたいと思います。

ECSのタイプの違い

ECSは超ざっくりと言うと、EC2上でコンテナを動かしているサービスになります。
「それだったらEC2上で動かせばいいのでは?」という疑問が生まれてくるかと思いますが、その場合だと1から全て自前で構築しなければなりません。
Docker自体が落ちる可能性もあるので、監視&プロセス起動は必須になってくるかと思います。
このあたりをマネージドにしたのがECSになります。

そのECSですが、起動タイプが現状2パターンあります。
EC2タイプとFargateです。
一言で違いを書くと、コンテナを動かしているサーバーレイヤーをマネージドにするか否かの違いです。
EC2タイプはインスタンタイプを選んで、その上でコンテナを動かす形になります。
インスタンスクラスタ、コンテナをタスクとECSでは言いますが、このインスタンス部の定義がFargateは不要になります。
タスク定義ファイルにCPUやメモリなどの定義を書くだけで、そのスペックで構築してくれます。
とても便利ですね。

だったらFargateがマネージドで楽だしアプリケーション開発に専念できる!と思いますが、いくつかEC2タイプと比べてデメリットがあります。

Fargateのデメリット

まず目につくのは料金が高い事でしょうか。
時間単価が高いのでどうしてもコスト的にどうなのかという話になります。
ですが、これに関しては後述するメリットもあるので一概には言えないのではないかなと思います。
二つ目は、リザーブインスタンスを契約している場合、これが使えないという点です。
コストカットの為、リザーブインスタンスで運用している所はそこそこあるかなと思いますが、Fargateは使えません。
ここもコスト的に不利になる点ですね。
三つ目は、GPUが使えない事でしょうか。GPUコンピューティングが必要なのは機械学習だと思いますが、これも使えません。
その場合はSageMakerとか使うのがベストプラクティスなので、そちらで対応していく事になるのでしょうか。

といろいろデメリットを書きましたが、次項でメリットを。

Fargateのメリット

まず挙げられるメリットは、サーバー領域の管理が不必要になることです。
アプリケーション開発に専念したい! インフラ構築に割く時間は最小限にしたい!という場合はメリットになってきます。
二つ目は、AutoScaleが使いやすい事ですね。リソースを使用をみながら自動的にやってくれるので、この部分も任せる事が出来ます。

結論は・・・

私的にはFargateを使っていきたいなと感じています。
正直構築に時間かけたくないので、AutoScaleを含めマネージドレイヤーが多いFargateは魅力的に映ります。
今回はECSについてでした。最近はインフラばかりやっているのでAWSが多めですね。学ぶべきことがまだまだあるので頑張っていきます。