AWS 기술 블로그

.NET 앱 현대화를 위해 Visual Studio IDE에서 Amazon Q Developer를 이용한 에이전틱 코딩 경험 공유

많은 개발자들이 레거시 코드를 새로운 플랫폼 환경으로 이전하는 것을 꺼리는 데는 이유가 있습니다. 대부분의 개발자들도 동의하듯이, 코드를 작성하는 시간보다 기존 코드를 읽고 이해하는 시간이 더 많이 듭니다. 시간이 지나면 내가 작성한 코드조차 낯설게 보이는 것도 같은 맥락입니다. 결국, 과거의 코드를 이해하지 못한 채 (그것이 내가 작성했든 아니든) 해당 애플리케이션을 새로운 플랫폼으로 이전하는 것은 불가능합니다. 또한, 이는 많은 개발자들이 선호하는 작업도 아닙니다. 그래서 현업에서는 레거시 코드를 이전하는 것보다 새로 작성하는 것이 낫다는 이야기를 자주 듣게 됩니다.

누군가가 기존 코드를 분석하여 설명해주고, 더 나아가 적절한 코드까지 제안해준다면 어떨까요? 이런 상황이라면 과연 레거시 코드의 전환이 새로운 코드를 작성하는 것보다 더 어려운 작업일까요? 이러한 배경에서, AWS는 최근 개발 도구 측면에서의 변화에 따라 Amazon Q Developer announces a new agentic coding experience in the IDE 를 발표했습니다. 즉, 에이전틱 코딩 경험을 Visual Studio IDE 안에서 활용할 수 있는 방안을 제공합니다. 해당 기능은 AWS Toolkit with Amazon Q라는 확장 프로그램을 설치하여 쉽게 사용할 수 있습니다. 다양한 기능을 제공하고 있는데 그 중에서 레거시 .NET Framework 코드를 크로스플랫폼 .NET 환경으로 전환해줄 수 있는 기능의 관점에서 살펴보고자 합니다.

AWS Toolkit with Amazon Q가 필요합니다

먼저, Visual Studio IDE 환경에서 AWS Toolkit with Amazon Q 확장 프로그램을 설치하는 것이 필요합니다. AWS Toolkit with Amazon Q 확장 프로그램이 정상적으로 설치가 되었다면, Visual Studio IDE 환경에서 제공하는 확장 메뉴에 AWS Toolkit을 확인할 수 있습니다. 그 하위 메뉴에 “Getting Started”를 클릭하면, IAM Identity Center를 통해서 Amazon Q Developer의 권한이 있는 사용자를 생성하고 AWS transform과 Amazon Q Developer 서비스에서 해당 기능이 활성화된 이후 제공하는 “Start URL”을 통해 인증을 받으면, 사용하실 수 있습니다. (참고 – AWS Transform의 활성화, Amazon Q Developer를 시작하기)

그림 1. AWS Toolkit with Amazon Q 사용을 위한 인증 화면

.NET 애플리케이션 현대화 여정에 AWS Transform이 함께합니다.

AWS Transform을 이용하여 레거시 .NET Framework 기반 애플리케이션을 .NET 8으로 포팅할 수 있습니다. 로드된 솔루션의 오른쪽 마우스를 클릭하면, “Port project with AWS Transform”을 확인할 수 있습니다.

그림 2. “Port project with AWS Transform” 메뉴 화면

해당 기능을 클릭하면 팝업창을 통해서 .NET Target을 8.0 버전으로 선택하고, 기본 설정으로 “Exclude .NET Standard projects from the transformation plan”, “Transform MVC razor Views to ASP.NET Core Razor Views” 그리고, “Check the NuGet sources and get .NET compatible package versions”가 체크되어 있으며, 필요에 따라 체크 여부를 확인하고 진행하실 수 있습니다.

그림 3. 포팅 시 Target 버전 및 기본 설정 선택 화면

포팅 작업이 진행되는 동안 개발자의 입력은 추가적으로 필요하지 않습니다. 진행 사항은 AWS Transform Hub를 통해서 확인이 가능하고, 문제가 있다고 판단이 된다면 Output 탭에 “Show output from:”으로부터 “Amazon Q Language Client”를 선택하여 로그를 확인할 수 있습니다.

그림 4. AWS Transform Hub 화면

포팅 작업이 완료가 된다면, 변환 결과와 생성된 코드 차이점(code diffs)을 다운로드 받을 수 있는 데, 변환된 코드를 검토하고 해당 프로젝트에 적용하는 것은 개발자의 의도에 따라 진행이 되는 작업입니다.

그림 5. “View diffs”에서 변경된 코드 확인 화면

AWS Transform Hub의 “View diffs”메뉴를 통해서 변경된 코드를 확인할 수 있으며, 변경된 코드 전체 선택을 한 후에 모두 반영함으로써 현재 솔루션에 존재하는 관련된 코드를 변경하실 수 있습니다. 이후 개발자에 의한 빌드 및 테스트는 필요합니다.

