News

Меньше строк больше толку. Код-ревью. Как проверить код и инфраструктуру приложения при помощи сервисов Amazon CodeGuru и Amazon DevOps Guru

News | 30.12.2021

В данной статье речь пойдет о двух сервисах Amazon: CodeGuru и DevOps Guru. Оба сервиса используют разработанные Amazon модели машинного обучения, которые помогают разработчикам и DevOps инженерам быстро и эффективно выявить проблемы в коде приложения и в инфраструктуре, соответственно. На данный момент сервис  Amazon CodeGuru поддерживает высокоуровневые языки Java и Рython. Amazon CodeGuru выявляет критические проблемы, уязвимости безопасности, ошибки в разработке приложений. Amazone DevOps Guru анализирует инфраструктуру, выявляет аномальное поведение приложения. В статье вы узнаете, как встроить сервисы в рабочий процесс на базе облака Amazon. Как работать с рекомендациями по улучшению качества кода в консоль AWS. 

Содержание:

Для чего проводят кодревью или рецензирование чистоты кода?
Ошибки, которые обычно обрабатывают анализаторы кода
Где чаще всего появляются уязвимости?
Что такое дорогие или ценные строки кода?
Какие типы программ осуществляют автоматический анализ кода?
Как с помощью искусственного интеллекта и одной программы найти самые дорогие строки кода?
Как встроить Amazon CodeGuru непосредственно в существующий рабочий процесс?
2 революционные функции машинного анализа качества кода от Амазон Reviewer и Profiler
Рекомендации сгенерированные по улучшению качества кода Amazone CodeGuru
Инструмент анализа инфраструктуры Amazone DevOps Guru. 
Как работает DevOps Guru? Что такое единая панель мониторинга уязвимостей IT инфраструктуры от DevOps Guru?
Преимущества работы infrastructure review от DevOps Guru

Amazone CodeGuru. Для чего проводят кодревью или рецензирование чистоты кода?

Чистота написания кода. Быстрая проверка строк, которые дают наибольшую нагрузку на ЦП

Написание совершенного кода всегда резонирует с дедлайном по релизу. Пишешь много, чтобы все учесть, если что забыл клиент и этого нет в базовом дизайне структуры, накидываешь сверху, часто не дописав логику предыдущей строки … В конце вычитываешь, удаляешь лишнее, можешь что-то пропустить…

Впопыхах некорректно описанная инфраструктура приложения начинает подвисать. В следствии уязвимости ПО, не правильной обработки данных, получаемых извне происходит порча данных, сбой программы или даже всей системы...

Существует множество платных и бесплатных программ анализаторов кода. В основе большинства лежит статический анализ, без реального исполнения кода. (статический анализатор кода)

Ошибки, которые обычно обрабатывают анализаторы кода это: 

  1. Переполнение буфера в стеке, куче и области статических данных
  2. Уязвимость данных. Ввод пользователям данных, которые не может оптимизировать интерпретатор или компилятор, генерирующий машинный код, как подсистема программирования
  3. Некорректное форматирование при недостаточном контроле параметров
  4. Уязвимости синхронизации в многозадачной среде

Где чаще всего появляются уязвимости?

Практики инспекции кода показывают, что на поверхности лежат именно проблемы именно в гонке за быстрым результатом, как следствие утечке памяти, переполнением стека. В большинстве языков высокого уровня типа  C++, C#, Delphi, Fortran, Java,  PHP, Ruby, Python резервирование «лишнего» места в буфере происходит в результате размещения данных в стеке процесса. Когда в одном месте смешиваются  данные программы с управляющими данными.

Что такое дорогие или ценные строки кода?

При исполнении кода дорогими строчками можно считать те части программы, которые в исполнении забирают наибольшую производительность центрального процессора и съедают больше необходимой памяти. С точки зрения уязвимости системы, отсутствие строчек, определяющих четкие границы копирования, закрытых строчек, защищающих систему от не контролируемых запросов OpenSSL (Heartbleed), является одним из наиболее популярных способов взлома компьютерных систем. Так переполнение в стековом кадре, позволяют злоумышленнику загрузить и выполнить произвольный машинный код .

Поддельный код будет действовать от имени вашей программы. Под вашей учетной записью он может повредить критически важные файлы операционной системы. Последствия могут быть различны: от отказа в обслуживании одному пользователю до компрометации секретной информации, потери обслуживания или повреждения систем тысяч пользователей. Несмотря на важность ревью кода, ручной анализ кода проверка на читаемость, интегрируемость так же очень дорог относительно времени и усилий. Также обратная связь по поводу code style от людей воспринимается как “придирки” и может создать не очень позитивную атмосферу в команде.

