找出最昂貴的程式碼行並提高程式碼品質
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 以一個程式行的變更動作,在您的 Lambda 程式碼內將連接代理程式執行個體化。
在觸及正式作業之前發現昂貴的程式碼錯誤
經過數十年知識和經驗的培訓,Amazon CodeGuru Reviewer 採用機器學習技術、最佳實務,以及透過在開放原始碼專案和 Amazon.com 內部,進行數以百萬計的程式碼審查和成千上萬個應用程式分析中獲得的寶貴經驗。對於程式碼審查,由開發人員將程式碼提交至 GitHub、GitHub Enterprise、Bitbucket Cloud、AWS CodeCommit,並將 Amazon CodeGuru Reviewer 加入為程式碼審查者之一,對於標準開發程序並不作出其他變更。Amazon CodeGuru Reviewer 分析儲存庫中的現有程式碼庫,以高精準度識別難以發現的錯誤和關鍵問題,提供有關如何將其修復的明智建議,以及為後續程式碼審閱建立基準。
立即擷取最昂貴的程式碼行
Amazon CodeGuru Profiler 自動偵測應用程式堆疊中關鍵方法的效能異常,這些異常導致開始消耗更多 CPU 或顯示延遲增加。在 10 分鐘內即可將異常通知給指定的開發人員。這種早期偵測和通知可防止生產中的問題升級,並為開發人員提供足夠的時間來修復問題,以免影響其服務可用性和客戶體驗。
Amazon CodeGuru Reviewer 可偵測偏離使用 AWS API 和 SDK 的最佳實務的情況,標記會導致生產問題的常見問題,例如偵測分頁缺失,或錯誤處理批次操作。它還能偵測並行問題,例如原子性違規,以及使用非執行緒安全的類,即使是有經驗的程式設計人員,也很難找出這些問題。它可偵測資源何時被錯誤關閉,從而導致資源耗盡和中斷。它還能識別缺少的輸入驗證,其中未經處理的輸入可能導致插入式攻擊或拒絕服務等問題。
客戶成功案例
「偵測到生產中的異常時,多虧有了 AWS CodeGuru 的持續分析功能,我們已經能夠將調查時間從幾天減少到幾小時,甚至是幾分鐘。現在,我們的開發人員將更多精力投入提供差異化的功能,並減少調查生產環境問題的時間。」
Atlassian 技術團隊工程主管 Zak Islam
了解 Atlassian 如何使用 CodeGuru Profiler 分析生產環境中的服務 »
「應用程式開發的一部分是建立高效能系統,以及對現有系統的意見回饋和持續改進。這始於強大的架構基礎,但通常以應用程式的程式碼細節結束。若我們的 EagleDream 團隊深入研究這些細節時,我們可以利用多種工具,同時使用靜態和動態分析很有幫助。我們發現,Amazon CodeGuru Profiler 提供的執行時間分析是執行起來最簡單、最快速的方法之一,並且可以產生易於修復的應用程式程式碼見解。使用此工具,我們能夠快速解決應用程式中顯示瓶頸的部分,然後透過快速的意見回饋環節進行開發和測試。這讓我們能夠持續交付和改善我們自己的工作負載以及客戶的工作負載,促使他們在提高效能的同時節省成本。」
EagleDream 首席雲端解決方案架構師 Dustin Potter
「在 DevFactory,我們管理一百多種企業軟體產品中超過六億行程式碼。未來路線圖的關鍵組成部分是將我們的所有產品轉變為雲端原生產品,以充分利用 AWS 上令人難以置信的一系列受管服務。重建舊的、內部部署架構並將其轉變為雲端,這會帶來一系列工程挑戰,包括跟上所有最新服務的步伐,以及適應與這些架構相關的範式轉移。Amazon CodeGuru 是一種非常有價值的工具,有助於最佳化我們產品的效能,同時確保充分利用這些服務並實作所有最佳實務。若沒有 Amazon CodeGuru Reviewer 這類工具,我們無法將 FogBugz 之類的整個產品重寫為 AWS 雲端原生。我們現正使用 Amazon CodeGuru Profiler 來最佳化許多產品,包括 EngineYard 的容器型 'No Ops' 平台,以及新一代 Jive 協作平台。」
DevFactory 執行長 Rahul Subramaniam
Chris Butterfield,軟體開發工程師,他致力於為 Amazon.in 上的賣家提供排程服務︰
「執行 Amazon CodeGuru Profiler 並查看其建議後,我意識到我們需要更新服務,以修復與 CPU 鎖定有關的錯誤。推薦的修復程式運作出色,並消除了佔用 55.97% CPU 時間的執行緒爭用警告。修復之後,我完成了負載測試,發現單一主機現在可以提供 700 TPS 的服務,相較於單一主機過去可處理的流量約提升了 7.5 倍。在負載測試之後,我們能夠將執行個體數量減少了約 75%,同時仍然處理相同的流量。」
Rajesh Konatham,一名高級軟體開發工程師,負責 Amazon.com 的型錄管理服務︰
「我們剛剛停用了一些與軟體相關的組態,以縮短伺服器啟動時間並減少描述檔混亂。我們使用 Amazon CodeGuru Profiler 來了解此變更的影響,並意識到我們的工作流程系統每次執行分支時都會複製文件,即使不需要時也是如此。因此,我們不必花費 15% 的 CPU 容量來複製值。遵循 Amazon CodeGuru Profiler 的建議刪除這些複製值之後,我們發現 CPU 使用率大幅降低,同步機群減少了 40%,非同步佇列減少了 67%。遠遠超過我們預期的降低 15% 的 CPU 使用率! 額外降低是由於廢棄項目收集活動減少,因為複製不再佔用堆積記憶體。」
Neeraj Kumar,負責 Amazon CloudWatch 的高級軟體開發工程師
「我們執行了 Amazon CodeGuru Profiler,發現我們的大部分 CPU 容量都用於使用 SHA-2 簽署 Amazon S3 請求。我們正在使用 JDK 提供的 SHA-2 實作,但 Amazon CodeGuru Profiler 建議我們改用 Amazon Corretto Crypto Provider。我們採用了建議,這讓我們能夠更快地實作其中一些加密演算法。Corretto Crypto Provider 符合 JDK 的行為,因此布設很簡單。部署後,我們發現幾個 AWS 區域的 CPU 使用降低了約 30%。」
Mike Thompson,負責 AWS 建立器工具的高級軟體開發工程師:
「Amazon CodeGuru Reviewer 讓我們能夠擷取潛伏在關鍵程式碼段中的長期競爭狀況。人工審查者會錯過它,因為它不在我變更的程式碼範圍內。Amazon CodeGuru Reviewer 提供了有關該錯誤的足夠內容、錯誤原因的清晰說明,以及如何修復該錯誤的範例。進行所需變更非常容易,只需幾分鐘即可。能在不設定或處理的情況下改善我們的程式碼品質真是太好了。」
Danish Bashar,負責 AWS DynamoDB 的軟體開發工程師︰
「我正在從 Amazon S3 下載檔案,但沒有意識到它是串流,這造成了資源洩漏。因為執行良好,所以單元測試不會發現此問題。由於我沒有明確編寫物件類型,因此我也沒有註意到它,而且我很確定,任何審查過我的程式碼也不會注意到它。Amazon CodeGuru Reviewer 花了幾分鐘查看程式碼的語義,並較快地發現了資源洩漏。Amazon CodeGuru Reviewer 建議我使用 try-with-resources 來關閉資源,我立即進行了實作。 +1。」
Geetika Vasudeo,負責 AWS DynamoDB 的軟體開發工程師︰
「我們以一種非典型的方式來使用 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
- 內部部署
- 火焰圖
- 建議