AWS Well-Architected FrameworkにContainer Build Lensが追加されました
はじめに
こんにちは。土居です。
今回は、AWS Well-Architected FrameworkのLens※に新たに追加された「Container Build Lens」につきまして、早速ベストプラクティスの内容を確認してみましたのでご紹介したいと思います。
※ Lensについては以前の記事も是非読んでみてください!
Container Build Lens
今回追加されたLensは、コンテナのワークロードに特化した内容になっています。基礎となる設計原則と、6本の柱※から構成されるベストプラクティスがあるのは他のLens同様です。それぞれ簡単にご紹介させていただきますが、なかなかのボリュームですので興味のある方は是非ホワイトペーパーをご確認ください。
※フレームワークの6本の柱
設計原則
- イメージサイズの最小化
イメージサイズを可能な限り小さく抑えることによる様々な恩恵が得られます。例えば、必要最小限の依存関係のみ利用することによる攻撃対象領域の削減などがあります。 - マルチステージビルド
マルチステージビルドの実施が推奨されます。再現性の高いアプリケーションのビルドを行うことができます。
参考: マルチステージビルド - ビジネス間の標準化
無駄の無い親イメージを作成してチーム・組織で横断的に利用が推奨されます。それぞれのアプリケーションで必要なソフトウェアや設定を追加する手法によりセキュリティや品質の強化を図れます。 - バージョンの検証と制限
イメージタグの適切な利用が重要です。コスト管理のためのタグ付け、latestタグの上書きの忌避など。 - イメージスキャン戦略の実装
脆弱性への定期的な対処が必須です。CI/CDを用いたビルド・スキャンの実施など。 - ステートレスに動作するための設計
アプリケーションの状態はコンテナ外に保持する設計が求められます。
運用上の優秀性の柱
コンテナのライフサイクル管理、コンテナのワークロードの正常性を把握することについてのベストプラクティスが紹介されています。
例えば:
- マルチステージビルド。小さいコンテナイメージを作成し、プルやコンテナの起動時間を短縮
- ログのコンテナ外部での収集と利用
セキュリティの柱
アクセス管理、脆弱性対応、インフラストラクチャとデータの保護などのベストプラクティスが紹介されています。
例えば:
- 静的スキャンの実施。コンテナを環境にデプロイする前段階での脆弱性の検出
- インフラストラクチャの保護。不要なパッケージマネージャやシェルを含まないイメージを利用することによる攻撃対象領域の削減
信頼性の柱
CPUとメモリの管理、アーキテクチャ、コンテナイメージの更新の管理などのベストプラクティスが紹介されています。
例えば:
- 無駄の無い親イメージをチームまたは組織全体で共有
- コンテナ化アプリケーションのローカルでのテスト
- コンテナのヘルスチェック
パフォーマンス効率の柱
コンテナイメージのサイズやイメージのpullにかかる時間の削減、対象のコンテナイメージの内容を一貫したものにする、時間経過してもパフォーマンスを一貫したものにする、などのためのベストプラクティスが紹介されています。
例えば:
- コンテナごとのプロセスを1つにする
- latestタグを使わない
- パフォーマンスの劣化を検知するための自動テスト
- Dockerfileのステートメントの適切な記述によるキャッシュ
コスト最適化の柱
不要なコストを避けるためのコンテナのビルド・構築プロセスの設計、コンテナイメージの縮小、コンテナ起動時のコスト最小化などのためのベストプラクティスが紹介されています。
例えば:
- コンテナレジストリの不要になった古いイメージの削除
- コンテナイメージで不要な依存関係を使用しない
- コンテナイメージのサイズのスケーリングイベントへの時間的影響
持続可能性の柱
リソースの使用量を減らすためのコンテナ設計、エネルギー効率の高いハードウェアでのコンテナ利用、リソースの利用効率をアップするためのビルドツール・サービスの利用などのためのベストプラクティスが紹介されています。
例えば:
- コンテナ化したアプリケーションを様々なアーキテクチャで実行可能にする
- ベースイメージ・親イメージの最新化
- 不要なコンテナイメージの削除の確認のためのECRのレジストリライフサイクルポリシーの活用
まとめ
いかがでしたでしょうか。コンテナを利用されている組織は多くなってきている印象ですが、さらに上を目指すためのプラクティスがたくさん紹介されています。
興味のある方は是非、Container Build Lensを参考にコンテナのワークロードを実際にレビューし、Well-Architectedな改善点を見つけてください。