kaitokimuraofficial / blog-infra

0 stars 0 forks source link

ECSを整備する上で`Well-Archtected`な設計を学ぶ #46

Closed kaitokimuraofficial closed 1 month ago

kaitokimuraofficial commented 1 month ago

What

Describe the solution you'd like

Why

Describe related problems

Others

Describe what you want to describe

Refs

kaitokimuraofficial commented 1 month ago

Well-Architectedフレームワーク

6つの柱からなる

kaitokimuraofficial commented 1 month ago

運用設計

モニタリングとオブザーバビリティ

システム内で定めた状態を確認し続けることを「モニタリング」という -> システムの可用性を維持するために問題発生に気づくことが目的

メトリクス

何が起きているのかを把握するために、メモリ使用率やディスク使用率などの定量的な計測情報を収集する

トレース

どこでそれが起きているかを知る。メトリクスでリクエスト数を知ったとしたら、それぞれのリクエストがどこから行われていたかを追跡することをトレースという

ログ

なぜそれが発生したかを特定する。なぜ、あるリクエストがある場所から発生しているのかを知ること。

具体的なロギング設計

CloudWatch logs

FireLens FireLensはCloudWatch Logs以外のAWSサービスやAWS以外のSaaSにログを転送しやすい。 Firehoseと連携して、S3やOpenSearch Serviceへのログ転送が可能(Fluentdなど)

メトリクス設計

トレース設計

X-Ray

  1. ECSタスク定義の中にアプリケーションコンテナとX-Rayコンテナを同梱する
  2. アプリケーション自体にAWSが提供するX-Ray用のSDKをコーディングさせることでトレース情報を送出できる
kaitokimuraofficial commented 1 month ago

CI/CD設計

Well-ArchitechtedなCI/CDを用いれば、変更を自動でリリースできるので、ビルドやデプロイの時間をアプリ開発に費やすことができる。

コンテナの特性であるポータビリティ、再現性、軽量さのおかげで、一般にコンテナはCI/CDと相性がいい。 開発環境、ステージング環境、本番環境と幾つも環境などのシステム構成が異なっていても、OSのライブラリのバージョンさいやコードの依存関係を気にする必要がなくなる。

CI/CDパイプライン

ECRの運用

kaitokimuraofficial commented 1 month ago

コンテナセキュリティ

イメージに対するセキュリティ対策

ECRによる脆弱性スキャン Trivy OSパッケージだけでなく、pipやgemなどの依存関係もスキャンして脆弱性を確認してくれる dockle コンテナイメージに対し、ベストプラクティスかどうかを調べてくれる

kaitokimuraofficial commented 1 month ago

issue自体は閉じるが学んだことが新たにあればここに追加する。

(可用性の設計とかパフォーマンスに関する設計はここにはしるせていない)