AWS認定資格 WEB問題集&徹底解説
機械学習エンジニア–アソシエイト
AWSサービスの一つであるAmazon CodeGuruはどんな内容なのでしょうか?また、AWS認定資格の機械学習エンジニア-アソシエイト(MLA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います
1. サービス概要
Amazon CodeGuruは、機械学習と自動分析により、コード品質とアプリケーション性能の改善を支援するAWSの開発者向けサービス群です。 主に、ソースコードをレビューして問題を指摘するCodeGuru Reviewerと、実行中アプリケーションのCPU/レイテンシ/コストボトルネックを分析するCodeGuru Profilerがあります。
CodeGuruを「コードレビューとプロファイリング」、Amazon Q Developerを「生成AIによる開発支援」、CodeBuild/CodePipelineを「CI/CD」、X-Rayを「分散トレーシング」と切り分けることが重要です。 特にProfilerは本番環境の低オーバーヘッドな継続プロファイリングで、CPU使用率や高コストなコードパスを可視化します。
2. 主な特徴と機能
2.1 CodeGuru Reviewer
Reviewerは、リポジトリやプルリクエストを分析し、コード品質、AWS API利用のベストプラクティス、セキュリティ、リソースリーク、並行処理、入力検証などの問題を検出して推奨事項を提示します。 GitHub、Bitbucket、CodeCommitなどの開発フローに統合できます。
2.2 CodeGuru Profiler
Profilerは、本番/ステージングで実行中のアプリケーションからランタイムデータを継続収集し、CPU時間、レイテンシ、ヒープ傾向、スレッド状態、最も高コストなコード行を可視化します。 Java/JVM系とPythonアプリケーションで利用され、Lambda、ECS、EC2、オンプレミスなどに組み込めます。
2.3 プロファイリンググループ
Profilerでは、同じアプリケーションやサービス単位でProfiling groupを作成し、エージェントからデータを送信します。 Flame graph、Recommendation report、Anomaly detectionにより、実際にCPUを消費しているメソッドや改善候補を確認できます。
2.4 推奨事項とコスト最適化
CodeGuruは検出結果に対して修正方針や改善ポイントを提示します。 Profilerでは無駄なCPU消費や非効率な処理を削減し、アプリケーション性能改善とインフラコスト削減につなげます。
2.5 開発ワークフロー統合
ReviewerはプルリクエストやCI/CDの品質ゲートとして利用できます。 ProfilerはCloudWatchやアプリケーションログ、X-Rayと併用し、トレースで「どこが遅いか」、Profilerで「どのコードがCPUを使うか」を補完的に確認します。
2.6 Amazon Q Developerとの関係
Amazon Q Developerはコード生成、チャット、コード変換、セキュリティスキャンなどの生成AI開発支援を提供します。 CodeGuruは既存コードの自動レビューや実行時プロファイリングに焦点を置くため、用途を分けて理解します。
3. アーキテクチャおよび技術要素
- Reviewerでは、ソースリポジトリを関連付け、プルリクエストまたはリポジトリ解析を実行する。
- Reviewerが問題箇所、重要度、推奨修正を開発者へ提示し、開発者が修正して再レビューする。
- Profilerでは、Profiling groupを作成し、アプリケーションにProfilerエージェント/SDKを組み込む。
- アプリケーションが実行時プロファイルデータをCodeGuru Profilerへ送信する。
- Profilerが可視化、異常検知、推奨事項レポートを生成し、CPU/レイテンシ/コスト改善に使う。
- IAM、KMS、CloudTrail、CloudWatchでアクセス、暗号化、監査、運用を管理する。
実務では、CodeGuruの検出結果をCI/CDやチケット管理に連携し、X-RayやCloudWatch Application Signalsなどの運用監視と合わせて改善サイクルを作ります。
4. セキュリティと認証・認可
- IAM最小権限: リポジトリ関連付け、レビュー実行、Profiling group操作、プロファイル送信権限を用途別に制御する。
- リポジトリアクセス: Reviewerに接続するGitHub/Bitbucket/CodeCommitの権限を最小限にし、不要なリポジトリを対象にしない。
- 暗号化: CodeGuruへ送信されるデータは転送中/保存時に保護され、必要に応じてKMSや関連ログの暗号化を確認する。
- コード機密性: ソースコードやプロファイル情報は知的財産を含むため、アクセス権、保持期間、共有先を厳格に管理する。
- 監査: CloudTrailでCodeGuru API操作を記録し、CloudWatchでエージェント送信失敗や運用エラーを監視する。
- 本番導入: Profilerは低オーバーヘッドだが、本番導入前に権限、依存ライブラリ、ネットワーク到達性、データ取り扱いを確認する。
5. 料金形態
CodeGuruの料金は、Reviewerのコード解析量やProfilerのサンプリング時間/プロファイリング対象に基づく従量課金です。利用リージョンや機能により課金軸を確認します。
- Reviewer: 解析対象コード量、レビュー実行、リポジトリ解析などが課金対象になる。
- Profiler: プロファイリンググループへ送信されるサンプリング時間や対象アプリケーションの稼働状況が課金対象になる。
- 周辺コスト: CloudWatch Logs、CI/CD、CodeBuild、CodePipeline、通知、チケット連携なども合算する。
- コスト最適化: 対象リポジトリ/ブランチを絞り、Profiler対象環境と保持期間を適切に設定する。
- 費用対効果: ProfilerでCPUボトルネックを修正すると、EC2/ECS/Lambdaの実行コスト削減につながる。
6. よくあるアーキテクチャ・設計パターン
- プルリクエスト自動レビュー: GitHub/CodeCommitのPR作成時にReviewerを実行し、問題をレビューコメントとして返す。
- CI/CD品質ゲート: CodePipeline/CodeBuildと連携し、重大な指摘がある変更を本番へ進めない。
- 本番プロファイリング: ECS/EC2/Lambda上のJava/PythonアプリにProfilerエージェントを組み込み、CPUホットスポットを継続監視する。
- 性能劣化調査: CloudWatch/X-Rayで遅いAPIを見つけ、ProfilerでCPUを消費するコードパスを特定する。
- コスト削減: Profiler推奨事項に従って非効率なループや過剰なシリアライズを修正し、コンピュートコストを下げる。
- 開発者支援統合: Amazon Q Developerで修正案やコード作成を支援し、CodeGuruで既存コードの問題検出やプロファイリングを行う。
7. 設定・デプロイ手順(ハンズオン例)
- Reviewerを利用する場合、対象リポジトリを関連付け、必要なアクセス権を付与する。
- プルリクエストまたはリポジトリ解析を実行し、指摘内容と推奨修正を確認する。
- Profilerを利用する場合、Profiling groupを作成し、アプリケーションにエージェント/SDKを追加する。
- アプリケーション実行ロールにProfilerへデータ送信する権限を付与する。
- 負荷をかけてデータを収集し、Flame graph、異常、Recommendation reportを確認する。
- 修正後に再レビュー/再プロファイリングし、性能とコスト改善を検証する。
8. 試験で問われやすいポイント
8.1 サービス選択
- Q: Amazon CodeGuruは何を支援するサービス?
A: コードレビューと実行時プロファイリングにより、品質、性能、コスト改善を支援するサービス。 - Q: コード生成やチャット型開発支援が主目的ならCodeGuru?
A: いいえ。生成AI開発支援はAmazon Q Developer、CodeGuruはレビュー/プロファイリングが中心。 - Q: 分散トレースでサービス間の呼び出し遅延を見たい場合は?
A: AWS X-RayやCloudWatch系のAPMを使う。CodeGuru Profilerはコード実行時のCPU/メソッド単位分析に向く。
8.2 Reviewer
- Q: プルリクエストでコード品質やセキュリティ問題を自動指摘する機能は?
A: CodeGuru Reviewer。 - Q: Reviewerが統合できる代表リポジトリは?
A: GitHub、Bitbucket、AWS CodeCommitなど。 - Q: Reviewerの主な価値は?
A: バグ、セキュリティ、AWSベストプラクティス、リソースリークなどを早期に検出すること。
8.3 Profiler
- Q: 本番アプリのCPUボトルネックや高コストなコード行を見つける機能は?
A: CodeGuru Profiler。 - Q: Profilerでアプリケーション単位に作成するリソースは?
A: Profiling group。 - Q: Profilerが得意な分析は?
A: CPU時間、レイテンシ、ヒープ傾向、スレッド状態、Flame graphによるホットスポット分析。 - Q: Profilerがサポートする代表的なランタイムは?
A: Java/JVM系とPython。
8.4 セキュリティと運用
- Q: CodeGuru利用時に守るべき権限設計は?
A: リポジトリアクセス、レビュー実行、Profiling group操作、データ送信権限を最小権限にする。 - Q: ソースコードやプロファイル情報で注意すべきことは?
A: 知的財産や機密情報を含むため、アクセス制御、暗号化、保持期間、監査を設計する。 - Q: CodeGuruの主な課金軸は?
A: Reviewerの解析量とProfilerのプロファイリング利用量。周辺のCI/CDやログ費用も考慮する。