Amazon Web Services 한국 블로그
닷넷 코어 이전을 위한 AWS Porting Assistant for .NET 개발자 도구 출시
닷넷(.NET) 진영의 애플리케이션 개발 추세는 .NET Core가 되었습니다. 마이크로소프트는 .NET 프레임워크 4.8을 끝으로 버그, 안정성 및 보안 관련 수정만 받겠다는 입장을 밝혔습니다. 향후 닷넷 개발을 지속하는 경우, 기존 닷넷 프레임워크 기반 애플리케이션을 .NET Core로 포팅하는 것을 고려해야 합니다. 닷넷 코어로 포팅하면, Linux 및 오픈 소스 혁신 활용, 애플리케이션 크기 조정 및 성능 개선, 라이선스 비용 지출 감소 등 추가 이익도 있습니다. 그러나 프레임워크 포팅은 상당한 수동 작업을 수반할 수 있습니다
오늘 발표된 Porting Assistant for .NET은 .NET Framework 애플리케이션을 분석한 후 Linux에서 실행되는 .NET Core로 포팅하는 데 도움이 되는 새로운 도구입니다. Porting Assistant for .NET은 애플리케이션 소스 코드와 퍼블릭 API 및 NuGet 패키지 종속성의 전체 트리를 모두 평가하여 .NET Core와 호환되지 않는 항목을 식별하고 호환되는 대안을 사용할 수 있는 경우 개발자에게 이에 대한 지침을 제공합니다. API 및 패키지 대안에 대한 제안 엔진은 어시스턴트가 누락 패키지 및 API의 사용량 패턴과 빈도를 학습함에 따라 지속적으로 개선되도록 설계되었습니다.
Porting Assistant for .NET은 호환되지 않는 API만이 아니라 패키지 종속성의 전체 트리를 평가할 수 있다는 점에서 다른 도구와 다릅니다. 또한 솔루션 파일을 시작점으로 사용하므로 개별 바이너리의 정보를 분석하고 집계할 필요 없이 다수의 프로젝트가 포함된 모놀리식 솔루션을 보다 쉽게 평가할 수 있습니다. 개발자는 이러한 기능을 포함한 다수의 기능을 사용하여 포팅 프로세스를 빠르게 시작할 수 있습니다.
애플리케이션 분석 및 포팅
Porting Assistant for .NET을 사용한 애플리케이션 포팅을 시작하는 방법은 간단합니다. 몇 가지 사전 요구 사항을 충족하면 됩니다. 먼저, .NET Core 3.1 SDK를 설치해야 합니다. 다음으로, 자격 증명 프로필이 필요합니다. 자격 증명 프로필은 AWS Command Line Interface(CLI)와 호환되지만 CLI가 사용되거나 필요한 것은 아닙니다. 자격 증명 프로필은 애플리케이션 및 이를 참조하는 퍼블릭 NuGet 패키지에 사용되는 퍼블릭 API 및 패키지(NuGet 및 핵심 Microsoft 패키지)의 호환성 정보를 수집하는 데 사용됩니다. 이러한 사전 요구 사항을 해결한 후 어시스턴트의 설치 프로그램을 다운로드하고 실행합니다.
어시스턴트가 설치되면 애플리케이션 소스 코드를 확인하고 [시작] 메뉴에서 Porting Assistant for .NET을 시작합니다. 이전에 일부 솔루션을 평가한 경우 [평가된 솔루션] 화면에서 이러한 솔루션을 보고 열어 중단한 지점에서 선택할 수 있습니다. 또는 홈 페이지에서 [시작하기]를 선택하여 애플리케이션 솔루션 파일의 평가를 시작할 수 있습니다.
사용할 자격 증명 프로필을 선택해야 합니다. 여기서 원격 측정 데이터 공유에 옵트인하도록 선택할 수도 있습니다. 이 데이터를 공유하면 시간이 지남에 따라 모든 사용자에게 제공되는 제안의 정확성이 추가로 개선되며 문제를 식별하는 데 도움이 됩니다. 그러므로 옵트인하는 것이 좋습니다.
[다음]을 클릭하고 원하는 솔루션을 파일을 찾아서 선택한 다음 [평가]를 클릭하여 분석을 시작합니다. 이 게시물에서는 오픈 소스 NopCommerce 프로젝트를 사용합니다.
분석이 완료되면 애플리케이션에 사용되는 호환되지 않는 패키지의 수, 사용되지만 호환되지 않는 API의 수 및 전체 이동성 점수를 포함한 전체 결과가 표시됩니다. 이 점수는 애플리케이션에 사용되지만 호환되지 않는 API의 수를 기준으로 애플리케이션을 .NET Core로 포팅하는 데 필요한 노력을 예측한 것입니다. 여러 애플리케이션을 포팅하는 경우 이 점수를 사용하여 가장 먼저 시작할 애플리케이션을 식별하고 우선 순위를 지정할 수 있습니다.
평가 개요를 자세히 검토하여 검색된 내용을 살펴봅시다. 솔루션 이름을 클릭하면 보다 자세한 대시보드로 이동합니다. 솔루션 파일에서 애플리케이션을 구성하는 프로젝트를 보고, 호환되지 않는 패키지 및 API 종속성의 각 수와 각 특정 프로젝트의 이동성 점수를 볼 수 있습니다. 이미 애플리케이션 포팅을 시작하고 평가를 다시 연 경우 각 프로젝트의 현재 포팅 상태도 나열됩니다.
[프로젝트] 탭에서 프로젝트를 선택하지 않았기 때문에 [프로젝트 참조], [NuGet 패키지], [API] 및 [소스 파일] 탭에 솔루션 전체 데이터가 표시되지만 원하는 경우 프로젝트를 먼저 선택하여 데이터 범위를 지정할 수 있습니다.
[프로젝트 참조] 탭에는 패키지 종속성이 그래픽 보기로 표시됩니다. 대부분의 종속성이 사용되는 위치를 볼 수 있는데 이 예에서는 Npp.Core, Npp.Services 및 Npp.Web.Framework 프로젝트가 여기에 해당합니다. 이 보기는 시작할 때 ‘효율성’의 측면에서 가장 먼저 시작할 위치를 결정하는 데 도움이 될 수 있습니다. 프로젝트를 선택하여 특정 종속성을 보다 분명히 볼 수도 있습니다.
[NuGet 패키지] 탭에는 호환되는 종속성 및 호환되지 않는 종속성이 표시되고 사용 가능한 대안이 제시됩니다. [API] 탭에는 호환되지 않는 API, 포함된 패키지 및 참조 횟수가 나열됩니다. [소스 파일]에는 애플리케이션의 프로젝트를 구성하는 모든 소스 파일이 나열되며 각 파일에서 찾을 수 있는 호환되지 않는 API 호출의 수가 표시됩니다. 소스 파일을 선택하면 호환되지 않는 API의 사용 위치와 업그레이드를 통해 문제를 해결할 수 있는 패키지 버전이 표시됩니다. 다른 패키지 버전으로의 업데이트를 통해 제안되는 대안이 없는 경우 소스 편집기를 열고 다른 API 또는 접근 방식을 사용하도록 코드를 업데이트해야 합니다. 다음은 Nop.Web 프로젝트에서 Autofac NuGet 패키지를 사용하는 DependencyRegistrar.cs에 대한 보고서입니다.
Nop.Core 프로젝트를 시작으로 애플리케이션 포팅을 시작합시다. 먼저, [프로젝트] 탭으로 돌아가서 프로젝트를 선택한 다음 [프로젝트 포팅]을 클릭합니다. 포팅 중에 도구를 사용하여 프로젝트 참조를 NuGet 패키지로 업데이트하고 프로젝트 파일 자체를 최신 .NET Core 형식으로 업데이트할 수 있습니다. 애플리케이션 솔루션 파일, 프로젝트 파일 및 소스 파일의 복사본을 만들거나 현재 위치에서 변경을 수행할 수 있습니다. 여기서는 복사본을 만들도록 선택했습니다.
[저장]을 클릭하면 애플리케이션 소스 코드가 선택한 위치로 복사되고 [프로젝트 포팅] 보기가 열립니다. 여기서 새 대상 프레임워크 버전(이 예에서는 netcoreapp3.1)과 업그레이드해야 하는 프로젝트에 대한 NuGet 종속성 목록을 설정할 수 있습니다. Porting Assistant for .NET은 호환되지 않는 각 패키지에 대해 가능한 버전 업그레이드 목록과 각 버전에서 호환되지 않는 상태로 유지되거나 추가로 호환되지 않게 될 호환되지 않는 API의 수를 보여줍니다. 여기서 선택한 패키지에는 차이가 없지만 이후 버전에서 호환되지 않는 API의 수가 증가하여 수동으로 소스 코드를 수정해야 하는 경우에는 최신 버전의 패키지로 업그레이드할지, 이전 버전을 유지할지 여부를 결정하는 데 이 지표가 도움이 됩니다.
버전을 선택하면 [사용되지 않는 API 호출] 필드에 패키지와 함께 코드 편집기에서 수정해야 하는 항목이 표시됩니다. 값을 클릭하면 사용되지 않는 호출이 요약됩니다.
각 패키지 종속성에 대해 이 프로세스를 계속하고 준비가 되면 [포팅]을 클릭하여 참조를 업데이트합니다. IDE를 사용하여 소스 파일로 이동하고 Porting Assistant for .NET의 소스 파일과 사용되지 않는 API 목록 보기를 참조로 사용하여 호환되지 않는 API 호출을 대체한 후 애플리케이션의 다른 프로젝트에도 유사한 프로세스를 따를 수 있습니다.
제안 엔진 개선
Porting Assistant for .NET의 제안 엔진은 시간이 지나면서 원격 측정 공유에 옵트인하는 고객이 늘어남에 따라 학습을 통해 개선된 결과를 제공하도록 설계되었습니다. 엔진의 데이터 모델은 수백만 개의 패키지 버전이 포함된 수십만 개의 고유한 패키지를 분석한 결과로, GitHub에서 제공됩니다. 결과의 정확성 및 완전성을 개선할 수 있도록 데이터를 기고해주십시오. 사용 설명서에서 데이터가 사용되는 방법에 대한 자세한 내용을 확인할 수 있습니다.
Porting Assistant for .NET은 무료이며 지금 바로 사용할 수 있습니다.