Amazon Web Services 한국 블로그
AWS Transform for .NET 출시 – 대규모 닷넷 앱 현대화를 위한 최초의 에이전트 AI 서비스
저는 .NET 개발자로 경력을 시작했으며 지난 수십 년 동안 .NET이 발전하는 것을 지켜보았습니다. 많은 분들과 마찬가지로 저도 Windows에서만 실행되는 .NET Framework에서 여러 엔터프라이즈 애플리케이션을 개발했습니다. .NET Framework에서 처음으로 엔터프라이즈 애플리케이션을 구축했던 기억이 납니다. 이 프레임워크가 많은 도움이 되었음에도 불구하고 기술 환경은 크게 변화했습니다. 이제 Linux에서 실행할 수 있는 오픈 소스 및 크로스 플랫폼 버전의 .NET이 있으므로 .NET Framework를 기반으로 구축된 이러한 레거시 엔터프라이즈 애플리케이션을 포팅하고 현대화해야 합니다.
Linux로 포팅하면 얻을 수 있는 이점은 매우 큽니다. Windows 라이선스 비용이 절감되고, 향상된 성능으로 1.5~2배 더 빠르게 실행되고, 50% 더 뛰어난 확장성으로 증가하는 워크로드를 처리할 수 있기 때문에 애플리케이션 운영 비용이 40% 절감됩니다. 여러 애플리케이션을 포팅하는 데 도움을 준 경험에서 보면 그 노력은 그만한 가치가 있다고 말할 수 있습니다.
그러나 .NET Framework 애플리케이션을 크로스 플랫폼 .NET으로 포팅하는 작업은 노동 집약적이고 오류가 발생하기 쉬운 프로세스입니다. 코드베이스 분석, 비호환성 탐지, 코드 포팅 시 수정 사항 구현, 변경 사항 검증 등 여러 단계를 수행해야 합니다. 기업의 경우 포트폴리오에 수백 개의 .NET Framework 애플리케이션이 있을 수 있기 때문에 문제가 훨씬 더 복잡해집니다.
re:Invent 2024에서 저희는 .NET 애플리케이션을 대규모로 포팅하는 데 도움이 되는 .NET용 Amazon Q Developer 변환 기능을 간단히 소개했습니다. 이 경험은 대규모 변환을 위한 통합 웹 경험으로, 개별 프로젝트 및 솔루션 포팅을 위해 통합 개발 환경(IDE) 내에서 사용할 수 있습니다.
오늘 AWS Transform for .NET의 정식 출시를 발표하게 되어 기쁩니다. 지금까지 여러분의 소중한 피드백 및 제안을 반영했습니다. 또한 비공개 NuGet 패키지가 포함된 프로젝트를 지원하고, MVC(모델-뷰-컨트롤러) Razor 뷰를 ASP.NET Core Razor 뷰로 포팅하고, 포팅된 유닛 테스트를 실행하는 새로운 기능을 추가했습니다.
주요 새 기능에 대해서는 잠시 후에 자세히 설명하도록 하고, 먼저 AWS Transform for .NET의 두 가지 포팅 환경에 대해 간단히 살펴보겠습니다.
.NET 애플리케이션을 위한 대규모 포팅 경험
엔터프라이즈 디지털 트랜스포메이션은 일반적으로 여러 사업부에서 수백 개의 애플리케이션을 현대화하는 작업을 담당하는 중앙 팀에 의해 주도됩니다. 팀마다 서로 다른 애플리케이션 및 해당 리포지토리에 대한 소유권이 있습니다. 성공하려면 사업부 전반에 걸쳐 이러한 팀과 애플리케이션 소유자 및 개발자 간의 긴밀한 조율이 필요합니다. 이러한 대규모 현대화를 가속화하기 위해 AWS Transform for .NET은 팀이 소스 코드 리포지토리에 직접 연결하여 조직 전체의 여러 애플리케이션을 효율적으로 변환할 수 있는 웹 경험을 제공합니다. 전담 개발자의 주의가 필요한 일부 애플리케이션의 경우 동일한 에이전트 기능이 Visual Studio IDE용 확장 프로그램으로 개발자에게 제공됩니다.
먼저, AWS Transform for .NET의 웹 경험이 수백 개의 .NET 애플리케이션을 대규모로 포팅하는 데 어떻게 도움이 되는지 살펴보겠습니다.
AWS Transform for .NET의 웹 경험
AWS Transform의 웹 경험을 시작하기 위해 설명서에 설명된 단계를 사용하여 온보딩하고, 자격 증명을 사용하여 로그인하고, .NET 현대화를 위한 작업을 생성합니다.
AWS Transform for .NET은 에이전트가 대규모로 애플리케이션을 평가, 검색, 분석, 변환하기 위해 실행하는 일련의 단계인 작업 계획을 생성합니다. 그런 다음 제가 소스 코드 리포지토리에 연결하기 위한 커넥터를 설정하기를 기다립니다.
커넥터가 설정되면 AWS Transform이 제 계정의 리포지토리를 검색하기 시작합니다. 세 가지 주요 영역, 즉 리포지토리 종속성, 필수 비공개 패키지 및 타사 라이브러리, 리포지토리 내의 지원되는 프로젝트 유형에 초점을 맞춰 평가를 수행합니다.
이 평가를 기반으로 권장 변환 계획을 생성합니다. 이 계획에서는 최종 수정 날짜, 종속성 관계, 비공개 패키지 요구 사항, 지원되는 프로젝트 유형의 존재 여부에 따라 리포지토리가 정렬됩니다.
그런 다음 AWS Transform for .NET은 대상 브랜치 대상, 대상 .NET 버전, 변환할 리포지토리와 같은 특정 입력을 요청하여 변환 프로세스를 준비합니다.
변환할 리포지토리를 선택하는 방법은 권장 계획을 사용하는 옵션과 리포지토리를 수동으로 선택하여 변환 계획을 사용자 지정하는 옵션 두 가지가 있습니다. 리포지토리를 수동으로 선택하려면 UI를 사용하거나 리포지토리 매핑을 다운로드하고 사용자 지정 목록을 업로드할 수 있습니다.
AWS Transform for .NET은 애플리케이션 코드를 자동으로 포팅하고, 포팅된 코드를 빌드하고, 유닛 테스트를 실행하고, 포팅된 코드를 리포지토리의 새 브랜치에 커밋합니다. 수정된 파일, 테스트 결과, 나머지 작업에 대한 제안된 수정 사항을 포함한 포괄적인 변환 요약을 제공합니다.
웹 경험은 대규모 포팅을 가속화하는 데 도움이 되지만 일부 애플리케이션은 개발자의 주의가 필요할 수 있습니다. 이러한 경우에는 Visual Studio IDE에서 동일한 에이전트 기능을 사용할 수 있습니다.
AWS Transform for .NET의 Visual Studio IDE 경험
이제 AWS Transform for .NET이 Visual Studio 내에서 어떻게 작동하는지 살펴보겠습니다.
시작하기 위해 Visual Studio용 AWS Toolkit 확장 프로그램의 최신 버전을 설치하고 사전 요구 사항을 설정합니다.
.NET Framework 솔루션을 열면 Solution Explorer에 개별 프로젝트의 컨텍스트 메뉴 항목 Port project with AWS Transform이 표시됩니다.
대상 .NET 버전을 입력하고 에이전트가 자율적으로 코드를 변환하고, 유닛 테스트를 실행하고, 변환 요약을 생성하고, Linux 준비 상태를 검증할 수 있도록 승인하는 등 필요한 입력을 제공합니다.
에이전트가 변경한 코드를 로컬에서 검토하고 코드베이스를 계속 업데이트할 수 있습니다.
이제 AWS Transform for .NET에 추가된 주요 새 기능 몇 가지를 살펴보겠습니다.
비공개 NuGet 패키지 종속성이 있는 프로젝트 지원
미리 보기 기간 동안에는 공개 NuGet 패키지 종속성이 있는 프로젝트만 지원되었습니다. 정식 출시와 함께 이제 비공개 NuGet 패키지 종속성이 있는 프로젝트를 지원합니다. 이 기능은 미리 보기 기간 동안 가장 많이 요청된 기능 중 하나였습니다.
제가 정말 좋아하는 기능은 AWS Transform이 리포지토리 간 종속성을 탐지할 수 있다는 것입니다. 이는 비공개 NuGet 패키지의 소스 코드를 찾으면 해당 코드도 자동으로 변환합니다. 단, 소스 코드를 찾을 수 없는 경우 웹 경험에서 필요한 NuGet 패키지를 업로드할 수 있는 유연성을 제공합니다.
AWS Transform은 해결해야 하는 누락된 패키지 종속성을 표시합니다. 이 작업을 수행하는 방법에는 두 가지가 있습니다. 제공된 PowerShell 스크립트를 사용하여 패키지를 생성 및 업로드하거나 애플리케이션을 로컬로 빌드하고 솔루션 디렉터리의 packages 폴더에서 NuGet 패키지를 업로드할 수 있습니다.
누락된 NuGet 패키지를 업로드하면 AWS Transform이 종속성을 해결할 수 있습니다. NuGet 패키지의 .NET Framework 버전과 크로스 플랫폼 .NET 버전을 모두 제공하는 것이 가장 좋습니다. 크로스 플랫폼 .NET 버전을 사용할 수 없는 경우 AWS Transform이 어셈블리 참조로 추가하고 변환을 진행하려면 최소한 .NET Framework 버전이 필요합니다.
유닛 테스트 실행
미리 보기 기간 동안에는 .NET Framework에서 크로스 플랫폼 .NET으로 유닛 테스트를 포팅할 수 있었습니다. 정식 출시와 함께 변환 완료 후 유닛 테스트를 실행할 수 있는 기능도 추가했습니다.
변환이 완료되고 유닛 테스트가 실행되면 대시보드에서 결과를 볼 수 있고 각 개별 테스트 프로젝트 수준에서 테스트 상태를 볼 수 있습니다.
변환 가시성 및 요약
변환이 완료되면 JSON 형식의 상세 보고서를 다운로드할 수 있습니다. 이 보고서에는 변환된 리포지토리 목록, 각 리포지토리에 대한 세부 정보, 리포지토리 내 각 프로젝트에 대해 수행된 변환 작업의 상태가 나열되어 있습니다. 프로젝트 수준에서 자연어 변환 요약을 보고 프로젝트 수준 세분화로 AWS Transform 결과를 이해할 수 있습니다. 요약에서는 업데이트 개요와 함께 코드베이스의 주요 기술 변경 사항을 제공합니다.
기타 새 기능
이제 정식 출시와 함께 추가된 다른 새 기능을 간단히 살펴보겠습니다.
- UI 계층 포팅 지원 – 미리 보기 기간 동안에는 AWS Transform을 사용하여 MVC 애플리케이션의 비즈니스 로직 계층만 포팅할 수 있었고 UI 계층은 수동으로 포팅해야 했습니다. 정식 출시와 함께 이제 AWS Transform을 사용하여 MVC Razor 뷰를 ASP.NET Core Razor 뷰로 포팅할 수 있습니다.
- 커넥터 지원 확대 – 미리 보기 기간 동안에는 GitHub 리포지토리에만 연결할 수 있었습니다. 이제 정식 출시와 함께 GitHub, GitLab 및 Bitbucket 리포지토리에 연결할 수 있습니다.
- 리포지토리 간 종속성 – 변환할 리포지토리를 선택하면 변환할 종속 리포지토리가 자동으로 선택됩니다.
- 평가 보고서 다운로드 – 계정에서 식별된 리포지토리 및 해당 리포지토리에서 참조된 비공개 NuGet 패키지에 대한 상세 평가 보고서를 다운로드할 수 있습니다.
- 딥 링크가 포함된 이메일 알림 – 작업 상태가 완료됨 또는 중지됨으로 변경되면 이메일 알림을 받습니다. 이러한 알림에는 IDE에서의 검토 및 지속적 변환을 위해 변환된 코드 브랜치에 대한 딥 링크가 포함됩니다.
알아야 할 사항
다음은 몇 가지 알아야 할 추가 정보입니다.
- 리전 – AWS Transform for .NET은 현재 미국 동부(버지니아 북부) 및 유럽(프랑크푸르트) 리전에서 정식 버전으로 사용할 수 있습니다.
- 요금 – 현재 AWS Transform은 추가 요금이 부과되지 않습니다. AWS 계정에서 AWS Transform의 출력을 사용하여 생성하거나 계속 사용하는 모든 리소스는 표준 요금에 따라 요금이 청구됩니다. 한도 및 할당량은 설명서를 참조하세요.
- 지원되는 .NET 버전 – AWS Transform for .NET은 .NET Framework 버전 3.5 이상, .NET Core 3.1, .NET 5 이상 및 크로스 플랫폼 .NET 버전, .NET 8을 사용하여 작성된 애플리케이션의 변환을 지원합니다.
- 지원되는 애플리케이션 유형 – AWS Transform for .NET은 다음 유형의 C# 코드 프로젝트를 포팅할 수 있도록 지원합니다. 콘솔 애플리케이션, 클래스 라이브러리, 유닛 테스트, WebAPI, Windows Communication Foundation(WCF) 서비스, MVC, 단일 페이지 애플리케이션(SPA).
- 시작하기 – 시작하려면 AWS Transform for .NET 사용 설명서를 참조하세요.
- 웨비나 – Accelerate .NET Modernization with Agentic AI 웨비나에 참여하여 라이브 데모를 통해 AWS Transform for .NET을 경험해 보세요.
– Prasad
뉴스 블로그를 어떻게 생각하시나요? 이 1분짜리 설문조사에 참여해 주세요!
(이 설문조사는 외부 기업에서 호스트합니다. AWS는 AWS 개인정보 처리방침에 설명한 대로 사용자 정보를 처리합니다. AWS는 이 설문 조사를 통해 수집된 데이터를 소유하며 수집된 정보를 설문 응답자와 공유하지 않습니다)