Суперзарядка производительности в разработке микросервисов с помощью инструментов искусственного интеллекта

Supercharging microservice development with AI tools

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

Использование инструментов искусственного интеллекта (Chat GPT) в разработке API

Чтобы понять возможности ChatGPT, давайте рассмотрим практический пример. Нам поручено разработать REST API для управления личной идентификационной информацией (PII) пользователей. Процесс включает в себя:

  1. Создание объекта базы данных (Хранимая процедура)
  2. Репозиторий (Интерфейс для взаимодействия с базой данных и объект доступа к данным)
  3. Сервис (Уровень бизнес-логики)
  4. REST-контроллер (Экспонирование конечных точек)

Объекты базы данных

Чтобы создать хранимую процедуру, сначала предоставьте структуру таблицы ChatGPT. Затем предоставьте образец хранимой процедуры. Это позволит ChatGPT определить шаблон хранимой процедуры и создать новую процедуру для указанной таблицы. Ниже приведена предоставленная нами таблица:

Вот сгенерированная хранимая процедура:

Вот ссылка на диалог.

Репозиторий (Интерфейс для взаимодействия с базой данных и объект доступа к данным)

В рамках нашего проекта по созданию слоя репозитория мы использовали отдельный поток ChatGPT. Мы предоставили ему ранее упомянутую хранимую процедуру и определение таблицы. С использованием возможностей ChatGPT мы успешно создали:

  1. Сущность JPA.
  2. Комплексный класс Repository, объединяющий интерфейс и его реализацию.

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

Ниже приведены сгенерированные классы и код:

Интерфейс репозитория и его реализация

Модульные тесты

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

После внесения изменений мы предоставили ChatGPT обновленный код репозитория, запрашивая соответствующий модульный тест. Удивительно, ChatGPT предоставил нам идеальный функциональный модульный тест.

Для тех, кто интересуется подробным диалогом, вот ссылка на нашу ветку общения с ChatGPT.

Создание уровня бизнес-сервиса

Для углубленного изучения мы расширили наши требования до существующего образца сервиса ChatGPT, указав зависимости, такие как сущность JPA и интерфейс репозитория.

Инструмент искусственного интеллекта быстро сгенерировал классы. Интерфейс сервиса определял ясный контракт для получения данных PII пользователей на основе идентификаторов пользователя и кредита. Реализация, UserPIIDataServiceImpl, использовала репозиторий JPA для получения необходимых данных и, если они отсутствовали, возвращала пустой список – продуманное решение для предотвращения возможных исключений по нулевым указателям.

Модульный тест, UserPIIDataServiceImplTest, был комплексным. Используя Mockito для создания фиктивных объектов, тест проверял функциональность сервиса, устанавливая фиктивные данные, вызывая сервис и проверяя ожидаемые результаты.

Ниже приведены сгенерированные классы и код:

Интерфейс сервиса и его реализация

Модульные тесты

Вот ссылка на диалог для создания слоя сервиса.

Последний шаг: генерация REST-контроллера

После создания основных слоев настало время построить наш REST-контроллер. Для этого мы использовали ранее существующий образец REST-контроллера в качестве базового шаблона. Мы предоставили ChatGPT этот образец вместе с интерфейсом сервиса и необходимым объектом сущности.

В ответ ChatGPT сгенерировал RestController, который был адаптирован под наши требования. Ниже приведены сгенерированные классы и код:

Особенностью автоматически сгенерированного кода является наличие аннотаций, в частности ApiResponse и ApiOperation. Без вмешательства ChatGPT эти необходимые аннотации могли быть непреднамеренно пропущены, что может повлиять на ясность и качество документации API.

После генерации контроллера REST мы обратились за помощью к ChatGPT для создания модульных тестов. Изначально сгенерированные тесты были разработаны так, как будто они вызывали фактический API. Однако нашей целью было строго проверить код контроллера. После предоставления необходимых инструкций для сужения фокуса, ChatGPT успешно предоставил настроенный код модульного тестирования. Вот снимок экрана сгенерированного модульного теста:

Наконец, чтобы убедиться, что все работает, как ожидается, мы провели проверку конечной точки API с использованием Postman. Приятно, что API работал точно так, как ожидалось, демонстрируя практическую применимость и точность автоматически сгенерированного кода. Вот переписка из чата.

Приведенный выше пример может показаться простым, но мы также применяем этот подход для создания конечных точек API для вставки данных, соблюдая последовательность. Реальное преимущество проявляется, когда имеется дело с обширными таблицами, например, с 30 столбцами. Ручное определение параметров хранимой процедуры и создание сущностей с множеством атрибутов, каждый из которых требует точного сопоставления столбцов, может быть утомительным и подверженным ошибкам процессом. Однако использование инструментов, таких как ChatGPT или другие инструменты искусственного интеллекта, позволяет избежать этих повторяющихся задач. В результате разработчики могут создавать более эффективный, хорошо задокументированный код с меньшими усилиями.

Заключение

Технологический мир развивается стремительно. С появлением инструментов искусственного интеллекта, таких как ChatGPT, разработчики теперь имеют мощных союзников в своих программных начинаниях. Автоматизируя более утомительные и повторяющиеся задачи при разработке API, эти инструменты не только упрощают процесс, но и значительно повышают качество и точность кода. Опыт, описанный в этой статье, свидетельствует о том, что потенциал искусственного интеллекта для революции в разработке программного обеспечения — это не просто предположение, а реальность, которую мы начинаем принимать. По мере продвижения вперед такие сотрудничества между людьми и машинами несомненно переопределят область программной инженерии, открывая двери к новым возможностям и уровням эффективности, ранее считавшимся недостижимыми.