Trova le righe di codice più costose e migliora la qualità del codice
Amazon CodeGuru è uno strumento di sviluppo gestito da machine learning che fornisce suggerimenti intelligenti per migliorare la qualità del codice e identificare le righe di codice più costose di un'applicazione. Integra Amazon CodeGuru nel flusso di lavoro di sviluppo di software esistente in cui esplorerai le revisioni del codice incorporate per rilevare e ottimizzare le righe di codice costose al fine di ridurre i costi.
Amazon CodeGuru Profiler aiuta gli sviluppatori a trovare le righe di codice più costose di un'applicazione con visualizzazioni e suggerimenti specifici su come migliorare il codice per risparmiare. Ulteriori informazioni »
Amazon CodeGuru Reviewer utilizza il machine learning per identificare i problemi critici e i bug difficili da trovare durante lo sviluppo dell'applicazione al fine di migliorare la qualità del codice. Ulteriori informazioni »
Vantaggi
Scopri cosa rende l'applicazione costosa
Più il codice e l'applicazione sono efficienti, meno costerà eseguirli. Gli sviluppatori possono utilizzare Amazon CodeGuru Profiler al fine di individuare dei potenziali risparmi per qualsiasi applicazione eseguita in produzione. Amazon CodeGuru Profiler fornisce visualizzazioni e suggerimenti su come riparare problemi di prestazione e sul costo stimato dell'esecuzione di un codice inefficiente, aiutando gli sviluppatori a classificare le correzioni in ordine di priorità. Ottimizza la prestazione di ogni applicazione eseguita su AWS Lambda, Amazon EC2, Amazon ECS, AWS Fargate o AWS Elastic Beanstalk e in locale. Per EC2, i container e le applicazioni in locale, collega l'agente di profilatura al JVM. Per Lambda Instantiate, collega l'agente dentro il codice Lambda con un cambio di una riga.
Identifica i problemi del codice costoso prima che raggiunga la produzione
Eseguito durante decenni di conoscenza ed esperienza, Amazon CodeGuru Reviewer utilizza il machine learning, le best practice e i duri insegnamenti tratti da milioni di revisioni del codice e migliaia di applicazioni profilate su progetti open source e internamente su Amazon.com Per le revisioni del codice, gli sviluppatori eseguono il commit del codice su GitHub, GitHub Enterprise, Bitbucket Cloud, AWS CodeCommit e aggiungono Amazon CodeGuru Reviewer come uno dei revisori del codice, senza altri cambiamenti rispetto al normale processo di sviluppo. Amazon CodeGuru Reviewer analizza le basi di codici esistenti nel repository, identifica i bug difficili da trovare e i problemi critici con grande precisione, fornisce suggerimenti intelligenti su come correggerli e crea una baseline per le revisioni del codice successive.
Rileva oggi le righe di codice più costose
Amazon CodeGuru Profiler rileva automaticamente le anomalie durante la prestazione di metodi critici nello stack dell'applicazione che iniziano ad utilizzare più CPU o indicano una latenza aumentata. Entro 10 minuti, avvisa lo sviluppatore incaricato riguardo all'anomalia. Il rilevamento e la notifica anticipati impediscono l'aggravarsi del problema durante la produzione e forniscono allo sviluppatore abbastanza tempo per ripararlo prima che abbia un impatto sulla disponibilità del loro servizio e sull'esperienza dei clienti.
Amazon CodeGuru Reviewer rileva anche la discrepanza rispetto alle best practice per l'utilizzo delle API AWS e del kit SDK, contrassegnando le problematiche comuni che possono comportare problemi di produzione, come il rilevamento di paginazioni mancanti o la gestione di errori nelle operazioni batch. Individua problemi di concorrenza come le violazioni di atomicità e l'utilizzo di classi non sicure per i thread, che risultano difficili da identificare anche da parte dei programmatori più esperti. Rileva la chiusura errata delle risorse che causa interruzioni e l'esaurimento di risorse. Inoltre, individua la mancanza della convalida di input, laddove gli input impuri possono causare problemi come attacchi di tipo injection o Denial of Service.
Storie di successo
Al rilevamento delle anomalie durante la produzione, siamo stati capaci di ridurre il tempo d'indagine da giorni a ore e a volte minuti grazie alla funzione di profilatura continua di AWS CodeGuru. Ora, i nostri sviluppatori utilizzano più energia per la distribuzione di funzionalità differenziate e meno tempo per le indagini sui problemi nell'ambiente di produzione.
"I team di più di 170.000 società si affidano ai prodotti Atlassian per rendere il lavoro di gruppo più semplice e per aiutarli a organizzare, discutere e completare il loro lavoro. Ad Atlassian, molti servizi hanno centinaia di controlli per distribuzione. Sebbene le revisioni del codice effettuate dal nostro team di sviluppatori sono capaci di impedire che i bug raggiungano la produzione, non è sempre possibile predire il modo in cui i sistemi si comporteranno sotto stress o gestiranno forme dati complesse, soprattutto perché esistono più distribuzioni al giorno."
Zak Islam, Capo del dipartimento d'ingegneria, Team tecnico, Atlassian
Abbiamo scoperto che l'analisi del runtime offerta da Amazon CodeGuru Profiler è una delle più semplici e rapide da eseguire e genera informazioni nel codice di applicazione che sono facili da correggere.
"Parte dello sviluppo dell'applicazione è la creazione dei sistemi a prestazioni elevate oltre al feedback e al miglioramento continuo dei sistemi esistenti. Ciò inizia con delle forti fondamenta architetturali ma termina spesso nei dettagli del codice dell'applicazione. Quando il nostro team a EagleDream esamina questi dettagli, c'è una varietà di strumenti a nostra disposizione e utilizzare l'analisi statica e dinamica è utile. Abbiamo scoperto che l'analisi del runtime offerta da Amazon CodeGuru Profiler è una delle più semplici e rapide da eseguire e genera informazioni nel codice di applicazione che sono facili da correggere. Grazie all' utilizzo di questo strumento, siamo stati capaci di focalizzarci rapidamente su delle porzioni di un'applicazione che rappresenta dei colli di bottiglia che sarebbero altrimenti stati difficili da individuare, quindi sviluppare cambiamenti che possono essere implementati e testati con un loop di feedback molto rapido. Ciò ci permette di distribuire e migliorare di continuo i nostri carichi di lavoro e i carichi di lavoro dei nostri clienti, aumentandone la prestazione e allo stesso tempo risparmiando."
Dustin Potter, Architetto principale delle soluzioni cloud, EagleDream
Amazon CodeGuru è uno strumento incredibilmente prezioso che aiuta a ottimizzare la prestazione dei nostri prodotti mentre ci assicuriamo di sfruttare questi servizi con tutte le best practice applicate.
"A DevFactory, gestiamo oltre 600 milioni di righe di codice su più di cento prodotti software dell'organizzazione. Un componente chiave della nostra futura roadmap è di trasformare tutti i nostri prodotti in prodotti nativi per il cloud che sfruttano l'incredibile varietà di servizi gestiti disponibili su AWS. Ricostruire architetture in vecchio stile e in locale e trasformarle per il cloud apporta un insieme di sfide di ingegneria che variano dal tenersi informati su tutti i servizi più recenti ad adattarsi al cambiamento di paradigma associato a queste architetture. Amazon CodeGuru è uno strumento incredibilmente prezioso che aiuta a ottimizzare la prestazione dei nostri prodotti mentre ci assicuriamo di sfruttare questi servizi con tutte le best practice applicate. Senza strumenti come Amazon CodeGuru Reviewer, non saremmo stati capaci di riscrivere interi prodotti come FogBugz in nativi per il cloud AWS. Ora stiamo utilizzando Amazon CodeGuru Profiler per ottimizzare una vasta gamma di prodotti inclusa 'No Ops', una piattaforma basata su container di EngineYard, e la nuova generazione della piattaforma di collaborazione Jive."
Rahul Subramaniam, Amministratore delegato, DevFactory
Chris Butterfield, un ingegnere di sviluppo software che lavora su un servizio di pianificazione per i venditori su Amazon.in:
"Dopo aver eseguito Amazon CodeGuru Profiler e averne osservato i suggerimenti, ho capito che dovevamo aggiornare il nostro servizio per risolvere un bug relativo al blocco della CPU. La correzione suggerita ha funzionato alla perfezione e ha eliminato l'avviso relativo al conflitto di thread che utilizzava il 55,97% del tempo di CPU. Dopo la correzione, ho completato i test di carico e ho riscontrato che adesso un singolo host può servire 700 TPS, ovvero circa un traffico 7,5 volte maggiore di quello che era in grado di gestire in precedenza. Abbiamo potuto ridurre il numero di istanze di circa il 75% dopo i test di carico, riuscendo a gestire comunque lo stesso traffico."
Rajesh Konatham, un ingegnere di sviluppo software senior che lavora al servizio di gestione cataloghi per Amazon.com:
"Avevamo appena disabilitato alcune configurazioni relative al software per migliorare i tempi di avvio del server e ridurre gli elementi superflui del profilo. Abbiamo utilizzato Amazon CodeGuru Profiler per comprendere l'impatto di questa modifica e ci siamo resi conto che il nostro sistema di flusso di lavoro clonava i documenti ogni volta che eseguiva i branch, anche quando ciò non era richiesto. Per questo motivo, impiegavamo il 15% della capacità della CPU per una clonazione di valori del tutto superflua. Dopo aver seguito il suggerimento di Amazon CodeGuru Profiler circa la rimozione dei valori clonati, abbiamo riscontrato una grande riduzione nell'utilizzo della CPU, pari al 40% sul parco istanze sincrono e il 67% su quello asincrono. Molto di più della riduzione dell'utilizzo della CPU del 15% che avevamo previsto! L'ulteriore riduzione è dovuta a una minore attività di garbage collection, dal momento che i cloni non occupano più la memoria heap."
Neeraj Kumar, un ingegnere di sviluppo software senior che lavora su Amazon CloudWatch:
"Abbiamo eseguito Amazon CodeGuru Profiler e abbiamo riscontrato che la maggior parte della capacità della CPU veniva impiegata per firmare la richiesta Amazon S3 tramite SHA-2. Utilizzavamo l'implementazione fornita da JDK per SHA-2, tuttavia Amazon CodeGuru Profiler ci ha suggerito di sostituirla con Amazon Corretto Crypto Provider. Abbiamo seguito il suggerimento, che ci ha consentito di implementare alcuni di questi algoritmi di crittografia in modo più rapido. Il servizio Corretto Crypto Provider funziona esattamente come JDK, pertanto abbiamo imparato a usarlo senza problemi. Dopo la distribuzione, abbiamo registrato una riduzione dell'uso della CPU di circa il 30% in diverse regioni AWS."
Mike Thompson, un ingegnere di sviluppo software senior che lavora sugli strumenti di sviluppo AWS:
"Amazon CodeGuru Reviewer ci ha consentito di individuare una race condition presente da tanto tempo e nascosta in un punto critico del codice. Un operatore umano non avrebbe potuto individuarla dato che si trovava al di fuori delle parti del codice che ho modificato. Amazon CodeGuru Reviewer ha fornito un contesto sufficiente sul bug, una spiegazione chiara della sua dannosità e un esempio di come correggerlo. Apportare la modifica richiesta è stato facilissimo e ha richiesto solo pochi minuti. È stato ottimo poter contare su un servizio per migliorare la qualità del codice senza la necessità di configurazione e senza ingombro."
Danish Bashar, un ingegnere di sviluppo software che lavora a AWS DynamoDB:
"Stavo scaricando un file da Amazon S3 senza rendermi conto che si trattava di un flusso. Ciò ha determinato una perdita di risorse. I test dell'unità non avrebbero rilevato il problema, dal momento che tutto funzionava a dovere. Dato che non ho scritto in modo esplicito il tipo di oggetto, non l'ho notato e posso affermare con certezza che nessuno di coloro che avrebbe revisionato il codice avrebbe potuto accorgersi del problema. Amazon CodeGuru Reviewer ha impiegato pochi minuti per esaminare la semantica del codice e ha individuato la perdita di risorse in modo relativamente rapido. Amazon CodeGuru Reviewer mi ha suggerito di utilizzare delle risorse di prova per chiudere la risorsa e le ho implementate subito. Problema risolto."
Geetika Vasudeo, un ingegnere di sviluppo software che lavora su AWS DynamoDB:
"Utilizzavamo una tabella di Amazon DynamoDB in un modo che di solito non adottiamo e non ce ne siamo accorti durante la revisione del codice. Amazon CodeGuru Reviewer ha rilevato che l'operazione restituiva risultati paginati anziché tutti i risultati. Abbiamo effettuato alcune scansioni e abbiamo recuperato solo i risultati nella prima pagina. Non si trattava di un problema immediato, ma all'aumentare delle dimensioni della tabella, avremmo finito con il vedere solo la prima pagina, perdendo il resto dei risultati. Una situazione del genere, se non viene gestita correttamente, può trasformarsi in un bug grave nel codice. Bel colpo e ottimo suggerimento."
Amazon CodeGuru Reviewer supporta:
- Linguaggio supportato da Reviewer: Java
- Repository - GitHub, GitHub Enterprise, Bitbucket cloud e AWS CodeCommit
- Suggerimenti
Amazon CodeGuru Profiler supporta:
- Java e altri linguaggi JVM
- Amazon EC2, Amazon ECS, Amazon EKS, AWS Fargate, AWS Beanstalk
- Rilevamento di anomalie
- AWS Lambda
- In locale
- Grafici a fiamma
- Suggerimenti
Visita la pagina delle caratteristiche.
Ottieni accesso istantaneo al piano gratuito di AWS.
Inizia subito a utilizzare Amazon CodeGuru nella console di gestione AWS.