Какие типы программ осуществляют автоматический анализ кода?

  • Линтеры – утилиты для проверки кода на соответствие стандартам и спецификациям языка
  • Дебагеры – анализаторы качества кода  и поведения программы (GDB) SonarJava
  • Профайлеры или инструменты для отладки использования излишков памяти, использования ресурсов (Valgrind)
  • Анализаторы безопасности (SQL-инъекций) (Sqlmap)

Как с помощью искусственного интеллекта и одного сервиса найти самые дорогие строки кода?

Проверьте код и инфраструктуру приложения на соответствие высоким требованиям производительности при помощи сервиса Amazon CodeGuru. Сервиса использует готовые модели машинного обучения (ML), упрощает анализ.

Amazon CodeGuru (Code Review)

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

Amazon CodeGuru от облачного гиганта Amazon Web Services (AWS)  advanced Consulting Partner  Softprom представляет интеллектуальные рекомендации по повышению качества кода и выявлению самых дорогих строк  в приложении. На текущий момент сервис поддерживает высокоуровневые языки Java (javascript анализатор кода)  и анализатор кода Рython.

2 революционные функции машинного анализа качества кода от Амазон 

Сервис Amazon CodeGuru использует возможности машинного обучения в двух следующих функциях: Reviewer и Profiler

Amazon CodeGuru помогает нам управлять более чем 300 микросервисами , повышать качества кода и производительность приложений.

Рич Бенер, СTO ConnectCareHero

Как встроить Amazon CodeGuru непосредственно в существующий рабочий процесс? 

схема поиска самых дорогостоящих линий кода

СodeGuru Reviewer предоставляет рекомендации по качеству статического кода. Использует машинное обучение и автоматизированный анализ для выявления критических проблем, уязвимостей безопасности и трудно выявляемых ошибок во время разработки приложений и предоставляет рекомендации по повышению качества кода. 

CodeGuru Profiler предоставляет рекомендации по производительности приложения во время выполнения (динамического кода). Помогает DevOps находить самые дорогие строки кода приложения, понять поведение своих приложений во время выполнения, выявлять и устранять неэффективность кода, повышать производительность и значительно снижать затраты на вычисления.

Рекомендации сгенерированные с помощью Amazone CodeGuru 

 

Рекомендации сгенерированные по улучшению качества кода Amazone CodeguruНайдите самые дорогие строки кода и улучшите качество кода.

Инструмент анализа инфраструктуры Amazone DevOps Guru

Amazon DevOps Guru упрощает выявление аномального поведения приложений, критических проблем, которые могут вызвать потенциальные сбои или сбои в обслуживании, например, задержки, рост количества ошибок, нехватку ресурсов и т. д. Сервис использует модели машинного обучения, разработанные на основе многолетнего опыта работы Amazon.com и AWS.

Amazone DevOps веб-процессинг аномального поведения приложения

Amazone Profiler панель производительности приложений в реальном времени

Как работает DevOps Guru?

Когда DevOps Guru определяет критическую проблему, он автоматически отправляет предупреждение и предоставляет сводку связанных аномалий, а также наиболее вероятную основную причину в контексте того где и когда возникла проблема.

Amazone Profiler процесс выявления аномального поведения приложения в рабочей среде

Внедрение интеграции Amazon DevOps Guru заняло всего несколько минут, а интеграция с тысячами наших стеков AWS CloudFormation прошла очень легко. Amazon DevOps Guru предоставил информацию, которая помогла нам сфокусировать нашу дорожную карту инфраструктуры

Джаред Уильямс, тимлид DevOps на 605.tv.

Что такое единая панель мониторинга уязвимостей IT инфраструктуры от DevOps Guru?

По возможности DevOps Guru также предоставляет рекомендации по устранению проблемы. DevOps Guru автоматически анализирует данные из ваших работающих приложений в AWS и предоставляет единую панель мониторинга для визуализации проблем. Консоль анализатора кода DevOps Guru. 

Единая панель мониторинга уязвимостей IT инфраструктуры от DevOps Guru

Благодаря аналитической информации, которую предоставляет Amazon DevOps Guru, наши команды могут быстро находят источник проблемы. У нас нет потребности начинать все с нуля, чтобы найти первопричину ошибки. Мои ИТ-команды значительно сократили среднее время восстановления (MTTR)

Анчал Гупта, СTO HCL Technologies

Преимущества работы Infrastructure review от DevOps Guru

С DevOps Guru можно начать работу без трудоемкой настройки и опыта построения моделей машинного обучения. 

Преимущества работы c DevOps Guru

Автоматическое обнаружение проблем

