Поделиться через


Перенос приложений Java в приложения контейнеров Azure с помощью модернизации приложений GitHub Copilot

В этой статье вы узнаете, как использовать модернизацию приложений GitHub Copilot для оценки, исправления, контейнеризации и развертывания приложений Java в приложениях контейнеров Azure. Модернизация приложений GitHub Copilot — это помощник на основе искусственного интеллекта, который объединяет GitHub Copilot с инструментами с открытым кодом, такими как OpenRewrite, чтобы автоматизировать сложные этапы обновления и миграции.

Это средство поддерживает проекты Maven и Gradle, предназначено для обновлений между версиями Java 8, 11, 17 и 21, а также ориентировано на модернизацию приложений Spring Boot. Он предоставляет предопределенные задачи для распространенных сценариев миграции и включает рекомендации по запуску приложений в приложениях контейнеров Azure.

Необходимые условия

Замечание

Если вы используете Gradle, поддерживается только оболочка Gradle версии 5 или более поздней. Язык для конкретного домена Kotlin (DSL) не поддерживается. Функция My Tasks еще не поддерживается для IntelliJ IDEA.

Обновление версий JDK и платформы

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

Существует два способа обновления версии JDK. Оба способа используют область модернизации приложений GitHub Copilot, доступ к которой можно получить с боковой панели в Visual Studio Code.

  1. Выберите "Обновить среду выполнения" и "Платформы" в разделе QUICKSTART .
  2. Кроме того, запустите задачу "Обновленная среда выполнения Java " в разделе "ЗАДАЧИ — обновление задач ".

Снимок экрана: Visual Studio Code, на котором показана область модернизации приложения GitHub Copilot с выделенными параметрами обновления.

Чтобы обновить платформу Spring или зависимость, не относясь к Корпорации Майкрософт, выполните задачу Upgrade Java Framework в разделе "Задачи — обновление задач ".

Скриншот из Visual Studio Code, демонстрирующий панель модернизации приложения GitHub Copilot с выделенной задачей

Оценка готовности облака для приложений контейнеров Azure

Оценка определяет проблемы готовности облака в базе кода и оценивает их влияние. Он предоставляет конкретные рекомендации для приложений контейнеров Azure.

Настройка оценки

Перед выполнением оценки настройте ее, выбрав Настроить оценку в панели оценки модернизации приложений GitHub Copilot.

Снимок экрана: Visual Studio Code, на котором показана панель оценки модернизации приложений GitHub Copilot с выделенной кнопкой

Для приложений контейнеров Azure используйте следующую конфигурацию:

appcat:
- target:
    - azure-container-apps
  os:
    - linux
  mode: source-only

Запустите оценку

Чтобы выполнить оценку, выполните следующие действия.

  1. На боковой панели выберите область модернизации приложений GitHub Copilot, а затем выберите "Миграция в Azure " или "Выполнить оценку " в разделе "ОЦЕНКА ".

    Снимок экрана: Visual Studio Code, на котором показана панель модернизации приложения GitHub Copilot с выделенными кнопками

  2. Окно чата GitHub Copilot с режимом агента открывается для вызова оценчика модернизации. Выберите Продолжить для подтверждения.

  3. Специалист по модернизации сначала проверяет вашу локальную среду. Если AppCAT и его зависимости не установлены, агент помогает установить их. После установки агент вызывает AppCAT для оценки проекта. Этот шаг может занять несколько минут.

  4. Когда оценка завершится, оценщик модернизации создает классифицированный обзор проблем готовности облака в отчете об оценке.

    Снимок экрана: панель Visual Studio Code с отчетом об оценке.

Интерпретация отчета об оценке

