В мире разработки программного обеспечения проверка и утверждение кода являются важными процессами для обеспечения качества, безопасности и функциональности разрабатываемого программного обеспечения. Однако менеджеры, которым поручено контролировать эти критически важные процессы, часто сталкиваются с многочисленными проблемами, такими как следующие:
- Отсутствие технических знаний – Менеджеры могут не иметь глубокого технического понимания используемого языка программирования или не заниматься разработкой программного обеспечения в течение длительного периода. Это приводит к пробелу в знаниях, из-за которого им может быть сложно точно оценить влияние и обоснованность предлагаемых изменений кода.
- Временные ограничения – Проверка и утверждение кода может занять много времени, особенно в более крупных и сложных проектах. Менеджерам необходимо балансировать между тщательностью проверки и необходимостью соблюдать сроки проекта.
- Объем запросов на изменение – Обработка большого количества запросов на изменения – обычная задача для менеджеров, особенно если они курируют несколько команд и проектов. Подобно проблеме нехватки времени, менеджеры должны иметь возможность эффективно обрабатывать эти запросы, чтобы не замедлять ход проекта.
- Ручное усилие – Проверка кода требует от менеджеров ручных усилий, а отсутствие автоматизации может затруднить масштабирование процесса.
- Документация – Надлежащая документация процесса проверки и утверждения кода важна для прозрачности и подотчетности.
С развитием генеративного искусственного интеллекта (ИИ) менеджеры теперь могут использовать эту преобразующую технологию и интегрировать ее с набором инструментов и сервисов развертывания AWS, чтобы упростить процесс проверки и утверждения ранее невозможным образом. В этом посте мы исследуем решение, которое предлагает интегрированный сквозной рабочий процесс развертывания, включающий автоматический анализ и обобщение изменений вместе с функциональностью рабочего процесса утверждения. Мы используем Amazon Bedrock, полностью управляемый сервис, который делает базовые модели (FM) от ведущих стартапов в области искусственного интеллекта и Amazon доступными через API, поэтому вы можете выбирать из широкого спектра FM, чтобы найти модель, которая лучше всего подходит для вашего варианта использования. Благодаря бессерверному использованию Amazon Bedrock вы можете быстро приступить к работе, конфиденциально настроить FM с использованием собственных данных, а также интегрировать и развернуть их в своих приложениях с помощью инструментов AWS без необходимости управлять какой-либо инфраструктурой.
Обзор решения
На следующей диаграмме показана архитектура решения.
Рабочий процесс состоит из следующих этапов:
- Разработчик отправляет новые изменения кода в свой репозиторий кода (например, AWS CodeCommit), что автоматически запускает развертывание AWS CodePipeline.
- Код приложения проходит процесс сборки кода, выполняет сканирование уязвимостей и модульные тесты с использованием предпочитаемых вами инструментов.
- AWS CodeBuild извлекает репозиторий и выполняет команду git show, чтобы извлечь различия кода между текущей версией фиксации и предыдущей версией фиксации. Это создает построчный вывод, показывающий изменения кода, внесенные в эту версию.
- CodeBuild сохраняет выходные данные в таблицу Amazon DynamoDB с дополнительной справочной информацией:
- Идентификатор запуска CodePipeline
- Регион AWS
- Имя кодового конвейера
- Номер сборки CodeBuild
- Дата и время
- Положение дел
- Amazon DynamoDB Streams фиксирует изменения данных, внесенные в таблицу.
- Функция AWS Lambda запускается потоком DynamoDB для обработки полученной записи.
- Функция вызывает модель Anthropic Claude v2 на Amazon Bedrock через Amazon Bedrock. API-интерфейс InvokeModel вызов. Различия в коде вместе с подсказкой предоставляются в качестве входных данных для анализа модели, а сводка изменений кода возвращается в качестве выходных данных.
- Выходные данные модели сохраняются обратно в ту же таблицу DynamoDB.
- Менеджер уведомляется через Amazon Simple Email Service (Amazon SES) о сводке изменений кода и о том, что для развертывания требуется их одобрение.
- Менеджер просматривает электронное письмо и сообщает свое решение (одобрить или отклонить) вместе с комментариями по проверке через консоль CodePipeline.
- Решение об утверждении и комментарии к проверке фиксируются Amazon EventBridge, который запускает функцию Lambda для сохранения их обратно в DynamoDB.
- В случае одобрения конвейер развертывает код приложения с использованием предпочитаемых вами инструментов. В случае отклонения рабочий процесс завершается, и развертывание не продолжается дальше.
В следующих разделах вы развернете решение и проверите сквозной рабочий процесс.
Предварительные условия
Чтобы следовать инструкциям в этом решении, необходимы следующие предварительные условия:
Развертывание решения
Чтобы развернуть решение, выполните следующие действия:
- Выбирать Запустить стек для запуска стека CloudFormation в
us-east-1
: - Для Адрес электронной почты, введите адрес электронной почты, к которому у вас есть доступ. Сводка изменений кода будет отправлена на этот адрес электронной почты.
- Для идентификатор моделиоставьте значение по умолчанию anthropic.claude-v2, которое является моделью Anthropic Claude v2.
Развертывание шаблона займет около 4 минут.
- Когда вы получите электронное письмо от Amazon SES для подтверждения вашего адреса электронной почты, выберите предоставленную ссылку для авторизации вашего адреса электронной почты.
- Вы получите электронное письмо с заголовком «Сводка изменений» для первоначальной фиксации образца репозитория в CodeCommit.
- В консоли AWS CloudFormation перейдите к Выходы вкладка развернутого стека.
- Скопируйте значение RepoCloneURL. Это необходимо для доступа к репозиторию примеров кода.
Проверьте решение
Вы можете протестировать рабочий процесс от начала до конца, взяв на себя роль разработчика и внеся некоторые изменения в код. В CodeCommit для вас подготовлен набор примеров кода. Чтобы получить доступ к репозиторию CodeCommit, введите в своей IDE следующие команды:
Вы найдете следующую структуру каталогов для приложения AWS Cloud Development Kit (AWS CDK), которое создает функцию Lambda для выполнения пузырьковой сортировки строки целых чисел. Доступ к функции Lambda осуществляется через общедоступный URL-адрес.
Вы вносите три изменения в коды приложений.
- Чтобы улучшить функцию для поддержки как быстрой сортировки, так и алгоритма пузырьковой сортировки, возьмите параметр, позволяющий выбрать используемый алгоритм, и верните как используемый алгоритм, так и отсортированный массив на выходе, замените все содержимое
lambda/index.py
со следующим кодом:
- Чтобы уменьшить время ожидания функции с 10 минут до 5 секунд (поскольку мы не ожидаем, что функция будет работать дольше нескольких секунд), обновите строку 47 в
my_sample_project/my_sample_project_stack.py
следующее:
- Чтобы ограничить вызов функции с помощью IAM для дополнительной безопасности, обновите строку 56 в
my_sample_project/my_sample_project_stack.py
следующее:
- Нажмите на изменения кода, введя следующие команды:
Это запустит рабочий процесс развертывания CodePipeline с шагов 1–9, как описано в обзоре решения. При вызове модели Amazon Bedrock мы предоставили следующую подсказку: