AWSの「CodeGuru」とは?「Amazon CodeGuru Profiler」の利用方法を紹介!

この記事でわかること
AWSの「Amazon CodeGuru」とは?
AWSの「Amazon CodeGuru」とは、機械学習を活用した開発者向けツールです。具体的には、コード上で問題がある箇所を特定したり、アプリケーション実行でハイコストの箇所の特定及び改善方法を提供したりといった機能があります。
「Amazon CodeGuru」は、主に「Amazon CodeGuru Reviewer」と「Amazon CodeGuru Profiler」の2個の機能で構成されています。
「Amazon CodeGuru Reviewer」とは?
「Amazon CodeGuru Reviewer」とは、ソースコード上の重大な不具合や、コーディングのベストプラクティス(推奨されるコードの書き方)との適合性を判定してくれる、AWSの自動コードレビューサービスです。
これらの不具合や適合性の判定については、「機械学習」を活用しています。
「Amazon CodeGuru Reviewer」の特徴
「Amazon CodeGuru Reviewer」の特徴としては、機械学習を利用してソースコードの改善方法を提示することで、「コード品質」を一定の水準で維持できる点です。この特徴によって「Amazon CodeGuru Reviewer」は、チーム内の「レビュアー」の一員として活躍することが可能です。
利用に際しては、追加のライブラリ等はインストール不要で、簡単に利用を開始できます。
「Amazon CodeGuru Reviewer」の対応言語とリポジトリ
「Amazon CodeGuru Reviewer」の対応言語とリポジトリについて説明します。
対応言語としては、JavaとPython(※英語版のみ)に対応しています。サポートしている「リポジトリ」は、「AWS CodeCommit」、「Bitbucket」、「GitHub」、「GitHub Enterprise」、「GitHub Enterprise Cloud」等があります。
「Amazon CodeGuru Reviewer」による問題検出
「Amazon CodeGuru Reviewer」は、様々な種類のソースコードにおける処理の問題を検出してくれます。例えば、冗長な処理の重複処理、アプリケーションの同時実行処理、不適切な入力処理、認証時の機密情報の不適切な処理、クローズ処理漏れといった問題があります。
またAWSだけではなく、Javaによるコーディングでのベストプラクティスも提案してくれます。
「Amazon CodeGuru Reviewer」の利用方法
「Amazon CodeGuru Reviewer」の利用方法について説明します。最初に「Amazon CodeGuru コンソール」にアクセスし、「Amazon CodeGuru Reviewer」のコードリポジトリ(AWS CodeCommit/GitHub/GitHub Enterprise/BitBucket)と関連付けを行います。
「Amazon CodeGuru Reviewer」からコーディングにおける推奨事項が送られます。
「Amazon CodeGuru Profiler」とは?
「Amazon CodeGuru Profiler」とは、実行中のアプリケーションをプロファイル分析して、パフォーマンス向上に役立つ情報を提供してくれる、AWSのコードレビューサービスです。
このプロファイル分析は「機械学習」をベースとしており、コード上で実行コストが高い箇所を特定することができます。またアプリケーション実行中のパフォーマンス解析結果を分かりやすく可視化する機能があります。
「Amazon CodeGuru Profiler」のプロファイル対象
「Amazon CodeGuru Profiler」のプロファイル対象は、「Amazon EC2」上で動作するアプリケーション、「Amazon ECS」や「Amazon EKS」によるコンテナ上のアプリケーション、「AWS Fargate」や「AWS Lambda」で動作するサーバーレスアプリケーションが対象です。
またサポートしているプログラム言語は、「Java」、「Scala」、「Kotlin」等があります。
「Amazon CodeGuru Profiler」の利用方法(その1)
「Amazon CodeGuru Profiler」の利用方法(その1)としては「CodeGuru Profiler プロファイリンググループ」を作成します。
具体的には、「マネジメントコンソール」画面から「Amazon CodeGuru」のTOP画面に遷移し、「Profiler」にて作成します。
なお「プロファイリンググループ」とは、利用者が作成する論理的なグループで、プロファイル対象とするアプリケーションの範囲を示します。
「Amazon CodeGuru Profiler」の利用方法(その2)
「Amazon CodeGuru Profiler」の利用方法(その2)としては、「IAM権限」を設定します。具体的には、「Profilerエージェント」が使用する「IAM User」に、プロファイルデータを「Amazon CodeGuru」へ送信可能とするための権限を付与します。
なお「Profilerエージェント」とは、アプリケーションの一部に組み込み、プロファイル分析を行う実行モジュールのことです。
「Amazon CodeGuru Profiler」の利用方法(その3)
「Amazon CodeGuru Profiler」の利用方法(その3)としては、「Profilerエージェント」を起動します。起動すると実行中のアプリケーションを継続してプロファイルします。起動から15分以内にプロファイル結果が送信され、以降は10分間隔で送信されます。
なお「Profilerエージェント」は、AWS社で提供されている「CodeGuruProfiler Agent JAR」の利用が推奨されています。
「Amazon CodeGuru Profiler」の可視化(ビジュアライゼーション)
「Amazon CodeGuru Profiler」の可視化機能(ビジュアライゼーション)により、プロファイル結果を視覚的に把握できます。
「Amazon CodeGuru Profiler」画面に表示されるビジュアライゼーション(プロファイル結果の図)は、実行中のアプリケーションの「スタックトレース」を採取して集約したものです。ソースコードのどの位置で「CPU時間」が掛かっているかを視覚的に把握できます。
「Amazon CodeGuru Profiler」のビジュアライゼーションモード
ビジュアライゼーションのモードには、「Overviewモード」、「Hotspotsモード」、「Inspectモード」の3種類があります。
「Overviewモード」は、アプリケーション全体の理解、各処理のCPU使用時間を把握するのに有用です。「Hotspotsモード」は、CPU使用時間が長い処理を特定するのに有用です。「Inspectモード」は、分析用に集約した情報を表示してくれます。
「Amazon CodeGuru Profiler」のビュー
「Amazon CodeGuru Profiler」のビューは、「CPUビュー」、「Latencyビュー」、「Customビュー」の3種類あります。
「CPUビュー」は、アプリケーションのCPU使用率の解析に役立つビューです。「Latencyビュー」は、アプリケーションの実行時間に影響を与えている処理の特定に役立ちます。「Customビュー」は、表示対象の色等をカスタマイズできるビューです。
「Amazon CodeGuru Profiler」のレコメンデーションレポート
「Amazon CodeGuru Profiler」のレコメンデーションレポートとは、AWS上でのパフォーマンス改善に役立つ情報です。収集されたプロファイリングデータを元にして、1時間間隔でレコメンデーションレポートを自動的に生成してくれます。
コンソール画面から直近30日分のレポートを閲覧できます。なおCLI(コマンドラインインターフェース)からは、それ以前の古いレポートも取得できます。
「Amazon CodeGuru」のまとめ
「Amazon CodeGuru」について、「Amazon CodeGuru Profiler」や「Amazon CodeGuru Reviewer」といった主要な機能を元に、その概要や利用方法について解説してきました。
機械学習をベースに、実行時間が掛かるコード行を特定し、コードの品質を向上してくれることからコードレビューのツールとして有用です。
AWS上のサービス開発時には、コードレビューに役立ててはいかがでしょうか。
Search キーワード検索
Popular 人気の記事
-
AWS EBSとは?8つの特徴とEBSボリュームについても解説
公開: 更新: -
AWSのT2とT3の違いとは?用途に合った選択をしよう!
公開: 更新:
reccomended おすすめ記事
-
AWSエンジニアの将来性は?年収と必要なスキル6つをご紹介!
公開: 更新:
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
通信キャリア向け基盤構築/東京都渋谷区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/在宅ワーク
月給65万~65万円東京都渋谷区(神泉駅) -
各種対応/東京都新宿区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都新宿区(高田馬場駅) -
要件定義、構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給60万~60万円東京都千代田区(飯田橋駅) -
運用構築/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給56万~56万円東京都千代田区(飯田橋駅) -
監視システムの保守、更改/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】/テレワーク
月給55万~55万円東京都千代田区(神保町駅) -
各種対応/東京都千代田区/【WEB面談可/インフラ業界経験者/AWSソリューションアーキテクト/AWS経験者活躍中】
月給60万~60万円東京都千代田区(虎ノ門駅)