개요
GitHub Copilot 현대화Copilot CLI 플러그 인을 사용하여 .NET 애플리케이션을 Azure 마이그레이션하는 방법을 알아봅니다.
플러그 인은 .NET 애플리케이션을 평가하고 실행 가능한 현대화 계획을 생성하며 터미널에서 마이그레이션을 수행하는 자율 다중 에이전트 워크플로를 제공합니다. Azure 마이그레이션, CVE 취약성 수정 및 애플리케이션 다시 작업을 지원합니다.
비고
GitHub Copilot CLI는 GitHub Copilot Pro, GitHub Copilot Pro+, GitHub Copilot Business 및 GitHub Copilot Enterprise 계획에서 사용할 수 있습니다. 조직을 통해 Copilot를 수신하는 경우 관리자는 조직 설정에서 Copilot CLI 정책을 사용하도록 설정해야 합니다.
수행 가능한 작업
| Capability | Description |
|---|---|
| Azure로의 .NET 마이그레이션 | NuGet 보안 감사 및 ASP.NET-Azure 마이그레이션을 포함하여 .NET 애플리케이션을 평가하고 Azure 서비스(Service Bus, Azure SQL, Redis, Key Vault, Application Insights, 관리 ID)로 마이그레이션 |
| CVE 및 취약성 수정 | NuGet 종속성에서 CVE 취약성 검사 및 수정 |
| 애플리케이션 다시 설계 | 모놀리식-마이크로 서비스 분해, 레거시 UI 현대화 및 모듈 추출과 같은 구조적 재작성 |
필수 조건
- Copilot CLI를 설치합니다.
- GitHub Copilot 구독입니다. Copilot 플랜을 참조하세요.
플러그 인 설치
터미널에서
copilot실행하여 COPILOT CLI를 시작합니다.copilot마켓플레이스를 추가하고 플러그 인을 설치합니다.
copilot plugin marketplace add microsoft/github-copilot-modernization copilot plugin install github-copilot-modernization@github-copilot-modernization설치된 플러그 인을 나열하여 플러그 인이 설치되어 있는지 확인합니다.
/plugin list목록에
github-copilot-modernization:modernize이(가) 표시되어야 합니다.
플러그 인 업데이트
새 버전을 사용할 수 있을 때 플러그 인을 업데이트하려면 다음을 실행합니다.
copilot plugin update github-copilot-modernization@github-copilot-modernization
현대화 작업 시작
옵션 1: 에이전트로 직접 시작
.NET 프로젝트 폴더로 이동하고 현대화 에이전트를 사용하여 COPILOT CLI를 시작합니다.
cd /path/to/your/dotnet-project
copilot --agent=github-copilot-modernization:modernize
옵션 2: Copilot CLI 내부에서 에이전트 선택
Copilot CLI 세션에 이미 있는 경우 /agent 명령을 사용하여 현대화 에이전트로 전환합니다.
/agent
목록에서 github-copilot-modernization:modernize을(를) 선택합니다.
Important
현대화 프롬프트를 실행하기 전에 github-copilot-modernization:modernize 에이전트를 선택해야 합니다. 이 에이전트를 선택하지 않으면 Copilot CLI는 플러그 인에서 제공하는 전체 다중 에이전트 오케스트레이션, 엔터프라이즈 플레이북 지원 및 특수 마이그레이션 기능을 사용할 수 없는 기본 에이전트를 사용합니다.
현대화 프롬프트 실행
에이전트가 활성화되면 자연어로 원하는 내용을 설명합니다.
copilot> modernize my application
또는 더 구체적으로 설명합니다.
copilot> modernize my .NET application for Azure
copilot> migrate this app from local SQL Server to Azure SQL Database
copilot> fix CVE vulnerabilities in my project
무인 실행의 경우 플래그를 사용합니다.--allow-all
copilot --agent=github-copilot-modernization:modernize --allow-all
워크플로 작동 방식
플러그 인은 자동으로 실행되는 3단계 워크플로를 사용합니다. 각 단계를 수동으로 호출할 필요가 없습니다. 오케스트레이터는 요청에 따라 라우팅을 처리합니다.
1단계: 평가
- .NET 프로젝트 구조를 검색하고 적절한 분석 도구를 사용합니다.
- 종속성, 프레임워크 및 버전을 분석합니다.
- 현대화 기회 및 위험을 식별합니다.
- 결과를
.github/modernize/assessment/에 저장합니다.
2단계: 계획
- 평가 결과 및 엔터프라이즈 플레이북 제약 조건(있는 경우)을 로드합니다.
- 실행 가능한 작업 계획을 생성합니다.
- 계획을
.github/modernize/<app>/plan.md및tasks.json에 저장합니다.
3단계: 실행
- 태스크 유형에 따라 작업을 특수 실행기 에이전트로 라우팅합니다.
- 각 실행기는 마이그레이션 패턴에 대한 기술 자료를 쿼리합니다.
- 실패 시 자동 재시도를 사용하여 진행률을 모니터링합니다.
- 검토를 위해 자세한 작업별 커밋을 만듭니다.
오케스트레이터는 의도에 따라 여러 진입점을 지원합니다.
| Workflow | 활성화되는 경우 | 어떻게 되나요? |
|---|---|---|
| 광범위한 의도 | "내 애플리케이션 현대화" | 전체 평가 → 계획 → 실행 파이프라인 |
| 특정 작업 | SQL Server에서 Azure SQL로 마이그레이션 | 평가를 건너뛰고 계획 → 실행으로 바로 넘어갑니다. |
| 기존 계획 실행 | "계획 실행" | 평가 및 계획을 건너뛰고 기존 계획을 실행합니다. |
| 헤드리스 |
--allow-all를 사용한 무인 실행 |
사용자 프롬프트가 없는 광범위한 의도와 동일 |
엔터프라이즈 현대화 정책 정의
조직은 플레이북을 통해 현대화 의도(대상 아키텍처, 업그레이드 표준 및 규정 준수 정책)를 워크플로에 직접 포함할 수 있습니다. 이 방법을 사용하면 생성된 모든 계획이 각 결정을 수동으로 검토하지 않고 엔터프라이즈 표준과 일치하도록 보장합니다.
플레이북 설정
Markdown 파일을 .github/modernize/playbook/ 프로젝트의 디렉터리에 배치합니다. 계획 단계에서는 이 폴더의 모든 .md 파일을 자동으로 읽고 작업 계획을 생성하기 전에 평가 결과와 병합합니다.
Important
플레이북 제약 조건은 평가 권장 사항을 재정의합니다. 플레이북에서 "메시징에 Azure Service Bus 사용"을 지정하는 경우 평가에서 발견한 내용에 관계없이 해당 선택이 우선합니다.
플레이북에서 정의할 수 있는 항목
| 정책 유형 | 예제 |
|---|---|
| 대상 아키텍처 | 컴퓨팅 서비스(App Service, AKS, Container Apps), 데이터베이스 선택(Azure SQL, Cosmos DB), 메시징 플랫폼(Service Bus, Event Hubs) |
| 업그레이드 기준 | 대상 .NET 버전, 프레임워크 마이그레이션 경로 |
| 가드레일 | 금지된 기술, 보안 요구 사항, 규정 준수 제약 조건, 인증 표준 |
| 코딩 표준 | 명명 규칙, 인증 패턴, 로깅 프레임워크 |
| 마이그레이션 전략 | 범위의 경계, 6R 분류 선호도(리호스트 대 리팩터링 대 리아키텍트), 단계적 추진 전략 |
예제 플레이북
다음 위치에서 파일을 만듭니다..github/modernize/playbook/enterprise-standards.md
# Enterprise Modernization Standards
## Target Architecture
- Use Azure Container Apps for microservices deployments
- Use Azure Service Bus for all asynchronous messaging
- Use Azure SQL Database for relational data
- Use Azure Blob Storage for file storage
## Security & Compliance
- All services must authenticate using Managed Identity — no connection strings or passwords in code
- All public endpoints must be behind Azure Front Door
## Guardrails
- Do not use Azure Functions for long-running processes
- All infrastructure must be defined in Bicep
고정된 명명 또는 구조가 필요하지 않습니다. 오케스트레이터는 해당 콘텐츠에서 각 파일의 용도를 유추합니다.
내장 기본값
플레이북이 없으면 플러그 인은 다음과 같은 합리적인 기본값을 적용합니다.
- Azure: 인증용 관리 ID, 관계형 데이터에 대한 관리되는 데이터베이스 서비스입니다.
- 메시징: 온-프레미스 메시징 → Azure Service Bus.
- 인프라: 기본값은 Bicep.
일반적인 시나리오
Azure 마이그레이션
copilot --agent=github-copilot-modernization:modernize
copilot> modernize my .NET application for Azure
로컬 SQL Server에서 Azure SQL로 마이그레이션
copilot --agent=github-copilot-modernization:modernize
copilot> migrate this app from local SQL Server to Azure SQL Database with managed identity
파일 I/O에서 Azure Blob Storage로 마이그레이션
copilot --agent=github-copilot-modernization:modernize
copilot> migrate this app from local file I/O to Azure Blob Storage
CVE 및 보안 수정
copilot --agent=github-copilot-modernization:modernize
copilot> fix CVE vulnerabilities in my project
애플리케이션 다시 설계
copilot --agent=github-copilot-modernization:modernize
copilot> rearchitect my monolithic application into microservices
전체 현대화
copilot --agent=github-copilot-modernization:modernize
copilot> modernize my application
문제 해결
플러그 인을 찾을 수 없음
# Verify marketplace is added
copilot plugin marketplace list
# Re-add marketplace if needed
copilot plugin marketplace add microsoft/github-copilot-modernization
# Reinstall
copilot plugin install github-copilot-modernization@github-copilot-modernization
평가 실패: 애플리케이션을 찾을 수 없음
- 프로젝트 루트에
.csproj또는.sln파일이 있는지 확인합니다. - COPILOT CLI를 시작하기 전에 올바른 디렉터리에 있는지 확인합니다.
MCP 서버 문제
플러그 인은 해당 구성에 정의된 MCP 서버를 사용합니다. 문제가 발생하면 플러그 인을 다시 설치하여 MCP 구성을 다시 설정합니다.
피드백 제공
GitHub Copilot CLI 피드백 양식 사용하여 GITHUB COPILOT CLI에 대한 피드백을 공유합니다.
Reference
.NET