Amazon Q Chat으로부터 새로운 인사이트를 얻을 수 있습니다

Visual Studio IDE가 제공하는 View 메뉴의 하위 메뉴로 존재하는 “Amazon Q Chat”를 선택하면, 보통 좌측에 채팅창을 확인할 수 있으며, 기본적으로 에이전틱 코딩 기능은 켜져 있습니다. 그리고, 모델은 Claude Sonnet 3.7과 4 버전을 선택에 따라 사용할 수 있습니다.

그림 6. Q Chat에서 제공하는 기본 MCP(Model Context Protocol) 기능 확인 화면

Q Chat의 에이전틱 코딩 기능을 통해 파일 시스템 작업과 시스템 명령 실행에서 Windows 명령 실행이 가능함에 따라 현재 솔루션 환경하에 존재하는 파일을 읽고, 임의의 부분 수정이 가능하며, 또한, Visual Studio가 제공하는 .NET 툴을 사용함으로써 스스로 빌드와 실행을 반복적으로 수행할 수 있습니다.
앞서서 AWS transform for .NET 기능을 이용하여 레거시 .NET Framework에서 .NET 8로 포팅한 프로젝트를 빌드하고 문제 여부를 확인할 수 있습니다. Q Chat을 이용하여 현재 프로젝트의 상태를 언급하고 AWS Transform for .NET의 과정에서 진행했던 변화된 코드의 리뷰(View Diffs)를 통해 얻게 된 정보를 기반으로 프롬프트를 작성하여 현재 프로젝트의 분석과 빌드 및 테스트를 진행할 수 있습니다.

그림 7. Q Chat에서 .NET 앱 현대화를 위한 프롬프트 작성 화면

그럼에도 불구하고 파일의 변경이나 프로그램의 실행에 대해서는 개발자의 허가가 있어야만 가능합니다. 그리고, 현재 환경은 Visual Studio IDE가 설치된 환경이기 때문에 Visual Studio에서 제공하는 명령형 툴을 에이전트가 사용하여 빌드 작업을 진행할 수 있습니다.

그림 8. Q Chat에서 특정 MCP 기능 사용을 위한 개발자 허가 및 진행 화면

진행 과정에서 명령창에 발생하는 빌드 오류는 동일한 컨텍스트에 존재하는 프롬프트의 입력으로 받아들이고 문제점을 인식하여 추가적으로 코드를 변경함으로써 성공적인 빌드를 이끕니다.

그림 9. 에이전트 루프로 진행되는 과정을 보여주는 화면

부족한 부분은 MCP(Model Context Protocol)를 통해 채워주세요

Amazon Q Developer는 MCP를 지원하여 외부 도구들과 연동이 가능합니다. 채팅창의 도구 아이콘을 통해 다양ƒ(한 MCP 서버를 구성하실 수 있습니다. 아래는 Playwright MCP 서버를 구성하는 예입니다.

그림 10. Playwright MCP 서버 구성 화면

Playwright MCP를 구성하셨다면 Q Chat을 통해 웹 애플리케이션을 실행할 때 해당 기능을 이용하여 자동화된 테스트를 요청할 수 있습니다. 예를 들어, 특정 페이지로 네비게이션을 하고 해당 페이지에서 제공하는 기능을 클릭함으로써 각 기능들이 정상적으로 동작하는 지 여부를 확인 요청합니다. 관련해서 아래의 이미지를 참고하실 수 있습니다.

그림 11. Playwright MCP 기능을 이용한 웹 애플리케이션 테스트 화면

Amazon Q Developer와 Visual Studio로 열어가는 .NET 앱 현대화를 경험해보세요

결론적으로 Amazon Q Developer의 Visual Studio 통합은 AI 기반 개발 도구의 새로운 가능성을 보여줍니다. 단순한 코드 자동완성을 넘어서 실제 개발 워크플로우에 깊이 통합된 AI 어시스턴트의 역할을 수행합니다.
특히 레거시 시스템의 현대화나 복잡한 오류 해결 과정에서 그 진가를 발휘하며, 개발자가 더 창의적이고 전략적인 업무에 집중할 수 있도록 도와줍니다.
물론 AI가 모든 것을 대체할 수는 없으며, 여전히 개발자의 판단과 검증이 핵심입니다. 하지만 적절히 활용한다면 개발 생산성과 코드 품질 향상에 상당한 도움이 될 것으로 판단됩니다.
.NET 개발 환경에서 Visual Studio를 주로 사용하는 개발자라면, 한 번쯤 경험해볼 만한 가치가 있는 도구라고 생각합니다.

Byung Chun Kang

Byung Chun Kang

강병천 솔루션즈 아키텍트는 오랜 기간 현업에서 다양한 분야의 윈도우 기반 애플리케이션에 대한 개발 및 디버깅을 전문적으로 다뤄온 경험을 가지고 있으며, 현재는 Microsoft 제품에서 수행하는 애플리케이션과 서비스들을 클라우드 환경으로 마이그레이션하는 분야에서 고객분들께 도움을 드리고 있습니다.