<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Migration | The .NET Blog</title><link>https://thedotnetblog.com/ru/tags/migration/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ru</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Tue, 05 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ru/tags/migration/index.xml" rel="self" type="application/rss+xml"/><item><title>Устранение Рутинной Работы Миграции с Помощью Agentic Platform Engineering</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/agentic-platform-engineering-migration-automation/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/agentic-platform-engineering-migration-automation/</guid><description>Git-Ape демонстрирует миграцию реального AWS Terraform-развёртывания в Azure Bicep — извлекая намерение развёртывания и переопределяя архитектуру вместо конвертации синтаксиса 1:1.</description><content:encoded>&lt;p&gt;&lt;em&gt;Этот пост был переведён автоматически. Для оригинальной версии &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/agentic-platform-engineering-migration-automation/"&gt;нажмите здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/all-things-azure/removing-the-monkey-work-of-migration-using-agentic-platform-engineering/"&gt;Removing the Monkey Work of Migration with Agentic Platform Engineering&lt;/a&gt; — руководство по Git-Ape (инструменту git для агентной инженерии платформ), который мигрирует реальный репозиторий AWS Terraform в Azure, фокусируясь на извлечении намерения вместо построчного преобразования.&lt;/p&gt;
&lt;h2 id="входные-данные-contoso-migration"&gt;Входные данные: contoso-migration&lt;/h2&gt;
&lt;p&gt;Источником является реальный проект Terraform (&lt;code&gt;contoso-migration&lt;/code&gt;), который разворачивает приложение Next.js на AWS — EC2 для вычислений, ALB для балансировки нагрузки, S3 для артефактов и ключи IAM для идентификации. Стоимость: ~34 $/месяц. Цель — не воспроизвести ту же инфраструктуру в Azure; речь идёт о том, чтобы понять, что развёртывание действительно пытается сделать, и воссоздать это с помощью нативных сервисов Azure.&lt;/p&gt;
&lt;h2 id="шаг-1-валидация-и-аутентификация"&gt;Шаг 1: Валидация и аутентификация&lt;/h2&gt;
&lt;p&gt;Git-Ape начинает с проверки всех необходимых инструментов CLI — &lt;code&gt;az&lt;/code&gt;, &lt;code&gt;aws&lt;/code&gt;, &lt;code&gt;gh&lt;/code&gt;, &lt;code&gt;jq&lt;/code&gt;, &lt;code&gt;git&lt;/code&gt; — и подтверждения активных сеансов аутентификации перед тем, как что-либо трогать. Никаких частичных запусков.&lt;/p&gt;
&lt;h2 id="шаг-2-извлечение-намерения"&gt;Шаг 2: Извлечение намерения&lt;/h2&gt;
&lt;p&gt;Агент читает весь исходный репозиторий через API GitHub и извлекает намерение развёртывания: среда выполнения (Node.js), тип вычислений, шаблон ingress, обработка артефактов, модель идентификации, сеть и мониторинг. Это ключевой шаг — строится семантическая модель того, что делает развёртывание, а не какие ключевые слова Terraform оно использует.&lt;/p&gt;
&lt;h2 id="шаг-3-сопоставление-сервисов"&gt;Шаг 3: Сопоставление сервисов&lt;/h2&gt;
&lt;p&gt;Сервисы AWS сопоставляются с эквивалентами Azure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;EC2 → App Service (Linux, Node 20 LTS)&lt;/li&gt;
&lt;li&gt;ALB → Встроенная балансировка нагрузки App Service&lt;/li&gt;
&lt;li&gt;Роли/ключи IAM → Managed Identity&lt;/li&gt;
&lt;li&gt;Terraform → Bicep + GitHub Actions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="шаг-4-агент-критик"&gt;Шаг 4: Агент-критик&lt;/h2&gt;
&lt;p&gt;Перед генерацией вывода запускается агент-критик, который обнаруживает две блокирующие проблемы:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Антипаттерн сборки при запуске&lt;/strong&gt; — исходный Terraform запускал &lt;code&gt;npm install &amp;amp;&amp;amp; npm run build&lt;/code&gt; на EC2 при старте. Исправление: собирать в CI, разворачивать готовый артефакт.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ненужный Blob Storage&lt;/strong&gt; — S3 использовался для промежуточного хранения артефактов, что можно устранить при правильном CI/CD. Агент-критик полностью удалил его.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="шаг-5-сгенерированный-вывод"&gt;Шаг 5: Сгенерированный вывод&lt;/h2&gt;
&lt;p&gt;Результатом являются ~80 строк Bicep вместо оригинальных 200+ строк Terraform. Агент создал новый репозиторий GitHub с &lt;code&gt;infra/main.bicep&lt;/code&gt; и &lt;code&gt;.github/workflows/deploy.yml&lt;/code&gt; и удалил все файлы, специфичные для AWS.&lt;/p&gt;
&lt;h2 id="сравнение-уровня-безопасности"&gt;Сравнение уровня безопасности&lt;/h2&gt;
&lt;p&gt;Миграция также принесла значительное улучшение безопасности:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;AWS оригинал&lt;/th&gt;
&lt;th&gt;Вывод Azure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Только HTTP&lt;/td&gt;
&lt;td&gt;Только HTTPS, TLS 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSH открыт для 0.0.0.0/0&lt;/td&gt;
&lt;td&gt;Нет SSH-экспозиции&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ключи доступа IAM&lt;/td&gt;
&lt;td&gt;OIDC + Managed Identity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Нет мониторинга&lt;/td&gt;
&lt;td&gt;Application Insights&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Стоимость: ~13 $/месяц против первоначальных 34 $/месяц.&lt;/p&gt;
&lt;h2 id="чем-это-отличается-от-конвертора-синтаксиса"&gt;Чем это отличается от конвертора синтаксиса&lt;/h2&gt;
&lt;p&gt;Шаг агента-критика — вот что отличает это от механического перевода. Он обнаружил паттерны, которые работали бы на AWS, но были бы неверны на Azure — и исправил их вместо того, чтобы воспроизводить. Вывод — это не «AWS в синтаксисе Azure»; это нативное для Azure развёртывание, которое достигает той же цели более чисто.&lt;/p&gt;
&lt;p&gt;Смотрите &lt;a href="https://devblogs.microsoft.com/all-things-azure/removing-the-monkey-work-of-migration-using-agentic-platform-engineering/"&gt;полное руководство&lt;/a&gt; для полной трассировки агента и сгенерированных файлов.&lt;/p&gt;</content:encoded></item><item><title>Оценка модернизации GitHub Copilot — лучший инструмент миграции, который вы ещё не используете</title><link>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ru/news/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/</guid><description>Расширение модернизации GitHub Copilot не просто предлагает изменения кода — оно создаёт полноценную оценку миграции с действенными проблемами, сравнением целей Azure и коллаборативным рабочим процессом. Вот почему документ оценки — ключ ко всему.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Этот пост был переведён автоматически. Оригинал можно прочитать &lt;a href="https://thedotnetblog.com/ru/news/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/"&gt;здесь&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Миграция устаревшего приложения .NET Framework на современный .NET — одна из тех задач, о которых все знают, что их нужно сделать, но никто не хочет начинать. Это никогда не просто «сменить целевой фреймворк». Это API, которые исчезли, пакеты, которых больше нет, модели хостинга, которые работают совершенно по-другому, и миллион мелких решений о том, что контейнеризировать, что переписать и что оставить как есть.&lt;/p&gt;
&lt;p&gt;Джеффри Фриц только что опубликовал &lt;a href="https://devblogs.microsoft.com/dotnet/your-migrations-source-of-truth-the-modernization-assessment/"&gt;глубокий разбор оценки модернизации GitHub Copilot&lt;/a&gt;, и честно? Это лучший инструмент миграции для .NET, который я видел. Не из-за генерации кода — это уже стандарт. Из-за документа оценки, который он создаёт.&lt;/p&gt;
&lt;h2 id="это-не-просто-движок-предложений-кода"&gt;Это не просто движок предложений кода&lt;/h2&gt;
&lt;p&gt;Расширение VS Code следует модели &lt;strong&gt;Оценить → Спланировать → Выполнить&lt;/strong&gt;. Фаза оценки анализирует всю кодовую базу и создаёт структурированный документ, фиксирующий всё: что нужно изменить, какие ресурсы Azure предоставить, какую модель развёртывания использовать. Всё последующее — инфраструктура как код, контейнеризация, манифесты развёртывания — вытекает из результатов оценки.&lt;/p&gt;
&lt;p&gt;Оценка хранится в &lt;code&gt;.github/modernize/assessment/&lt;/code&gt; вашего проекта. Каждый запуск создаёт независимый отчёт, поэтому вы накапливаете историю и можете отслеживать, как меняется ваша позиция по миграции по мере исправления проблем.&lt;/p&gt;
&lt;h2 id="два-способа-начать"&gt;Два способа начать&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Рекомендованная оценка&lt;/strong&gt; — быстрый путь. Выберите из курируемых доменов (Обновление Java/.NET, облачная готовность, безопасность) и получите значимые результаты без настройки конфигурации. Идеально для первого взгляда на состояние вашего приложения.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Пользовательская оценка&lt;/strong&gt; — прицельный путь. Настройте точно, что анализировать: целевой compute (App Service, AKS, Container Apps), целевую ОС, анализ контейнеризации. Выберите несколько целей Azure для сравнения подходов к миграции бок о бок.&lt;/p&gt;
&lt;p&gt;Это представление сравнения действительно полезно. Приложение с 3 обязательными проблемами для App Service может иметь 7 для AKS. Видеть оба варианта помогает принять решение по хостингу до того, как вы привяжетесь к пути миграции.&lt;/p&gt;
&lt;h2 id="разбивка-проблем-действенна"&gt;Разбивка проблем действенна&lt;/h2&gt;
&lt;p&gt;Каждая проблема сопровождается уровнем критичности:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Обязательная&lt;/strong&gt; — необходимо исправить, иначе миграция провалится&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Потенциальная&lt;/strong&gt; — может повлиять на миграцию, требует человеческого суждения&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Необязательная&lt;/strong&gt; — рекомендуемые улучшения, не блокируют миграцию&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;И каждая проблема ссылается на затронутые файлы и номера строк, предоставляет подробное описание того, что не так и почему это важно для вашей целевой платформы, даёт конкретные шаги по устранению (не просто «исправьте это») и включает ссылки на официальную документацию.&lt;/p&gt;
&lt;p&gt;Вы можете передать отдельные проблемы разработчикам, и у них есть всё необходимое для действий. В этом разница между инструментом, который говорит «есть проблема» и инструментом, который говорит, как её решить.&lt;/p&gt;
&lt;h2 id="охваченные-пути-обновления"&gt;Охваченные пути обновления&lt;/h2&gt;
&lt;p&gt;Для .NET конкретно:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework → .NET 10&lt;/li&gt;
&lt;li&gt;ASP.NET → ASP.NET Core&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Каждый путь обновления имеет правила обнаружения, которые знают, какие API были удалены, какие паттерны не имеют прямого эквивалента и какие проблемы безопасности требуют внимания.&lt;/p&gt;
&lt;p&gt;Для команд, управляющих несколькими приложениями, есть также CLI, поддерживающий пакетные оценки нескольких репозиториев — клонируйте все репо, оцените их все, получите отчёты по каждому приложению плюс агрегированное представление портфолио.&lt;/p&gt;
&lt;h2 id="моё-мнение"&gt;Моё мнение&lt;/h2&gt;
&lt;p&gt;Если вы сидите на устаревших приложениях .NET Framework (а давайте будем честны, большинство корпоративных команд именно так и делает), это &lt;em&gt;тот самый&lt;/em&gt; инструмент, с которого стоит начать. Только документ оценки стоит потраченного времени — он превращает расплывчатое «нам бы модернизировать» в конкретный, приоритизированный список рабочих элементов с чёткими путями вперёд.&lt;/p&gt;
&lt;p&gt;Коллаборативный рабочий процесс тоже продуман: экспортируйте оценки, поделитесь с командой, импортируйте без повторного запуска. Архитектурные ревью, где решения принимают не те, кто запускает инструменты? Учтено.&lt;/p&gt;
&lt;h2 id="подводя-итоги"&gt;Подводя итоги&lt;/h2&gt;
&lt;p&gt;Оценка модернизации GitHub Copilot превращает миграцию .NET из пугающего, неопределённого проекта в структурированный, отслеживаемый процесс. Начните с рекомендованной оценки, чтобы увидеть текущее состояние, затем используйте пользовательские оценки для сравнения целей Azure и построения плана миграции.&lt;/p&gt;
&lt;p&gt;Прочитайте &lt;a href="https://devblogs.microsoft.com/dotnet/your-migrations-source-of-truth-the-modernization-assessment/"&gt;полное руководство&lt;/a&gt; и установите &lt;a href="https://aka.ms/ghcp-appmod/vscode-ext"&gt;расширение VS Code&lt;/a&gt;, чтобы попробовать на своей кодовой базе.&lt;/p&gt;</content:encoded></item></channel></rss>