Отчет об оценке предоставляет комплексные результаты анализа. Отчет состоит из нескольких ключевых разделов:

  • Сведения о приложении: основные сведения, включая версию Java, платформы, средства сборки, структуру проекта и целевую службу Azure.
  • Сводка по проблеме: обзор проблем миграции, классифицированных по домену, с процентами критических значений.
  • Подробный анализ , организованный на четыре вкладки:
    • Проблемы: список проблем, связанных с готовностью к облаку и обновлением Java, которые необходимо устранить.
    • Зависимости: все зависимости, упакованные на Java, находятся в приложении.
    • Технологии: технологии, сгруппированные по функциям, найденным в проанализированном приложении.
    • Аналитика: сведения о файлах и сведения, помогающие понять обнаруженные технологии.

Снимок экрана: Visual Studio Code, на котором показана панель мониторинга отчета об оценке модернизации приложений GitHub Copilot.

Отчет классифицирует проблемы по следующим уровням критическости:

Критичность Описание
Обязательный Проблемы, которые необходимо устранить для миграции в приложения контейнеров Azure.
Потенциал Проблемы, которые могут повлиять на миграцию и нуждаются в проверке.
Необязательно Проблемы с незначительным воздействием. Исправление их рекомендуется, но необязательно.

Скриншот Visual Studio Code, на котором показан список проблем приложения GitHub Copilot из отчета об оценке модернизации.

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

Скриншот Visual Studio Code, на котором представлена подробность проблемы в отчете об оценке модернизации приложений GitHub Copilot.

Управление отчетами об оценке

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

  • Импорт: выберите импорт в разделе оценки, чтобы импортировать отчеты из результатов Интерфейса командной строки AppCAT , экспортированного отчета или файла контекста приложения.
  • Экспорт: щелкните правой кнопкой мыши отчет об оценке и выберите "Экспорт ", чтобы предоставить общий доступ к отчетам другим пользователям.
  • Удалить: щелкните правой кнопкой мыши отчет об оценке и выберите "Удалить ", чтобы удалить отчет.

Устранение проблем с миграцией

После завершения оценки исправьте выявленные проблемы с помощью предопределенных или пользовательских задач. Модернизация приложений GitHub Copilot обеспечивает два подхода: предопределенные задачи, которые решают распространенные шаблоны миграции, а также пользовательские задачи, которые определяются для конкретных потребностей вашей организации.

Выберите агента "AppModernization"

Агент AppModernization обеспечивает оптимальный интерфейс для задач миграции и модернизации приложений Java. Чтобы выбрать его, выполните приведенные далее действия.

  1. Откройте окно чата Copilot, выбрав значок чата на панели действий.
  2. В окне чата найдите раскрывающееся меню селектора агента в верхней части поля ввода чата и выберите AppModernization из списка.

Снимок экрана Visual Studio Code с выпадающим списком выбора агента в окне чата.

Замечание

В Visual Studio Code модернизация приложений использует настраиваемый AppModernization агент с рекомендуемой моделью, выбранной по умолчанию для получения наилучших результатов. Вы можете изменить модель, выбрав "Настроить настраиваемые агенты " в меню "Агент".

При выборе агента AppModernization используйте простые запросы естественного языка для выполнения задач миграции:

  • Миграция базы данных: migrate to Managed Identity for Azure SQL Database
  • Миграция хранилища: migrate from AWS S3 to Azure Storage Blob
  • Миграция сообщений: migrate from RabbitMQ to Azure Service Bus
  • Управление секретами: migrate secrets to Azure Key Vault
  • Миграция проверки подлинности: migrate to Microsoft Entra ID authentication

Выполнение предопределенных задач миграции

Функция модернизации приложений GitHub Copilot поддерживает следующие предопределенные задачи для миграций приложений контейнеров Azure:

