Amazon CodeGuru (vista previa)
Automatice las revisiones de código
Identifique las líneas de código más costosas
Entrenamiento con décadas de conocimiento y experiencia
Los modelos de aprendizaje automático de CodeGuru se entrenan con las bases de código de Amazon, que comprenden cientos de miles de proyectos internos, además de más de 10 000 proyectos de código abierto en GitHub. Decenas de miles de desarrolladores de Amazon han contribuido con el entrenamiento de CodeGuru con décadas de experiencia en la revisión de código y la generación de perfiles de aplicaciones. Por ejemplo, el revisor de CodeGuru se entrena con modelos de aprendizaje automático supervisado y minería por reglas que utilizan una combinación de regresión logística y redes neuronales. Durante el entrenamiento para detectar discrepancias con las prácticas recomendadas, extrae las bases de código de Amazon para solicitudes de incorporación de cambios que incluyen llamadas a la API de AWS. Examina los cambios de código y los compara con los datos de la documentación, que también extrae en paralelo. Esto crea nuevos modelos de prácticas recomendadas que el revisor utiliza cuando examina el código para brindar recomendaciones. Los ingenieros de rendimiento de Amazon también entrenan el generador de perfiles de CodeGuru y lo utilizan para generar perfiles de decenas de miles de servicios que se utilizan en Amazon a nivel interno. Puede decidir si acepta o no cada recomendación de CodeGuru; cuanta más información le proporcione al servicio, mejores serán las recomendaciones.
Encuentre las líneas de código más costosas
El generador de perfiles de CodeGuru siempre busca optimizar el rendimiento de las aplicaciones, identifica las líneas de código más “costosas” y recomienda formas de corregirlas para reducir la utilización de la CPU, disminuir los costos de informática y mejorar el rendimiento de las aplicaciones. Proporciona recomendaciones específicas para que pueda tomar medidas inmediatas en cuestiones como la creación excesiva de objetos costosos, la deserialización costosa, el uso de bibliotecas ineficientes y el registro excesivo. El generador de perfiles de CodeGuru se ejecuta en producción de forma permanente, con un consumo mínimo de capacidad de la CPU, por lo que no tiene un impacto considerable en el rendimiento de la aplicación. Puede comenzar a generar perfiles para su aplicación instalando un pequeño agente con el código que proporciona CodeGuru y configurándolo en la consola de CodeGuru.
Cuando el generador de perfiles de Amazon CodeGuru detecta oportunidades para optimizar el rendimiento de las aplicaciones, describe los motivos por los que recomienda un cambio, las causas del problema, la manera de resolverlo y la parte del código de la aplicación que se ve afectada.
El revisor de Amazon CodeGuru analiza las solicitudes de incorporación de cambios y proporciona recomendaciones con respecto al código fuente en GitHub o AWS CodeCommit, junto con una descripción de la causa del problema y la forma de solucionarlo.
Detecte el problema del código hoy mismo, no espere a que le avisen
El revisor de CodeGuru busca los problemas que lo desvelan por la noche y recomienda soluciones. Detecta las discrepancias con las prácticas recomendadas en el uso de las API y los SDK de AWS, marca los errores comunes que pueden ocasionar problemas de producción, como la detección de falta de paginación o la gestión de errores con operaciones por lotes. Detecta problemas de simultaneidad, como infracciones de atomicidad y el uso de clases que no son seguras para los subprocesos, que son difíciles de encontrar incluso para los programadores experimentados. Detecta cuando los recursos se cierran de forma incorrecta, lo que genera problemas de latencia e interrupciones. También identifica la validación de entrada correcta, donde las entradas no corregidas pueden causar problemas como ataques por inyección o denegación de servicio. Puede asociar repositorios de código existentes en GitHub o AWS CodeCommit con CodeGuru para comenzar a revisar el código.
Precios económicos para utilizarlo en cada aplicación y revisión de código
CodeGuru es lo suficientemente económico como para utilizarlo en cada aplicación y revisión de código que ejecute. Tiene un sistema de precio mensual simple, de pago por uso, que se basa en el número de líneas de código revisadas y las horas de muestra por perfil de aplicación. Por ejemplo, si tiene una solicitud de incorporación de cambios típica con 500 líneas de código, solo costaría 3,75 USD ejecutar el revisor de CodeGuru en ella. Pruébelo sin costo durante los primeros 90 días. Luego, CodeGuru cuesta 0,005 USD por hora de muestra por perfil de aplicación y 0,75 USD por cada 100 líneas de código al mes. Ver los precios »
Decenas de millones de USD
Opinión de los desarrolladores acerca de Amazon CodeGuru
Chris Butterfield, ingeniero de desarrollo de software que trabaja en un servicio de programación para vendedores en Amazon.in:
“Luego de ejecutar el generador de perfiles de CodeGuru y ver sus recomendaciones, me di cuenta de que necesitábamos actualizar nuestro servicio para corregir un error relacionado con el bloqueo de la CPU. La corrección recomendada funcionó a la perfección y eliminó la advertencia de contención de subprocesos que utilizaba el 55,97 % del tiempo de la CPU. Después de aplicar la corrección, completé la prueba de carga y descubrí que un solo host podía procesar 700 TPS, lo que representa alrededor de 7,5 veces más tráfico del que podía procesar anteriormente. Logramos reducir el número de instancias en casi un 75 % luego de realizar las pruebas de carga manejando el mismo tráfico”.
Rajesh Konatham, ingeniero sénior de desarrollo de software que trabaja en el servicio de administración de catálogos para Amazon.com:
“Acabábamos de desactivar algunas configuraciones relacionadas con el software para mejorar el tiempo de inicio del servidor y reducir el desorden de perfiles. Utilizamos el generador de perfiles de CodeGuru para comprender el impacto de este cambio y nos dimos cuenta de que nuestro sistema de flujo de trabajo clonaba los documentos cada vez que ejecutaba ramificaciones, incluso cuando no era necesario. Esta clonación innecesaria de valores generaba un gasto del 15 % de la capacidad de la CPU. Después de seguir la recomendación del generador de perfiles de CodeGuru de eliminar estos valores clonados, vimos una reducción enorme en la utilización de la CPU, una disminución del 40 % en la flota sincrónica y un 67 % de reducción en la flota asíncrona. Fue mucho mejor que la reducción del 15 % en la utilización de la CPU que esperábamos. La reducción adicional se debió a la disminución de la recolección de elementos no utilizados, dado que los clones ya no ocupaban la memoria del montón”.
Neeraj Kumar, ingeniero sénior de desarrollo de software que trabaja en Amazon CloudWatch:
“Ejecutamos el generador de perfiles de CodeGuru y descubrimos que la mayor parte de la capacidad de CPU se utilizaba para registrar la solicitud de Amazon S3 con SHA-2. Usábamos la implementación proporcionada por JDK para SHA-2, pero el generador de perfiles de CodeGuru recomendó que usáramos Amazon Corretto Crypto Provider en su lugar. Seguimos la recomendación, lo que nos permitió implementar algunos de estos algoritmos criptográficos con mayor rapidez. Corretto Crypto Provider se ajusta al comportamiento de JDK, por lo que la incorporación fue sencilla. Después de la implementación, vimos una reducción de la CPU de aproximadamente un 30 % en varias regiones de AWS”.
Mike Thompson, ingeniero sénior de desarrollo de software que trabaja en las herramientas de creación de AWS:
“El revisor de CodeGuru nos permitió detectar una condición de carrera de hace tiempo que se ocultaba en un fragmento esencial del código. Un revisor humano no lo hubiera detectado porque estaba fuera de las áreas del código que yo había modificado. El revisor de CodeGuru proporcionó el contexto suficiente sobre el error, una explicación clara de su gravedad, y un ejemplo de cómo arreglarlo. Fue muy fácil aplicar el cambio necesario y solo se necesitaron unos pocos minutos. Fue fantástico tener un servicio que mejorara la calidad de nuestro código sin requerir configuración ni generar estorbos”.
Danish Bashar, ingeniero de desarrollo de software que trabaja en AWS DynamoDB:
“Descargué un archivo de Amazon S3 sin saber que se trataba de una secuencia, lo que generó una pérdida de recursos. Las pruebas de unidad no habrían detectado este problema porque funcionaba bien. Como no había escrito explícitamente el tipo de objeto, no lo noté, y estoy seguro de que cualquiera que revisara el código tampoco lo habría notado. El revisor de CodeGuru tardó unos minutos en examinar la semántica del código y detectó la pérdida de recursos relativamente rápido. Me recomendó que usara una prueba con recursos para cerrar el recurso, y la implementé inmediatamente. +1”.
Geetika Vasudeo, ingeniera de desarrollo de software que trabaja en AWS DynamoDB:
“Estábamos usando una tabla de Amazon DynamoDB de una forma que no usamos normalmente y no nos percatamos de esto en la revisión del código. El revisor de CodeGuru identificó que la operación devolvía resultados paginados en lugar de todos los resultados. Realizábamos análisis y solo obteníamos resultados en la primera página, lo cual no representaba un problema en ese momento, pero a medida que la tabla creciera con el tiempo, terminaríamos viendo solo la primera página y no veríamos el resto de los resultados. Si esto no se manejaba correctamente, podría haberse convertido en un error importante en nuestro código. Fue un gran descubrimiento y una recomendación excelente”.
Obtenga acceso instantáneo a la capa gratuita de AWS.
Comience a crear con Amazon CodeGuru en la consola de administración de AWS.