繼微軟之後,AWS應用機器學習技術也推出程式碼導師服務CodeGuru,用來自動審查程式碼,其包含可靜態分析程式碼的Reviewer,以及動態分析程式的Profiler,可找出用戶程式碼中最耗費資源的部分,並提供最佳寫法的建議。

CodeGuru由Reviewer和Profiler兩部分組成,CodeGuru Reviewer是以規則探勘和監督式機器學習模型訓練而成,模型結合了邏輯回歸和神經網路,可用來偵測AWS API和SDK的使用,與最佳實作的差異,標記可能產生問題的寫法,像是批次操作的錯誤處理或是執行緒不安全的類別等。Reviewer會尋找程式碼變更,並且同時探勘文件資料進行交互參照,在審查程式碼時,產生新的模型,為用戶程式碼提供最佳實作的建議。

另外,CodeGuru Profiler則會針對問題,像是過度重建耗費資源的物件、進行耗費資源的反序列化、使用低效能的函式庫,或執行過多的日誌記錄等問題,提供具體的建議,讓用戶修改程式碼以降低CPU使用率、運算成本,甚至是改進易用程式效能。

CodeGuru Profiler代理會在生產環境中持續執行,不停地尋找應用程式中耗費大量資源的程式碼,但代理僅會占用少量的CPU容量,不會明顯地影響應用程式效能。用戶可以安裝小型代理程式分析應用程式,並在CodeGuru控制臺中進行控制。

AWS提到,他們內部已經使用CodeGuru最佳化了8萬個應用程式。AWS以龐大的程式碼庫訓練CodeGuru機器學習模型,除了使用內部數十萬個專案之外,還用了GitHub中超過10萬個開源專案的程式碼。目前CodeGuru僅支援Java應用程式,而其他程式語言的支援則會在後續釋出。

而CodeGuru是依照Reviewer審查的程式碼行數,以及Profiler執行的時間來計費。Reviewer每掃描100行程式花費0.75美元,而Profiler則是跟著應用程式運作,採樣在Amazon EC2執行個體、ECS、EKS以及AWS Fargate執行的應用程式,其CPU利用率和延遲等資料。

每個應用程式分析的計價,會根據Profiler採樣時間來計算,一個採樣小時等於Profiler代理在執行個體上執行1個小時的時間,因此當應用程式在兩個執行個體上執行,兩個執行個體都執行Profiler代理1個小時,則採樣時間會計為2小時,一個月前36,000小時每小時0.005美元,36,000小時以上就不再額外收費。


Advertisement

更多 iThome相關內容