задачи Описание
Spring RabbitMQ to Azure Service Bus Преобразует Spring AMQP/JMS с RabbitMQ в служебную шину Azure, сохраняя шаблоны обмена сообщениями и обеспечивая безопасную проверку подлинности.
Управляемые удостоверения для миграции базы данных Подготавливает базу кода для проверки подлинности управляемого удостоверения в Azure SQL Server, Базе данных Azure для MySQL, Базы данных Azure для PostgreSQL, Azure Cosmos DB для API Cassandra и Azure Cosmos DB для MongoDB.
Управляемые удостоверения для переноса учетных данных Преобразует приложения Java для авторизации с помощью управляемого удостоверения Azure для служб обмена сообщениями, таких как Azure Event Hubs и Azure Service Bus, исключая необходимость использования строк подключения.
AWS S3 в хранилище объектов BLOB в Azure Преобразует код, взаимодействующий с AWS S3, в код, который работает с BLOB-объектом службы хранилища Azure, поддерживая ту же семантику.
Ведение журнала в локальный файл Преобразует ведение журнала на основе файлов в ведение журнала на основе консоли, что делает его готовым к интеграции с Azure Monitor.
Подключение локальных операций ввода-вывода к общей папке хранилища Azure Преобразует локальные операции чтения и записи файлов в единый путь подключения, что позволяет монтировать общие папки хранилища Azure в приложениях контейнеров Azure. Дополнительные сведения см. в разделе Подключение хранилища в Azure Container Apps.
Служба коммуникации Java Mail в Azure Преобразует приложения, которые отправляют почту через SMTP, чтобы использовать Службы коммуникации Azure, которые полностью совместимы с размещением контейнеров Azure.
Секреты и управление сертификатами в Azure Key Vault Перенос жестко закодированных секретов и локальных сертификатов TLS/mTLS в Azure Key Vault. Дополнительные сведения см. в статье "Управление секретами в приложениях контейнеров Azure".
Проверка подлинности пользователей с идентификатором Microsoft Entra Преобразует механизмы проверки подлинности локальных пользователей (например, на основе LDAP) в идентификатор Microsoft Entra для проверки подлинности. Дополнительные сведения см. в статье "Проверка подлинности и авторизация" в приложениях контейнеров Azure.
Диалект SQL: с Oracle на PostgreSQL Преобразует запросы SQL, типы данных и собственные функции Oracle в эквиваленты PostgreSQL для использования с Базой данных Azure для PostgreSQL.
AWS Secret Manager в Azure Key Vault Преобразует все аспекты управления секретами из AWS Secret Manager в Azure Key Vault.
Служебная шина ActiveMQ в Azure Преобразует производители сообщений ActiveMQ, потребители, фабрики подключений и взаимодействия с очередью и разделами в эквиваленты служебной шины Azure.
AWS SQS в служебную шину Azure Преобразует конструкции кода, относящиеся к SQS, в аналоги служебной шины Azure, сохраняя семантику обмена сообщениями.

Применение предопределенной задачи из оценки

  1. В отчете об оценке выберите нужное решение в области обнаруженной проблемы и выберите команду "Выполнить задачу".
  2. Откроется окно чата Copilot с режимом агента. Агент создает plan.md и progress.md, и вы можете просмотреть план перед продолжением.
  3. Для подтверждения и запуска процесса миграции вручную введите continue.
  4. Перед внесением изменений в код агент проверяет состояние системы управления версиями и проверяет новую ветвь.
  5. Повторно выберите или введите "Продолжить ", чтобы подтвердить использование инструмента и дождитесь завершения изменений кода.

Снимок экрана: панель

Проверка результатов проверки

После завершения изменения кода агент запускает цикл автоматической проверки, включающий следующие проверки:

  1. Validate-CVEs: обнаруживает распространенные уязвимости и уязвимости в текущих зависимостях и исправляет их.
  2. Build-Project: пытается устранить ошибки сборки.
  3. Проверка согласованности: анализирует код для функциональной согласованности.
  4. Запуск теста: выполняет модульные тесты и автоматически создает план для устранения сбоев.
  5. Валидация полноты: Обнаруживает элементы миграции, пропущенные при первоначальной миграции кода, и исправляет их.

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

Создание пользовательских задач

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

