.NET 11 Preview 3: 개발자 리뷰
모든 팀은 유산 .NET 앱을 가진 경우 업그레이드가 어려운 부분이 아님을 알고 있습니다. 타겟 프레임워크를 변경하는 건 오후의 일입니다. 어려운 부분은 코드베이스가 수년 동안 조용히 의존하게 된 모든 것입니다: Windows에서만 실행되는 종속성, 아무도 완전히 기억하지 못하는 데이터 흐름, 잘못 바라보면 생산에서 깨지는 구성 요소입니다. 그것이 현대화가 항상 머물러 있는 작업이며, 어쨌든 그것을 하라는 압박이 계속해서 증가하고 있습니다.
세션은 큰 원형에 고정된 Forrester 데이터를 통해 시작됩니다: IT 리더의 94%가 앱 현대화를 향후 6~12개월의 투자 우선순위로 꼽았습니다. 슬라이드의 프레임이 그 숫자 아래에 있는 엔지니어의 현실로 축소되면서, "하지만, 당신은 기술적 부채와 씨름합니다."라는 긴장감이 이 세션이 존재하는 이유입니다.

그것은 또한 Build 2026 브레이크아웃에서 Jeff Fritz, Nish Anil, Hazem El-Hammamy가 AI 에이전트를 대적시킨 작업인데, Using AI tools to teach old apps new tricks (BRK220)입니다. 세션은 GitHub Copilot의 현대화 가능성을 보여주며, 엔지니어들이 두려워하는 작업들: 큰 코드베이스 읽기, 종속성 매핑, 업그레이드 계획, 안전한 확장 리팩토링을 맡습니다. 문서 생성 및 처리라는 우리가 작업을 수행하는 레이어의 관점에서 이를 보았으며, 가장 유익한 교훈은 에이전트가 드러내는 것이 아니라 단지 다시 쓴다는 것입니다.
흥미로운 부분은 종속성 맵입니다
Jeff의 세션 부분은 실제 유산 앱에 에이전트를 배치하여 스스로 풀어내도록 하는 실용적인 .NET 개발자 관점입니다. 코드베이스를 분석하고 데이터 흐름을 수작업으로 추적하는 것은 상대적으로 느리고 실수하기 쉬운 작업이기 때문에 현대화가 여러 과제를 이루는 단계입니다. 에이전트가 전체 포트폴리오를 순회하고 종속성 그래프를 작성하며 이동하지 못할 요소를 알려줄 수 있다면, 그 단계를 주 단위에서 작업 세션으로 압축할 수 있습니다.

