

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Q Developer를 사용하여 .NET 애플리케이션 트랜스포메이션
<a name="transform-dotnet-IDE"></a>

Amazon Q Developer는 생성형 AI 기반 리팩터링 워크플로를 통해 Windows 기반 .NET 애플리케이션을 Linux 호환 크로스 플랫폼 .NET 애플리케이션으로 포팅할 수 있습니다. 또한 Amazon Q를 사용하면 이전 버전의 크로스 플랫폼 .NET 애플리케이션을 최신 버전으로 업그레이드할 수 있습니다.

.NET 솔루션 또는 프로젝트를 트랜스포메이션하기 위해 Amazon Q는 코드베이스를 분석하고, 애플리케이션을 포팅하는 데 필요한 업데이트를 결정하고, 트랜스포메이션이 시작되기 전에 트랜스포메이션 계획을 생성합니다. 이 분석 중에 Amazon Q는 .NET 솔루션 또는 프로젝트를 트랜스포메이션 계획에서 볼 수 있는 코드 그룹으로 나눕니다. *코드 그룹*은 DLL(동적 링크 라이브러리) 또는 실행 파일과 같은 빌드 가능한 코드 단위를 함께 생성하는 프로젝트 및 모든 종속 항목입니다.

트랜스포메이션 중에 Amazon Q는 진행 상황을 모니터링할 수 있는 Transformation Hub에서 단계별 업데이트를 제공합니다. 애플리케이션을 트랜스포메이션한 후 Amazon Q는 제안된 변경 사항이 포함된 요약을 diff 보기에서 생성하여 변경 사항을 수락하기 전에 선택적으로 확인할 수 있습니다. 변경 사항을 수락하면 Amazon Q에서는 .NET 솔루션 또는 프로젝트를 현재 위치에서 업데이트합니다.

Amazon Q는 .NET 애플리케이션을 Linux로 포팅하는 네 가지 키 작업을 수행합니다.
+ **언어 버전 업그레이드** - 오래된 C\$1 버전을 Linux 호환 C\$1 버전으로 바꿉니다.
+ **.NET 프레임워크에서 크로스 플랫폼 .NET으로 마이그레이션** - Windows 종속 .NET 프레임워크에서 Linux와 호환되는 크로스 플랫폼 .NET으로 프로젝트 및 패키지를 마이그레이션합니다.
+ **Linux 호환성을 위한 코드 재작성** - 더 이상 사용되지 않거나 비효율적인 코드 구성 요소를 리팩터링하고 재작성합니다.
+ **Linux 호환성 준비 보고서 생성 **- Linux에서 코드를 빌드하고 실행하기 위해 사용자 개입이 필요한 개방형 작업의 경우 Amazon Q는 트랜스포메이션 후 애플리케이션을 구성하는 데 필요한 작업에 대한 자세한 보고서를 제공합니다.

Amazon Q가 .NET 트랜스포메이션을 수행하는 방법에 대한 자세한 내용은 [작동 방식](how-dotnet-transformation-works.md)을 참조하세요.

