Amazon CodeGuru を使用して最もコストがかかるコード行を検出する

Amazon CodeGuru は機械学習を利用したデベロッパーツールで、コードの品質を向上し、アプリケーションの最もコストがかかっているコード行を特定するためのインテリジェントな推奨事項を提供します。自動化されたコードレビューと、アプリケーションパフォーマンスに関する推奨事項を提供します。

Amazon CodeGuru Profiler

Amazon CodeGuru Profiler はアプリケーションパフォーマンスの最適化策を常に探索しながら、最も「コストがかかる」コード行を特定します。さらにそれらを修正して CPU 使用率を削減し、計算コストの削減を行い、アプリケーションパフォーマンスを改善するための推奨方法を示します。たとえば、CodeGuru Profiler により、アプリケーションがコアビジネスロジック実行のためではなく、ログ記録ルーチンのために過剰な CPU 容量を消費している場合を識別できます。

アプリケーションの実行時の動作を把握する

CodeGuru Profiler は、アプリケーションの CPU 使用率とレイテンシー特性を継続的に分析して、アプリケーションのサイクルもしくは実行時間において最も消費量が多い部分を示します。この分析はインタラクティブなフレームグラフで表示されるので、どのコードパスが最もリソースを消費しているかを視覚的に簡単に理解でき、アプリケーションが期待どおりに実行されていることの確認や、最適化できる領域を明らかにするのに役立ちます

CodeGuru_Profiler
CodeGuru_Profiler
 クリックして拡大

フレームグラフは、特定の時点で実行されているすべてのスタックトレースを集約することにより、アプリケーションのパフォーマンスを視覚化します。フレームグラフを使用して、どのパスが最もリソースを消費しているかを把握し、アプリケーションが期待どおりに実行されていることを確認し、最適化できる領域を発見できます。たとえば、UploadGreyImage というメソッドに毎年 134,868 USD の予算がかかり、ウォールクロック時間の 10.22% を消費しているとします。この時間がが想定した時間より長いのであれば、調査してみる必要があります。

インテリジェントな推奨提案

CodeGuru Profiler は、アプリケーションのパフォーマンスの問題を自動的に識別し、その修正方法に関するインテリジェントな推奨事項を提供します。これらの推奨事項は、コード内で最もコストがかかる手段またはリソースを集中的に使用している手段を特定して最適化するのに役立ちます。ユーザーがパフォーマンスエンジニアリングの専門家である必要はありません。最適化を行うことで、インフラストラクチャのコストを削減し、レイテンシーを短縮し、エンドユーザーエクスペリエンス全体を改善するのに役立ちます。

CodeGuru_Profiler-1
CodeGuru_Profiler-1
 クリックして拡大

アプリケーションのパフォーマンスを最適化する機会を特定すると、Amazon CodeGuru Profiler は、変更を推奨する理由、問題の原因、解決方法を説明し、さらにこの問題がアプリケーションに影響を与えるコード内の場所を明らかにします。この推奨事項を見ることで、コストが高いコード行が毎年 182,160USD の予算を必要とし、2.97 のアクティブ CPU コストを消費していることがわかります。このソリューション提案にある手順を実行することで、最大で 182,160USD の節約が可能になります。

異常検出

Amazon CodeGuru Profiler は、アプリケーションプロファイルをリアルタイムで継続的に分析し、アプリケーションやメソッドの動作から異常を検出します。各異常の追跡結果は、推奨事項レポートに記載されます。ユーザーはこれにより、異常が明確に現れる時点でのメソッドのレイテンシーの振る舞いを、時系列的に確認することができます。また、新たな異常が検出されたときに通知を送るように、Amazon SNS を設定することもできます。

CodeGuru_AD
CodeGuru_AD
 クリックして拡大
実稼働環境にあるアプリケーションの定常的なプロファイリング

CodeGuru Profiler は、最小限の CPU オーバーヘッドで本番環境で継続的に実行されるように設計されています。つまり、アプリケーションのパフォーマンスへの影響を最小限に抑えて、常時稼働させることができます。これにより、実際の顧客のトラフィックパターンを使用してアプリケーションのプロファイルとトラブルシューティングを行い、テスト環境では検出されない可能性のあるパフォーマンスの問題を簡単に発見できます。

Amazon CodeGuru Reviewer