Используя машинное обучение, Amazon DevOps Guru собирает и автоматически анализирует данные, такие как метрики приложений, журналы, события и выявляет поведение, которые отклоняется от нормального режима работы. Это позволяет автоматически обнаруживать и предупреждать о текущих проблемах и рисках, таких как исчерпание свободных ресурсов, внесенные изменения в код и конфигурацию приложения, которые могут привести к перебоям в работе, утечке памяти, недостаточной вычислительной мощности или чрезмерному использованию I/O базы данных

Быстрое решение проблем с помощью аналитики на основе машинного обучения

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

Простое масштабирование и обеспечение бесперебойности работы приложения

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

Уменьшение количества уведомлений об аномалиях

Amazon DevOps Guru помогает разработчикам и DevOps инженерам уменьшить количество второстепенных уведомлений и предоставляет возможность сосредоточится только на первоочередных, используя предварительно подготовленные ML модели, для выявления из всего потока уведомлений наиболее критические. Amazon DevOps Guru помогает избавиться от необходимости анализа и мониторинга второстепенных показателей, а сосредоточиться на коренных причинах возникших проблем и подходах по их устранению.

 

Сделаем общий вывод. По нашей точки зрения тандем Amazon CodeGuru и Amazon DevOps Guru - это идеальное решение спора между разработчиками и Devops инженерами  при возникновении проблем в работе приложения. Amazon CodeGuru позволяет выявить "дорогие" строки кода, а Amazon DevOps Guru эффективность работы инфраструктуры приложения.

i DevOps Guru проанализирует вашу инфраструктуру, выявит аномальное поведение приложений. В CodeGuru  вы осуществите контроль разработки получая рекомендации искусственного интеллекта по улучшения качества кода даже если не знаете язык, на котором написана программа. Используйте машинный интеллект  для поиска критических проблем в коде. Снижайте эксплуатационные расходы приложения до 50%, внедряя рекомендации, по оптимизации дорогих строк кода. 

Эффективное и безопасное программирование - это автоматизации код-ревью на основе CodeGuru. Используя анализатор кода на базе сервиса AWS вы получите рекомендации по улучшение качества кода на основе лучших практик AWS:

  • Внедрите передовые практики кодирования. Оптимизируете архитектуру конструкции кода путем разбивки на страницы
  • Улучшите производительность и доступность через оптимизацию интерфейсов API
  • Поправите построение логики в хардкод (hard cod), работая с комментариями по исходным строкам (метод Source LOC), анализируя кластеры
  • Найдете не закрытые ошибки типа «присвоить значение "0"», исключение переменных
  • Выявите проблемы с реализацией параллелизма в многопоточном коде
  • Проверите строки обрабатывающие входные данные на предмет ответа на неожиданные запросы
  • Укажите строки кода, которые кажутся дублированными или достаточно похожими для рефакторинга
  • По средствам CodeGuru Reviewer вы найдете строки кода, в которых могут происходить утечки ресурсов
  • Найдете незащищенные секреты в коде, интегрировавшись с AWS Secrets Manager (детектор секретов)
  • Обнаружите проблемы в коде, которые представляют угрозу его безопасности
  • Закроете строки кода, в которых может происходить утечка конфиденциальной информации

Amazon CodeGuru позволил нам в несколько раз ускорить проверку тысяч строк кода. Мы быстро находим и устраняем уязвимости в системе безопасности в соответствовать передовым практикам кодирования.

Боб Ли, СTO ConnectCareHero

Amazon CodeGuru Reviewer, основанный на машинном обучении, помог нам автоматизировать проверку кода и снизить нагрузку на рецензентов кода. Мы легко интегрировали Amazon CodeGuru Reviewer в наш существующий процесс разработки. Кроме того, мы изучили лучшие практики кодирования, о которых ранее не знали.

Казума Охара, технический директор RENGA

Автоматизация инспекции кода для ревьюера это идеальное решение быстро дать фидбек по пул-реквесту (мерж-реквесту) перед присоединением новой функции к основной ветке кода. Каждый кусок кода должен увеличивать ценность продукта. 

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

Мы поможем вам сэкономить время, ресурсы и деньги и создать безопасную отказоустойчивую среду для успешного функционирования вашего бизнеса. Команда сертифицированных технических специалистов познакомит вас с разнообразием сервисов AWS, поможет в развертывании новой и миграции существующей инфраструктуры в AWS. Softprom — Advanced Consulting Partner сети Amazon Web Services (AWS).

Как правильно проводить code review

По этой теме читайте также:

Готовые Machine Learning (ML) решения для приложений от Amazon Web Services (AWS) улучшают бизнес.
[Видеообзор] Amazon Personalize — как построить e-commerce ИТ-сервисы как на amazon.com?
Запись сессии AWS Tech Talk: Internet of Things 
Как настроить удаленную работу? Решение от AWS. Поможем бесплатно запустить.
Миграция базы данных в облако AWS
Развертывание e-commerce в AWS
Автомасштабирование в AWS