Создание настраиваемой задачи из фиксаций Git

  1. В боковой панели действий откройте панель расширения модернизации приложения GitHub Copilot, наведите указатель мыши на раздел TASKS, а затем выберите Создать настраиваемую задачу.

    Снимок экрана: Visual Studio Code, на котором показана область задач модернизации приложения GitHub Copilot с выделенной кнопкой

  2. В открывшемся task.md файле введите имя задачи и запрос задачи.

    Снимок экрана: Visual Studio Code, на котором показана задача миграции rabbitmq с выделенными полями

  3. Выберите "Добавить ссылки" и выберите фиксации Git во всплывающем диалоговом окне.

    Снимок экрана: Visual Studio Code, в котором показан раскрывающийся список

  4. Найдите и выберите соответствующую фиксацию, а затем нажмите кнопку "ОК".

    Снимок экрана диалогового окна Visual Studio Code с заголовком

  5. Нажмите Сохранить. Теперь ваша пользовательская задача отображается в разделе ЗАДАЧИ - Мои задачи.

    Снимок экрана: Visual Studio Code, на котором показан файл task.md с выделенной кнопкой

  1. task.md Откройте файл и введите имя задачи и запрос. Рассмотрим пример.

    • Имя задачи: Expose health endpoint via Spring Boot Actuator
    • Запрос задачи: You are a Spring Boot developer assistant, follow the Spring Boot Actuator documentation to add basic health endpoints for Azure Container Apps deployment.

    Снимок экрана Visual Studio Code, демонстрирующий задачу проверки конечной точки работоспособности с выделенными полями

  2. Выберите "Добавить ссылки", выберите "Внешние ссылки" и вставьте ссылку по URL-адресу. Снова нажмите кнопку "Добавить ссылки" , выберите "Текстовые файлы", а затем добавьте файл с дополнительными инструкциями.

  3. Нажмите кнопку "Сохранить", чтобы создать задачу.

    Снимок экрана: Visual Studio Code, на котором показан файл task.md с добавленными ссылками.

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

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

Чтобы предоставить общий доступ к пользовательской задаче, скопируйте папку из .github/appmod/custom-tasks и поделитесь ею с предполагаемым получателем. Получатель вставляет папку задач в каталог .github/appmod/custom-tasks и выбирает «Обновить задачу» в области расширения.

Выполнение настраиваемой задачи

Выберите "Выполнить " в нижней части файла задачи или найдите задачу в разделе "Задачи " Мои задачи " и выберите "Выполнить задачу". Окно чата Copilot открывается в режиме агента и автоматически запускает рабочий процесс миграции.

Снимок экрана Visual Studio Code, на котором показан раздел Tasks с выделенными опцией

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

Миграция из Oracle в PostgreSQL

Замечание

Этот раздел применяется только в том случае, если приложение использует базу данных Oracle. Если приложение не использует Oracle, перейдите к контейнеризации приложения.

Модернизация приложения GitHub Copilot предоставляет специализированную задачу миграции для сценария миграции из Oracle в базу данных Azure для PostgreSQL, который включает в себя:

