最もコストがかかるコード行を見つけて、コードの品質を向上する
Amazon CodeGuru は機械学習を利用したデベロッパーツールで、コードの品質を向上し、アプリケーションの最もコストがかかっているコード行を特定するためのインテリジェントな推奨事項を提供します。Amazon CodeGuru を既存のソフトウェア開発ワークフローに統合して、ビルトインのコードレビューを体験してください。割高なコード行を検出および最適化してコストを削減できます。
Amazon CodeGuru Profiler は、デベロッパーがアプリケーションの最もコストがかかっているコード行を見つけるだけでなく、特定の視覚化と、コードを改善してコストを節約する方法に関する推奨事項を提供します。詳細 »
Amazon CodeGuru Reviewer は機械学習を使用して、アプリケーション開発中に重大な問題や見つけにくいバグを特定し、コードの品質を向上します。詳細 »
利点
アプリケーションでコストがかかりすぎている部分を発見する
コードとアプリケーションが効率的であるほど、実行にかかるコストは減少します。Amazon CodeGuru Profiler を使用して、デベロッパーは本番環境で実行しているアプリケーションの節約可能な部分を見つけることができます。Amazon CodeGuru Profiler はパフォーマンスの問題を修正する方法や、非効率的なコードの実行にかかる推定コストに関する視覚化および推奨事項を提供し、デベロッパーが修正に優先順位を付けることができるようになります。AWS Lambda、Amazon EC2、Amazon ECS、AWS Fargate、または AWS Elastic Beanstalk、およびオンプレミスで実行するあらゆるアプリケーションで、パフォーマンスを最適化できます。 EC2、コンテナ、オンプレミスアプリケーションの場合、プロファイラーエージェントを JVM に添付します。Lambda をインスタンス化する場合は、1 行の変更で Lambda コード内にエージェントを添付します。
コストがかかっているコードの問題を、本番稼働前に発見する
Amazon CodeGuru Reviewer は、何十年にもわたる知識と経験に基づきトレーニングされています。数百万個のコードレビューと、オープンソースプロジェクトおよび Amazon.com 内部でプロファイルされた数千個のアプリケーションの間で、機械学習、ベストプラクティス、苦労して学んだレッスンを活用しています。コードレビューの場合、デベロッパーは GitHub、GitHub Enterprise、Bitbucket Cloud、AWS CodeCommit などにコードをコミットし、Amazon CodeGuru Reviewer をコードレビューワーの 1 つとして追加します。通常の開発プロセスに、他の変更を行う必要はありません。Amazon CodeGuru Reviewer は、リポジトリ内の既存のコードベースを分析し、見つけにくいバグや重大な問題を高い精度で識別し、それらを修正する方法に関するインテリジェントな提案を提供して、連続するコードレビューのベースラインを作成します。
最もコストがかかるコード行を今すぐ見つける
Amazon CodeGuru Profiler は多くの CPU を消費し始める、またはレイテンシーの増加を示すアプリケーションスタックにある重要なメソッドにおけるパフォーマンスの異常を自動的に検出します。10 分以内に、指定デベロッパーに異常を通知します。このような早期検出と通知により、本番環境での問題が深刻化していくことを防止します。そのため、サービスの可用性とお客様の体験に影響を与える前に、デベロッパーは問題を修正するための十分な時間が得られます。
Amazon CodeGuru Reviewer は AWS API と SDK を使用する際のベストプラクティスからの逸脱を検出し、ページ区切りの欠落の検出やバッチ操作でのエラー処理などの本番環境の問題につながる可能性のある一般的な問題にフラグを立てます。CodeGuru Reviewer はアトミック性違反や、スレッドセーフではないクラスの使用など、同時実行に関する問題を検出します。これらは、経験豊富なプログラマでも見つけるのが困難な問題です。いつリソースが誤って閉じられ、リソースの枯渇と停止を引き起こしたかを検出します。さらに、入力検証が行われていないことも識別します。入力が正しく行われていないと、校正されていない入力は、インジェクション攻撃やサービス妨害などの問題につながる可能性があります。
お客様の導入事例
「本番環境で異常を検出した際に、AWS CodeGuru の継続的なプロファイリング機能のおかげで、調査時間を数日から数時間、場合によっては数分に短縮できました。現在、当社のデベロッパーは差別化された機能を提供することにより多くのエネルギーを注いでおり、本番環境での問題を調査する時間は短くなっています。」
Atlassian、技術チーム、エンジニアリング部長、Zak Islam 氏
Atlassian が CodeGuru Profiler を使用してどのように本番環境でサービスをプロファイリングしているかご覧ください
「アプリケーション開発とは、パフォーマンスの高いシステムを作成すること、そして既存のシステムのフィードバックおよび継続的な改善です。こうした作業は、アーキテクチャの強力な土台作りで始まり、多くの場合、アプリケーションコードの詳細で終わります。当社 EagleDream のチームがこれらの詳細について分析する際、自由に使えるツールはいろいろとあります。静的および動的の両面から分析することは役に立ちます。Amazon CodeGuru Profiler が提供するランタイム分析は実行が最も簡単かつ最速でできる分析の 1 つで、修正が簡単なアプリケーションコードに関するインサイトを得ることができるとわかりました。このツールを使用することで、他の方法では見つけるのが難しかった、アプリケーションの障害を示す部分をすばやく特定できるようになり、極めて高速なフィードバックループで実装およびテストできる変更を開発しました。この結果、当社独自のワークロードとお客様のワークロードを継続的に提供および改善して、パフォーマンスの向上が見込めるだけでなく、コストも削減できます。」
EagleDream、プリンシパルクラウドソリューションアーキテクト、Dustin Potter 氏
EagleDream が CodeGuru Profiler によってどのようにアプリケーションを最適化しているかご覧ください
「DevFactory は、100 を超えるエンタープライズ向けソフトウェア製品の 6 億行を超えるコードを管理しています。今後、当社製品をすべてクラウドネイティブ製品にし、AWS で利用できる素晴らしい一連のマネージドサービスを活用することを計画しています。古いオンプレミスアーキテクチャを再構築し、それらをクラウドに移行することで、あらゆる最新のサービスに遅れないようにしたり、これらのアーキテクチャに関連するパラダイムシフトに適応したりするなどのエンジニアリング上の一連の課題が発生します。Amazon CodeGuru は製品のパフォーマンスを最適化しながら、あらゆるベストプラクティスを実施してこれらのサービスを確実に活用できるという点において、とても価値のあるツールです。Amazon CodeGuru Reviewer といったツールがなければ、FogBugz のような製品全体を AWS のクラウドネイティブに書き換えることはできなかったでしょう。現在、Amazon CodeGuru Profiler を使って、EngineYard のコンテナベースの「No Ops」プラットフォームや Jive とコラボレーションした次世代プラットフォームなど、多くの製品を最適化しています。」
DevFactory、最高経営責任者、Rahul Subramaniam 氏
Amazon.in の販売者のスケジューリングサービスに携わるソフトウェア開発エンジニア、Chris Butterfield
「Amazon CodeGuru Profiler を実行してその推奨事項を確認すると、CPU ロックに関連するバグを修正するには、サービスを更新する必要があることに気付きました。推奨の修正は完璧に機能し、CPU 時間の 55.97% を使用していたスレッド競合に対する警告を取り除きました。これで、単一のホストが 700 TPS を処理できるようになりました。これは、単一のホストが以前処理できたトラフィック処理量の約 7.5 倍に相当します同じトラフィックを処理しながら、負荷テスト後にインスタンスの数を約 75% 削減できました」
Amazon.com のカタログ管理サービスに携わるシニアソフトウェア開発エンジニア、Rajesh Konatham:
「サーバーの起動時間を短縮し、プロファイルの乱雑さを軽減するために、いくつかのソフトウェア関連の設定を無効にしました。Amazon CodeGuru Profiler を使ってこの変更によりどのような影響があるかを理解すると、ワークフローシステムがブランチを実行するたびに、ドキュメントが不要な場合でも複製していることがわかりました。このため、CPU 容量の複製値の 15% を無駄に消耗していたのです。Amazon CodeGuru Profiler の推奨事項に従ってこれらの複製値を削除したところ、CPU 使用率が同期フリートで 40%、非同期フリートで 67% と大幅に削減されました。これは、予想していた CPU 使用率の 15% の削減をはるかに超えていました。 クローンがヒープメモリを使用しなくなり、ガベージコレクションのアクティビティが減少したため、さらに削減できました」
Amazon CloudWatch に取り組むシニアソフトウェア開発エンジニア、Neeraj Kumar
「Amazon CodeGuru Profiler を実行したところ、CPU 容量のほとんどが SHA-2 で Amazon S3 要求を署名するのに使用されていることがわかりました。JDK が提供する SHA-2 実装を使用していましたが、代わりに Amazon Corretto Crypto Provider を使うことを Amazon CodeGuru Profiler は推奨しました。この推奨事項に従ったことで、一部の暗号化アルゴリズムをより迅速に実装できるようになりました。Corretto Crypto Provider は JDK の動作と一致するため、オンボーディングは簡単でした。デプロイすると、CPU 使用率が約 30% 削減された AWS のリージョンがいくつもありました」
AWS ビルダーツールに取り組むシニアソフトウェア開発エンジニア、Mike Thompson
「Amazon CodeGuru Reviewer を使用することで、重要なコードに埋もれている長期にわたる競合状態を把握できました。変更したコードの領域外にあったため、人間のレビュアーであれば見逃していたところでしょう。Amazon CodeGuru Reviewer は、バグに関する十分なコンテキスト、バグがよくない理由についての明確な説明、バグの修正方法の具体例を提供してくれました。必要な変更は非常に簡単で、ものの数分で完了しました。セットアップを要さず、さらに作業の支障にならずにコード品質を改善できる素晴らしいものです」
AWS DynamoDB に取り組むソフトウェア開発エンジニア、Danish Bashar:
「Amazon S3 からファイルをダウンロードしていたのですが、それがストリームで、リソースリークが発生したことに気づきませんでした。単体テストでは問題なく実行できたため、この問題は検出されませんでした。オブジェクト型を明示的に記述していなかったので、気が付かなかったのです。私だけでなく、コードのレビュー担当者でも誰も気づかなかったことでしょう。Amazon CodeGuru Reviewer がコードのセマンティクスを確認するのに数分しかかからず、リソースリークを比較的速く発見できました。Amazon CodeGuru Reviewer は、try-with-resources を使用してリソースを閉じることを推奨したので、すぐに実装しました。+1」
AWS DynamoDB に取り組むソフトウェア開発エンジニア、Geetika Vasudeo
「通常はしない方法で Amazon DynamoDB テーブルを使用していたため、コードレビューで見落としていました。Amazon CodeGuru Reviewer は、オペレーションがすべての結果ではなく、ページ区切りされた結果を返していることを突き止めました。今では問題になりませんが、スキャンを行って最初のページ上の結果を確認するだけでした。テーブルが次第に大きくなると、最初のページのみが表示され、残りの結果が失われていました。正しく処理されないと、これがコードの主要なバグになっていたかもしれません。上手く問題を検出でき、推奨事項も適切でした」
以下は、Amazon CodeGuru Reviewer がサポートしているものです。
- Reviewer がサポートする言語: Java
- リポジトリ – GitHub、GitHub Enterprise、Bitbucket クラウド、AWS CodeCommit
- 推奨事項
以下は、Amazon CodeGuru Profiler がサポートしているものです。
- Java、およびその他の JVM 言語
- Amazon EC2、Amazon ECS、Amazon EKS、AWS Fargate、AWS Beanstalk
- 異常検出
- AWS Lambda
- オンプレミス
- フレームグラフ
- 推奨事項