에이전트가 표시하는 것이 속도보다 중요합니다. 에이전트가 종속성을 매핑할 때, 그것이 목표 환경을 막는 요소를 찾고 있으며, 이전 .NET 앱에서 반복적으로 나타나는 특정 범주가 있습니다: 그것이 실행되는 기계에 의존하는 코드입니다. 고전적인 예는 문서 처리입니다. 놀랍도록 많은 유산 비즈니스 로직이 오피스 자동화, COM 상호운용, 데스크탑을 가정하는 프린트 드라이버를 통해 PDF, 스프레드시트 및 워드 파일을 생성합니다. 이 코드는 2015년 Windows 서버에서 잘 작동했습니다. 그러나 이는 Linux 컨테이너나 Azure Function으로 이동하지 못합니다. 왜냐하면 자동화할 오피스도 없고 호출할 COM도 없기 때문입니다. 에이전트는 이것을 방해 요소로 드러낼 것입니다. 문제는 이것을 무엇으로 리팩토링하느냐입니다.
이동 후에도 살아남는 종속성으로 리팩토링하십시오
이것은 현대화에서 문서 레이어가 결정되는 순간이며, 우리의 작업이 딱 맞는 부분입니다. 이동의 전제는 확장하고 깔끔하게 배포할 수 있는 환경에 도착하는 것입니다: 컨테이너, 서버리스, 크로스 플랫폼 CI. 따라서 컴퓨터에 종속된 문서 코드를 대체할 것은 그러한 가정을 갖지 않는 관리된 .NET 라이브러리여야 합니다.
방해 요소가 PDF 생성일 때, IronPDF는 HTML에서 순수 .NET으로 PDF를 렌더링하여 오피스도 없고 상호작용도 없어 리팩토링된 코드가 최신화된 앱의 나머지가 이동하는 같은 컨테이너에서 실행됩니다. 스프레드시트 자동화일 때, IronXL은 오피스 상호작용이나 COM 없이 엑셀 파일을 읽고 쓰며, 이는 에이전트가 지적한 종속성입니다. 같은 것이 IronWord를 통한 워드 생성과 유산 앱들이 흔히 취급하는 취약성 도구를 이용한 스캔된 문서와 이미지에서 텍스트로 경로에 대해 IronOCR가 그 단계를 계속 유지합니다. 각 요소는 리팩토링의 드롭인 대상으로서의 역할을 합니다: 에이전트는 COM이나 상호운용 호출을 식별하며, 새 코드는 모든 플랫폼에서 동일하게 동작하는 라이브러리가 됩니다.
이것이 에이전트 리팩토링과 잘 맞는 이유는 대체물이 결정론적이기 때문입니다. 새로운 API가 실제 파일을 반환하고 헤드리스로 실행되며 호스트 구성 필요 없는 정상적인 .NET 라이브러리일 때, 에이전트는 호출 사이트를 자신 있게 다시 작성할 수 있습니다. 대상에 설치할 것도, 기계 당 라이센스 필요도, 운영 체제에 의존할 것도 없습니다. 이것이 '대규모 안전 리팩토링'이 실제로 안전할 수 있게 하는 속성입니다.
구체적인 모양
이것을 조합하면 현대화 루프는 다음과 같이 보입니다. 에이전트는 유산 앱을 분석하고 종속성 맵을 구축합니다. 방해 요소들 중 하나로, 오피스 자동화를 통해 송장을 생성하는 보고 모듈을 플래그하며, 이는 앱이 컨테이너에서 실행되는 순간 실패할 코드입니다. 업그레이드 계획은 이를 대체하는 것이 필요하다고 합니다. 에이전트는 호출 사이트를 관리되는 라이브러리로 리팩토링합니다. 송장용 PDF는 IronPDF, 데이터 내보내기는 IronXL, 그리고 모듈은 이제 다른 모든 것들과 같은 Linux 컨테이너에서 실행됩니다. 앱이 이동하고, 문서 레이어도 Windows에 고정되지 않고 함께 이동합니다.
프레임워크를 현대화하는 것과 앱을 현대화하는 것의 차이는 여기에 있습니다. 프레임워크 업그레이드는 기계적인 것입니다. 앱이 실제로 이동할 수 있는 것은 그 의존성이 이동할 때입니다. 문서 레이어는 이를 방해하는 가장 일반적인 요소입니다.
다음에 어디로 갈까요
세션은 GitHub Copilot 현대화 문서와 커맨드 센터, 규칙서, 메인프레임 기능을 위한 비공개 미리 보기 등록을 지적합니다. Microsoft는 6월 16일의 .NET 에이전트 현대화의 날이라는 가상의 행사와 함께, 전체 Build 기능 목록을 통해 발표한 모든 내용을 다룹니다. 관계된 브레이크아웃 Modernize intelligent apps and agents with .NET that scale as you grow (OD801)은 이 것과 함께 보는 것이 좋습니다.
만약 현대화를 계획 중이라면, 에이전트가 발견하기 전 문서 관련 방해 요소가 어떤 것인지 아는 것이 좋습니다. IronPDF, IronXL, IronWord, IronOCR는 모두 무료 평가판을 제공하며, 또는 Iron Suite 전체 세트를 제공하므로 종속성 맵이 다시 돌아왔을 때 리팩토링 대상이 준비됩니다. 에이전트는 오래된 앱을 여러 새로운 기술로 가르칠 수 있습니다. 그러나 숙지할 경우 어려움도 병행됩니다.

