Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×...

ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js

More Decks by アキキー | Akihisa Ikeda

Other Decks in Programming

Transcript

  1. ログ 100GB / 月あたりの書き込み料金 76USD CloudWatch Logs 0.01USD 未満 S3

    Bucket CloudWatch Logs 0.76 USD / GB S3 Bucket(PUT) 0.0047 USD / 1,000 PUT ※ S3への書き込みは単純比較できないため概算 Amazon CloudWatch 料金 https://aws.amazon.com/jp/cloudwatch/pricing/ Amazon S3 料金 https://aws.amazon.com/jp/s3/pricing/
  2. ログ 100GB / 月あたりの書き込み料金 76USD CloudWatch Logs 0.01USD 未満 S3

    Bucket CloudWatch Logs 0.76 USD / GB S3 Bucket(PUT) 0.0047 USD / 1,000 PUT ※ S3への書き込みは単純比較できないため概算 コスト削減のためS3にログを書き出したい! Amazon CloudWatch 料金 https://aws.amazon.com/jp/cloudwatch/pricing/ Amazon S3 料金 https://aws.amazon.com/jp/s3/pricing/
  3. アーキテクチャの比較 ECS タスク アプリログ App コンテナ CloudWatch Logs ECS タスク

    App コンテナ エラーログ CloudWatch Logs FireLens コンテナ Data Firehose アプリログ S3 Bucket ① Logs パターン ② FireLens パターン CloudWatch Alarm Amazon ECS ログを AWS サービスまたは AWS Partner に送信する (FireLens) https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/using_firelens.html Amazon Data Firehose 料金 https://aws.amazon.com/jp/firehose/pricing/
  4. アーキテクチャの比較 ECS タスク アプリログ App コンテナ CloudWatch Logs ECS タスク

    App コンテナ エラーログ CloudWatch Logs FireLens コンテナ Data Firehose アプリログ S3 Bucket ① Logs パターン ② FireLens パターン CloudWatch Alarm 書き込み料金 Down vCPU料金 Up 書き込み料金 Up Amazon ECS ログを AWS サービスまたは AWS Partner に送信する (FireLens) https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/using_firelens.html Amazon Data Firehose 料金 https://aws.amazon.com/jp/firehose/pricing/
  5. アプリの特性 ECS タスク Fargate (2vCPU ) App Container X Node.js

    メインスレッド 1vCPU 1vCPU Node.jsのメインスレッドは1コ アまでしか同時に利用できない ネットワークI/Oが中心でほぼ メインスレッドで完結するた め、1vCPUで十分 1vCPUの小さいタスクを大量に 並べてリクエストを捌く
  6. FireLens導入でvCPUのコストが大幅増 0.75vCPU 0.25vCPU 1vCPU FireLensコンテナは 0.25vCPU ほどの余力が必要 FargateのvCPUは.25, .5, 1,

    2, …, 32と、2の冪乗になっている アプリコンテナが1vCPUを下回 りたくないなら2vCPUを割り当 てる必要がある App FireLens 空き AWS Fargate 料金 https://aws.amazon.com/jp/fargate/pricing/
  7. FireLens導入でvCPUのコストが大幅増 0.75vCPU 0.25vCPU 1vCPU FireLensコンテナは 0.25vCPU ほどの余力が必要 FargateのvCPUは.25, .5, 1,

    2, …, 32と、2の冪乗になっている アプリコンテナが1vCPUを下回 りたくないなら2vCPUを割り当 てる必要がある App FireLens 空き 2倍のvCPU料金がかかってしまうこととなった...! AWS Fargate 料金 https://aws.amazon.com/jp/fargate/pricing/
  8. ログ書き込み料金の削減効果が薄い Logs 書き込み単価 Firehose 書き込み単価 保存期間分の ログの量 ( - )

    × ログの量 ( - ) × Logs 保存単価 S3 保存単価 vCPU 単価 1 タスクの vCPU 総稼働時間 Logs パターンの Fargate 料⾦ FireLens パターンの Fargate 料⾦ × × - + 削減できる料⾦ 増加する料⾦ ※ 一部計算式を簡略化しています。
  9. ログ書き込み料金の削減効果が薄い Logs 書き込み単価 Firehose 書き込み単価 保存期間分の ログの量 ( - )

    × ログの量 ( - ) × Logs 保存単価 S3 保存単価 vCPU 単価 1 タスクの vCPU 総稼働時間 Logs パターンの Fargate 料⾦ FireLens パターンの Fargate 料⾦ × × - + 削減できる料⾦ 増加する料⾦ → ログ量が少なく「削減できる料金」を「増加する料金」が上回ってしまいました... ※ 一部計算式を簡略化しています。
  10. Managed Daemon(ECS Managed Instance) ECS クラスター on ECS Managed Instance

    Log タスク (Managed Daemon ) ECS サービス App タスク2 App タスク1 App タスクN ・・・ インスタンスごとに1つだけデーモンタスクを起動できる FargateのようにタスクごとにFireLensコンテナを割り当てる必要が ないので、vCPUを節約できる Amazon ECS マネージドデーモン (AWS ドキュメント) https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/managed-daemons.html