Amazon Codeguru: автоматические проверки кода и рекомендации по производительности приложений

На AWS re:invent 2019 было сделано более 70 объявлений, и одно из самых интересных объявлений для меня — это запуск Amazon Codeguru, который представляет собой автоматизированный сервис проверки кода и профилировщика на основе машинного обучения. Amazon называет это иметь выдающегося инженера на связи 24x7.

В сервисе Amazon Codeguru (не имеет отношения к Codeguru.com :-)) есть 2 компонента: первый — это статический анализатор кода, который является обозревателем Amazon Codeguru, а второй — профилировщик Amazon Codeguru, который профилирует приложения, работающие на EC2. , услуги ECS, EKS и Fargate

Что здесь нового?

1. Он основан на машинном обучении, поэтому он учится и развивается с учетом отзывов пользователей, что означает, что сервис будет становиться только лучше.

2. Обучение работе с внутренними репозиториями/сервисами Amazon и репозиториями GitHub. Итак, мы смотрим на сервис, который уже использовался в продакшене, поэтому знания и опыт, которые уже были использованы при разработке этого сервиса, обширны.

3. Может определить самые сложные проблемы, а также найти самые дорогие строки кода. Например, рецензент Codeguru может определить проблемы с параллелизмом, которые зачастую труднее всего найти и исправить. Он также может выявлять утечки ресурсов, что является еще одной сложной проблемой для выявления.

4. Следует рекомендациям и может подсказать, какой API AWS правильный для использования. Хотя некоторые могут указать на это как на блокировку, я считаю это очень полезным, потому что это то, чего хотел бы разработчик, и это лучший способ использования службы. Без этой функции разработчику всегда было сложно, поскольку драгоценное время тратилось на определение правильного использования API. Это еще более заметно, если это новая услуга.

Я также считаю, что это также одно из отличий Codeguru от других доступных инструментов анализа кода. Все эти инструменты могут сказать вам, какой метод/API лучше всего использовать с точки зрения языка (Java, C# и т. д.), но они не могут сказать вам, какой API AWS лучше всего использовать в конкретном случае использования.

5. Меньший размер, поэтому он может работать в производственной среде и может постоянно искать оптимизацию даже при работе в производственной среде. Так что больше не беспокойтесь об отключении проверки в вашем коде, когда вы работаете в рабочей среде.

6. Предоставляет интеллектуальные рекомендации, а также сообщает вам, как вы должны расставить приоритеты в своих рекомендациях, чтобы вы могли сосредоточиться на устранении проблем, которые имеют максимальное влияние на бизнес.

7. И обозреватель Codeguru, и профайлер Codeguru могут быть интегрированы как часть ваших конвейеров CI/CD.

Что он поддерживает в настоящее время

1. Только Java-приложения. Не было никакого упоминания о дорожной карте для других языков.

2. Репозитории GitHub и AWS CodeCommit

Цены

В настоящее время доступно бесплатно в течение 3 месяцев

1. Codeguru Reviewer оценивается по номеру. строк кода, которые он сканирует (0,75 доллара США за 100 строк кода в месяц)

2. Профилировщик Codeguru оценивается на основе номера. часов, в течение которых он работает (0,005 доллара США за час выборки)

С некоторыми ценовыми сценариями можно ознакомиться здесь

Доступность

В настоящее время предварительный просмотр доступен только в некоторых регионах.

Мое мнение

Мне понравилось то, как позиционируется Amazon Codeguru, что сервис только дополняет людей, когда дело доходит до проверки кода, поскольку понимание и анализ бизнес-логики лучше оставить им, в то время как автоматизированные инструменты, подобные этим, могут сосредоточиться на обеспечении функциональной корректности.

Хотя сейчас он поддерживает только Java, это по-прежнему фантастический сервис, поскольку многие клиенты продолжают использовать Java для разработки в облаке AWS, и благодаря этому сервису вы получаете огромные преимущества в производительности и затратах.

Итак, что остается конкурентам?

Microsoft и Google еще не имеют его, или, по крайней мере, я еще не видел. Мое личное мнение заключается в том, что я ожидаю, что Microsoft выпустит что-то действительно хорошее или даже лучшее (для C#), учитывая, что они уже используют ML в своих инструментах разработки, и у них также есть свои собственные внутренние репозитории для запуска и у них есть GitHub :-)