Amazon CodeGuru Reviewer は、コード内の問題を検出し、その推奨される修正方法を提案します。CodeGuru Reviewer では、たとえば AWS API と SDK を使用するためのベストプラクティスからの逸脱を検出したり、同時実行の問題やリソースリーク、さらに不正な入力を検証したことまでも識別できます。コードのレビューを開始するには、GitHub、GitHub Enterprise、Bitbucket、または AWS CodeCommit の既存のコードリポジトリを CodeGuru に関連付けます。

自動レコメンデーション

CodeGuru Reviewer は、ソースコードのプルリクエストを自動的に分析して重要な問題を見つけ、そのプルリクエスト内でコードの欠陥を直接解決するためのインテリジェントな推奨事項を提供します。CodeGuru Reviewer では、コードの品質に関する問題を、次のように大きく 9 つのカテゴリで識別します。

  • AWS のベストプラクティス: AWS API (ポーリング、ページ区切り、など) の使用方法を修正します。
  • Java ベストプラクティス: 一般的な Java 言語とライブラリ機能の使用方法を修正します。
  • 同時実行: 機能上の障害を起こしている同期不良、もしくは、パフォーマンスを低下させている過剰な同期などを検出します。
  • デッドロック: 同時実行されるスレッド間の割り当てをチェックします。
  • リソースリーク: リソースの処理方法 (データベース接続の解放など) を修正します。
  • 機密情報のリーク: 個人識別情報 (ログインしているクレジットカードの詳細など) の漏洩を検出します。
  • 一般的なコード上のバグ: Lambda 関数読み出し時にクライアントを作成していないなどの、発見しづらい問題を検出します。
  • クローンコード: 統合することでコードの保守性を高められる可能性のある、重複コードを特定します。
  • 入力検証: 信頼されないソースから送られる、不適当な形態の、もしくは悪意のあるデータをチェックします。
CodeGuru-Reviewer1
CodeGuru-Reviewer1
 クリックして拡大

端的に言うと、Amazon CodeGuru により開発者チームは、ソフトウェア開発プロセスにおけるコーディング標準に関する、高い基準を維持するためのツールを手に入れることができます。

ユーザーは、コードに関するすべてのレビュー内容を、コンソールにある「コードレビュー」ページで表示することが可能です。このページでは、コードレビューのステータス、対象のレポジトリ、推奨事項の数など、コードレビューに関する全情報を一覧表示します。ユーザーは、正常に完了したコードレビューをクリックすることで、推奨事項の詳細表示や提案の検索、解析した行数の表示などが行えます。また、推奨事項の下に表示されるサムズアップやサムズダウンのアイコンをクリックすることで、CodeGuru の提案に対しユーザーからフィードバックを送ることもできます。

CodeGuru-Feature-1
CodeGuru-Feature-1
 クリックして拡大
CodeGuru-Feature-2
CodeGuru-Feature-2
 拡大イメージを見る
リポジトリ全体の分析

指定されたコードブランチの下で、プル要求による増分変更だけでなくすべてのコードに、関連するリポジトリの自動コードレビューの推奨事項を取得できるようになりました。お客様のユースケースには、コードの移行中でのコードレビューの推奨事項の提供、コードのデューデリジェンス、定期的なコードメンテナンスの取り組みなどがあります。お客様は「コードレビュー」ページの「リポジトリ分析」タブに移動して、全リポジトリで新しい分析をトリガーできます。

RepostoryAnalysis
RepostoryAnalysis

Reviewer にオンボーディングしているお客様は、プル要求と全リポジトリ分析を利用して以下のことを実行できます。1) リポジトリの関連付け、2) 全リポジトリ分析の開始、3)プル要求を継続的に分析してコードの増分を変更する、4)定期的に全リポジトリを再スキャンしてコードの品質を保証する。

Product-Page_Standard-Icons_01_Product-Features_SqInk
料金の詳細

Amazon CodeGuru の料金ページをご覧ください。

詳細 
Product-Page_Standard-Icons_02_Sign-Up_SqInk
無料のアカウントにサインアップ

AWS 無料利用枠にすぐにアクセスできます。 

サインアップ 
Product-Page_Standard-Icons_03_Start-Building_SqInk
コンソールで構築を開始する

AWS マネジメントコンソールで Amazon CodeGuru の構築を始めましょう。

サインイン