Использование задачи миграции Oracle в PostgreSQL

  1. Запустите оценку приложения, как описано в статье "Оценка готовности облака для приложений контейнеров Azure".

  2. После завершения оценки просмотрите отчет. Если ваше приложение использует Oracle, отчет показывает проблему, связанную с Oracle Database Migration (Oracle), с решением по умолчанию Миграция с Oracle DB на PostgreSQL.

    Снимок экрана: Visual Studio Code, на котором показан отчет об оценке модернизации приложений GitHub Copilot для Oracle.

  3. При необходимости проверьте, присутствует ли coding_notes.md в папке .github/postgre-migrations/*/results/application_guidance/ . Если приложение модернизируется, оно ссылается на эти заметки для улучшения преобразования SQL. В противном случае обратитесь к группе базы данных, чтобы создать их с помощью расширения PostgreSQL Visual Studio Code.

  4. Выберите "Выполнить задачу ", чтобы выполнить миграцию.

    Снимок экрана Visual Studio Code, на котором показано выполнение задачи модернизации приложения с помощью GitHub Copilot для Oracle в PostgreSQL.

Контейнеризация приложения

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

  1. Убедитесь, что у вас установлен и запущен Docker.

  2. В Visual Studio Code откройте перенесенный проект.

  3. На боковой панели действий откройте панель расширения для модернизации приложений GitHub Copilot.

  4. В разделе "Задачи " откройте Java, а затем откройте "Задачи контейнеризации " и выберите "Приложение контейнеризации".

    Снимок экрана: Visual Studio Code, на котором показана задача

  5. Подтвердите каждое действие средства, нажав кнопку "Продолжить " при появлении запроса.

  6. Copilot проходит следующие действия:

    • Проверяет, установлен и запущен Docker.
    • Проверяет, готов ли код приложения к выполнению в контейнере.
    • Создает Dockerfile для каждого проекта.
    • Создает образы Docker для каждого проекта.
    • Создает сводку результатов контейнеризации.

Замечание

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

Дополнительные сведения о средствах контейнеризации см. в репозитории для поддержки контейнеризации на GitHub.

Развертывание в приложениях контейнеров Azure

После контейнеризации приложения разверните его в приложениях контейнеров Azure.

  1. В Visual Studio Code откройте перенесенный проект.

  2. На панели активности откройте раздел расширения для модернизации приложения GitHub Copilot.

  3. В разделе "Задачи " откройте Java, а затем откройте "Задачи развертывания " и выберите один из следующих вариантов развертывания:

    • Развертывание в существующей инфраструктуре Azure: Copilot запрашивает существующую группу ресурсов и развертывает соответствующие ресурсы.
    • Подготовка инфраструктуры и развертывание в Azure: Copilot создает новые ресурсы Azure и развертывает проект.

    Снимок экрана из Visual Studio Code, показывающий задачу «Подготовка инфраструктуры и развертывание в Azure» с выделенной кнопкой «Выполнить задачу».

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

  5. Copilot проходит следующие действия:

    • Создает файл markdown плана развертывания с целью развертывания, сведениями о проекте, архитектурой ресурсов Azure, ресурсами Azure и этапами выполнения.
    • Выполняет шаги, предусмотренные в плане.
    • Исправляет ошибки развертывания.
    • Создает сводный файл, объясняющий результаты развертывания.

Замечание

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

Лучшие практики после миграции

После переноса приложения Java в приложения контейнеров Azure рассмотрите следующие рекомендации.

  • Настройте пробы работоспособности: настройте пробы работоспособности , чтобы приложения контейнеров Azure могли отслеживать работоспособность приложения.
  • Настройка ведения журнала. Настройка ведения журнала на основе консоли для интеграции с Azure Monitor для централизованной агрегирования и анализа журналов.
  • Настройте правила масштабирования: настройте правила масштабирования на основе ТРАФИКА HTTP, ЦП, памяти или пользовательских метрик для обработки различных рабочих нагрузок.
  • Управление секретами. Используйтеуправление секретами контейнеров Azure или Azure Key Vault для безопасного хранения и доступа к конфиденциальным значениям конфигурации.
  • Настройте конвейеры CI/CD: автоматизация конвейера развертывания с помощью GitHub Actions или Azure Pipelines для непрерывной интеграции и доставки.
  • Включите зеленые развертывания: используйте редакции и разделение трафика для реализации развертываний без простоя.
  • Настройка пользовательских доменов: настройка пользовательских доменов и сертификатов для рабочего трафика.
  • Мониторинг с помощью метрик и оповещений: используйте метрики и оповещения для упреждающего мониторинга работоспособности и производительности приложений.
  • Включение избыточности зоны: настройка избыточности зоны для обеспечения высокой доступности в зонах доступности.