**Topics**
+ [할당량](#quotas-dotnet-transformation)
+ [Visual Studio에서 Amazon Q Developer를 사용하여 .NET 애플리케이션 포팅](port-dotnet-application.md)
+ [Amazon Q Developer가 .NET 애플리케이션을 트랜스포메이션하는 방법](how-dotnet-transformation-works.md)
+ [IDE에서 .NET 트랜스포메이션 문제 해결](troubleshooting-dotnet-transformation-IDE.md)

## 할당량
<a name="quotas-dotnet-transformation"></a>

IDE에서 Amazon Q를 사용한 .NET 트랜스포메이션은 다음 할당량을 유지합니다.
+ **작업당 코드 줄** - Amazon Q가 지정된 트랜스포메이션 작업에서 트랜스포메이션할 수 있는 최대 코드 줄 수입니다. 이는 .NET 트랜스포메이션에 대한 월별 총 한도이기도 합니다.
+ **동시 작업** - 동시에 실행할 수 있는 최대 트랜스포메이션 작업 수입니다. 이 할당량은 [Java 트랜스포메이션](transform-java.md)을 포함하여 IDE의 모든 트랜스포메이션에 적용됩니다.


| Resource | 할당량 | 
| --- | --- | 
| 작업당 코드 줄 | 코드 100,000줄 | 
| 동시 작업 |  사용자당 작업 1개  AWS 계정당 작업 2개  | 

# Visual Studio에서 Amazon Q Developer를 사용하여 .NET 애플리케이션 포팅
<a name="port-dotnet-application"></a>

Visual Studio의 Amazon Q Developer를 사용하여 Windows 기반 .NET 애플리케이션을 Linux 호환 크로스 플랫폼 .NET 애플리케이션으로 포팅하려면 다음 단계를 완료하세요.

## 1단계: 사전 조건
<a name="transform-dotnet-prerequisites"></a>

계속하기 전에 [IDE의 Amazon Q 설정](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-in-IDE.html) 단계를 완료했는지 확인하세요.

.NET 트랜스포메이션 작업을 시작하기 전에 애플리케이션에 다음 사전 조건이 충족되는지 확인합니다.
+ 애플리케이션에는 C\$1으로 작성된 .NET 프로젝트만 포함되어 있습니다.
+ 애플리케이션에는 Microsoft에서 작성한 NuGet 패키지 종속성만 있습니다.
+ 애플리케이션은 UTF-8 문자만 사용합니다. 애플리케이션이 non-UTF-8 문자를 사용하는 경우에도 Amazon Q는 코드를 트랜스포메이션하려고 시도합니다.
+ 애플리케이션이 IIS(인터넷 정보 서비스)에 종속되어 있는 경우 기본 IIS 구성만 사용됩니다.
+ Amazon Q는 선택한 프로젝트의 유형과 해당 종속성을 평가하여 코드 그룹을 생성합니다. 코드 그룹은 다음 프로젝트 유형만 가질 수 있습니다.
  + 콘솔 애플리케이션
  + 클래스 라이브러리 
  + 웹 API
  + WCF 서비스
  + MVC(모델 보기 컨트롤러) 및 SPA(단일 페이지 애플리케이션)의 비즈니스 로직 계층
  + 테스트 프로젝트

**참고**  
Amazon Q는 Razor 뷰 또는 WebForms ASPX 파일과 같은 UI 계층 구성 요소 트랜스포메이션을 지원하지 않습니다. Amazon Q가 솔루션 또는 프로젝트에서 UI 계층 구성 요소를 감지하면 UI 계층 구성 요소를 제외하여 부분 트랜스포메이션을 수행하며 대상 .NET 버전에서 코드를 빌드할 수 있도록 추가로 리팩터링해야 할 수 있습니다.

## 2단계: 애플리케이션 트랜스포메이션
<a name="transform-dotnet-app"></a>

.NET 솔루션 또는 프로젝트를 트랜스포메이션하려면 다음 절차를 완료하세요.

1. Visual Studio에서 트랜스포메이션하려는 C\$1 기반 솔루션 또는 프로젝트를 엽니다.

1. 편집기에서 C\$1 코드 파일을 엽니다.

1. **솔루션 탐색기**를 선택합니다.

1. 솔루션 탐색기에서 트랜스포메이션하려는 솔루션 또는 프로젝트를 마우스 오른쪽 버튼으로 클릭한 다음 **Amazon Q Developer로 포팅**을 선택합니다.

1. **Amazon Q Developer로 포팅** 창이 나타납니다.

   선택한 솔루션 또는 프로젝트는 **트랜스포메이션할 솔루션 또는 프로젝트 선택** 드롭다운 메뉴에서 선택됩니다. 메뉴를 확장하여 트랜스포메이션할 다른 솔루션 또는 프로젝트를 선택할 수 있습니다.

   **.NET 대상 선택** 드롭다운 메뉴에서 업그레이드할 .NET 버전을 선택합니다.

1. **확인**을 선택하여 트랜스포메이션을 시작합니다.

1. Amazon Q가 코드 트랜스포메이션을 시작합니다. 생성되는 트랜스포메이션 계획을 보고 애플리케이션을 트랜스포메이션하는 방법에 대한 세부 정보를 확인할 수 있습니다.

   트랜스포메이션 기간 동안 진행 상황을 모니터링할 수 있는 **Transformation Hub**가 열립니다. Amazon Q가 **작업 트랜스포메이션 시작 대기** 단계를 완료한 후 트랜스포메이션 기간 동안 프로젝트 또는 솔루션에서 벗어날 수 있습니다.

1. 트랜스포메이션이 완료되면 **Transformation Hub**로 이동하여 **diffs 보기**를 선택하여 diff 보기에서 Amazon Q의 제안된 변경 사항을 검토합니다.

1. Amazon Q의 변경 사항에 대한 세부 정보를 보려면 **코드 트랜스포메이션 요약 보기**를 선택합니다. 요약을 **.md로 다운로드**를 선택하여 트랜스포메이션 요약을 다운로드할 수도 있습니다.

   **코드 그룹** 테이블의 항목 중 Linux 포팅 상태에서 입력이 필요한 항목이 있는 경우 Linux에서 애플리케이션을 실행하려면 일부 파일을 수동으로 업데이트해야 합니다.

   1. **작업** 드롭다운 메뉴에서 **Linux 준비 보고서 다운로드**를 선택합니다.

   1. 애플리케이션이 Linux와 호환되기 전에 완료해야 하는 프로젝트 또는 솔루션을 변경하면 .csv 파일이 열립니다. 여기에는 업데이트해야 하는 프로젝트 및 파일, 업데이트할 항목에 대한 설명, 문제에 대한 설명이 포함됩니다. Linux 준비 문제를 해결하는 방법에 대한 아이디어는 **권장 사항** 열을 사용합니다.

1. 파일을 업데이트하려면 **작업** 드롭다운 메뉴에서 **변경 수락**을 선택합니다.

# Amazon Q Developer가 .NET 애플리케이션을 트랜스포메이션하는 방법
<a name="how-dotnet-transformation-works"></a>

Amazon Q Developer를 사용한 .NET 트랜스포메이션의 작동 방식에 대한 자세한 내용은 다음 섹션을 검토하세요.

## 애플리케이션 분석 및 트랜스포메이션 계획 생성
<a name="analyzing-app-generating-plan"></a>

트랜스포메이션이 시작되기 전에 Amazon Q는 로컬에서 코드를 빌드하여 트랜스포메이션을 위해 코드를 빌드하고 올바르게 구성했는지 확인합니다. 그런 다음 Amazon Q는 안전하고 암호화된 빌드 환경에 코드를 업로드하고 AWS, 코드베이스를 분석하고, 애플리케이션을 이식하는 데 필요한 업데이트를 결정합니다.

이 분석 중에 Amazon Q는 .NET 솔루션 또는 프로젝트를 코드 그룹으로 나눕니다. 코드 그룹은 DLL(동적 링크 라이브러리) 또는 실행 파일과 같은 빌드 가능한 코드 단위를 함께 생성하는 프로젝트 및 모든 종속 항목입니다. 트랜스포메이션할 모든 프로젝트 종속성을 선택하지 않은 경우에도 Amazon Q는 선택한 프로젝트를 빌드하는 데 필요한 종속성을 결정하고 트랜스포메이션합니다. 이렇게 하여 트랜스포메이션된 애플리케이션을 빌드하고 사용할 준비가 되도록 합니다.

코드를 분석한 후 Amazon Q는 코드 그룹 목록과 트랜스포메이션할 종속성을 포함하여 제안된 변경 사항을 간략하게 설명하는 트랜스포메이션 계획을 생성합니다.

## 애플리케이션 트랜스포메이션
<a name="transforming-app"></a>

트랜스포메이션을 시작하기 위해 Amazon Q는 코드를 보안 빌드 환경에 다시 빌드하여 원격으로 빌드할 수 있도록 합니다. 그러면 Amazon Q가 애플리케이션 포팅을 시작합니다. 이 작업은 가장 낮은 수준의 종속성부터 시작하여 높은 종속성으로 진행합니다. Amazon Q가 종속성을 포팅하는 데 문제가 발생하면 트랜스포메이션을 중지하고 오류의 원인에 대한 정보를 제공합니다.

트랜스포메이션에는 애플리케이션에 대한 다음 업데이트가 포함됩니다.
+ 오래된 코드 C\$1 버전을 Linux 호환 C\$1 버전으로 교체
+ 다음을 포함하여 .NET 프레임워크를 크로스 플랫폼 .NET으로 업그레이드 
  + 패키지, 라이브러리 및 API 식별 및 반복 교체
  + NuGet 패키지 및 API 업그레이드 및 교체
  + 크로스 플랫폼 런타임으로 전환
  + 미들웨어 설정 및 런타임 구성 업데이트
  + 프라이빗 또는 서드 파티 패키지 교체 
  + IIS 및 WCF 구성 요소 처리 
  + 빌드 오류 디버깅
+ 기존 코드를 포팅하기 위해 더 이상 사용되지 않고 비효율적인 코드 리팩터링 및 재작성을 포함하여 Linux 호환성을 위한 코드 재작성 

## 트랜스포메이션 요약 검토 및 변경 사항 수락
<a name="reviewing-summary-accepting-changes"></a>

트랜스포메이션이 완료되면 Amazon Q는 변경된 파일 수, 업데이트된 패키지, 변경된 API 등 애플리케이션에 대해 제안된 업데이트에 대한 정보가 포함된 트랜스포메이션 요약을 제공합니다. 영향을 받는 파일 또는 파일 부분과 빌드 시도 중에 발생한 오류를 포함하여 실패한 트랜스포메이션에 플래그를 지정합니다. 빌드 로그가 포함된 빌드 요약을 보고 변경 사항에 대해 자세히 알아볼 수도 있습니다.

또한 트랜스포메이션 요약은 Linux 포팅 상태를 제공합니다. 이 상태는 애플리케이션 Linux를 호환하기 위해 추가 사용자 입력이 필요한지 여부를 나타냅니다. 코드 그룹의 항목 중 하나라도 사용자의 입력이 필요한 경우 Amazon Q가 빌드 시 해결할 수 없는 Windows별 고려 사항이 포함된 Linux 준비 보고서를 다운로드합니다. 코드 그룹 또는 파일에 대한 입력이 필요하면 보고서를 검토하여 여전히 수행해야 하는 변경 유형에 대한 세부 정보를 확인하세요. 해당하는 경우 코드를 업데이트하는 방법에 대한 권장 사항도 함께 확인하세요. Linux에서 애플리케이션을 실행하려면 먼저 이러한 변경을 수동으로 수행해야 합니다.

파일의 현재 위치 업데이트로 수락하기 전에 Amazon Q가 diff 보기에서 수행한 제안된 변경 사항을 검토할 수 있습니다. 파일을 업데이트하고 Linux 준비 보고서의 항목을 해결하면 애플리케이션이 크로스 플랫폼 .NET에서 실행될 준비가 된 것입니다.

# IDE에서 .NET 트랜스포메이션 문제 해결
<a name="troubleshooting-dotnet-transformation-IDE"></a>

다음 섹션을 사용하여 Amazon Q Developer의 IDE에서 .NET 트랜스포메이션과 관련된 일반적인 문제를 해결합니다.

## 작업이 진행 중인지 알 수 있는 방법은 무엇인가요?
<a name="job-progressing"></a>

Amazon Q가 Transformation Hub의 단계에서 오랜 시간을 소비하는 것처럼 보이면, 출력 로그에서 작업이 여전히 활성 상태인지 확인할 수 있습니다. 진단 메시지가 생성되는 경우 작업은 여전히 활성 상태입니다.

출력을 확인하려면 Visual Studio에서 **출력** 탭을 선택합니다. **출력 표시 출처:** 메뉴에서 **Amazon Q Language Client**를 선택합니다.

다음 스크린샷은 Amazon Q가 트랜스포메이션 중에 생성하는 출력의 예를 보여줍니다.

![\[Amazon Q Language Client의 출력을 보여주는 Amazon Q Developer Code Transformation Hub의 스크린샷입니다.\]](http://docs.aws.amazon.com/ko_kr/amazonq/latest/qdeveloper-ug/images/code-transform-troubleshoot4.png)


## 일부 프로젝트가 트랜스포메이션을 위해 선택되지 않은 이유는 무엇인가요?
<a name="projects-not-selected"></a>

Amazon Q는 지원되는 프로젝트 유형만 C\$1 언어로 트랜스포메이션할 수 있습니다. 현재 Amazon Q는 VB.NET 또는 F\$1 언어로 작성된 UI 계층 구성 요소 또는 프로젝트 포팅을 지원하지 않습니다. 지원되는 프로젝트 유형 및 .NET 프로젝트를 트랜스포메이션하기 위한 기타 사전 조건 목록은 [1단계: 사전 조건](port-dotnet-application.md#transform-dotnet-prerequisites) 섹션을 참조하세요.

## 프로젝트 또는 솔루션이 트랜스포메이션되지 않는 경우 지원을 받으려면 어떻게 해야 하나요?
<a name="get-support"></a>

문제를 직접 해결할 수 없는 경우 또는 AWS 계정 팀에 문의하여 지원 지원 사례를 제출할 수 있습니다.

지원을 받으려면가 실패한 작업을 조사할 AWS 수 있도록 변환 작업 ID를 제공합니다. 트랜스포메이션 작업 ID를 찾으려면 Visual Studio에서 **출력** 탭을 선택합니다. **출력 표시 출처:** 메뉴에서 **Amazon Q Language Client**를 선택합니다.

## 방화벽이 트랜스포메이션 작업을 방해하지 않도록 하려면 어떻게 해야 하나요?
<a name="firewall-inteference"></a>

조직에서 방화벽을 사용하는 경우 Visual Studio의 트랜스포메이션을 방해할 수 있습니다. Node.js에서 보안 검사를 일시적으로 비활성화하여 트랜스포메이션 실행을 방해하는 문제를 해결하거나 테스트할 수 있습니다.

환경 변수 `NODE_TLS_REJECT_UNAUTHORIZED`는 중요한 보안 검사를 제어합니다. `NODE_TLS_REJECT_UNAUTHORIZED`를 "0"으로 설정하면 Node.js의 무단 TLS/SSL 인증서 거부가 비활성화됩니다. 이는 다음을 의미합니다.
+ 자체 서명 인증서가 수락됩니다.
+ 만료된 인증서가 허용됩니다.
+ 호스트 이름이 일치하지 않는 인증서가 허용됩니다.
+ 다른 인증서 검증 오류가 무시됩니다.

프록시가 자체 인증서를 사용하는 경우 `NODE_TLS_REJECT_UNAUTHORIZED`를 비활성화하는 대신 다음 환경 변수를 설정할 수 있습니다.

```
NODE_OPTIONS = —use-openssl-ca
NODE_EXTRA_CA_CERTS = Path/To/Corporate/Certs
```

그렇지 않으면 프록시에서 `NODE_TLS_REJECT_UNAUTHORIZED`를 비활성화하는 데 사용하는 CA 인증서를 지정해야 합니다.

**Windows에서 NODE\$1TLS\$1REJECT\$1UNAUTHORIZED를 비활성화하려면:**

1. 시작 메뉴를 열고 **환경 변수**를 검색합니다.

1. **시스템 환경 변수 편집**을 선택합니다.

1. **시스템 속성** 창에서 **환경 변수**를 선택합니다.

1. **시스템 변수**에서 **새로 만들기**를 선택합니다.

1. **변수 이름**을 NODE\$1TLS\$1REJECT\$1UNAUTHORIZED로 설정하고 **변수 값**을 0으로 설정합니다.

1. **확인**을 선택하여 변경 사항을 저장합니다.

1. Visual Studio를 다시 시작합니다.