최신 .NET으로 리팩터링하고 Linux로 이동 - AWS 권장 가이드

최신 .NET으로 리팩터링하고 Linux로 이동

개요

레거시 .NET Framework 앱을 현대화하면 보안, 성능 및 확장성을 개선하는 데 도움이 될 수 있습니다. .NET Framework 앱을 현대화하는 효과적인 방법은 앱을 최신 .NET 버전(6 이사)으로 마이그레이션하는 것입니다. 다음은 이러한 애플리케이션을 오픈 소스 .NET으로 이전할 경우 얻을 수 있는 몇 가지 주요 이점입니다.

  • Linux 운영 체제에서 실행하여 Windows 라이선스 비용 절감

  • 최신 언어의 가용성 활용

  • Linux에서 실행하도록 최적화된 성능 지원

많은 조직에서 여전히 이전 버전의 .NET Framework를 실행하고 있습니다. 이 경우 이전 버전의 취약성은 더 이상 Microsoft에서 해결되지 않기 때문에 보안 위험을 초래할 수 있습니다. Microsoft는 .NET Framework 4.5.2, 4.6 및 4.6.1의 최신 버전에 대한 지원을 종료했습니다. 이전 버전의 프레임워크를 계속 실행할 경우의 위험과 이점을 평가하는 것이 매우 중요합니다. 위험을 줄이고 비용을 절감하려면 .NET의 최신 버전으로 리팩터링하는 데 시간과 노력을 투자하는 것이 좋습니다.

비용 영향

범용 EC2 인스턴스 유형(m5)을 고려합니다. 이 경우 컴퓨팅, 메모리 및 네트워킹 리소스의 균형을 제공합니다. 이러한 인스턴스는 웹 서버, 중간 규모의 데이터베이스 및 소스 코드 리포지토리와 같은 다양한 애플리케이션에 적합합니다.

예를 들어 미국 동부(버지니아 북부)의 Windows Server(라이선스 포함)에 4개 vCPU와 16GB 메모리가 있는 온디맨드 m5.xlarge 인스턴스의 비용은 월별 274.48 USD입니다. Linux 서버에서 동일한 리소스 요금은 월별 140.16 USD입니다. 이 예제에서는 애플리케이션을 .NET Framework에서 최신 버전의 .NET으로 마이그레이션하고 Linux 서버에서 애플리케이션을 실행하면 비용이 49% 절감됩니다. 비용은 EC2 인스턴스를 선택할 때 선택하는 옵션(예: 인스턴스 유형, 운영 체제, 스토리지)에 따라 달라질 수 있습니다. 절감형 플랜 또는 예약 인스턴스를 사용하여 비용을 추가로 최적화할 수 있습니다. 자세한 내용은 AWS Pricing Calculator를 사용하여 비용 추정을 실행합니다. Windows 포함 인스턴스의 경우 라이선스 비용은 요금 모델에 관계없이 시간별 vCPU당 0.046 USD입니다.

이러한 .NET Framework 애플리케이션을 최신 .NET으로 이식하려면 개발자의 노력이 필요합니다. 애플리케이션과 해당 종속성을 평가하여 대상 플랫폼 버전과 호환되는지 확인해야 합니다. AWS Porting Assistant for .NET은 .NET Framework 애플리케이션을 스캔하고 .NET 호환성 평가를 생성하여 Linux와 더 빠르게 호환되도록 애플리케이션을 이식하는 데 도움이 되는 보조 도구입니다. Porting Assistant for .NET은 .NET과의 비호환성을 식별하고, 알려진 대체 항목을 찾으며, 자세한 호환성 평가를 생성합니다. 솔루션을 이식한 후 프로젝트를 종속성과 함께 성공적으로 컴파일하려면 수동으로 코드를 변경해야 합니다. 그러면 애플리케이션을 Linux로 현대화하는 데 드는 수작업이 줄어듭니다. 애플리케이션이 ARM 프로세서를 지원하는 경우 Linux로 이전하면 Graviton 인스턴스를 사용할 수 있는 기능이 잠금 해제됩니다. 이를 통해 추가적으로 비용을 20% 더 절감할 수 있습니다. 자세한 내용은 AWS 컴퓨팅 블로그의 Powering .NET 5 with AWS Graviton2: Benchmarks를 참조하세요.

레거시 .NET 프레임워크 애플리케이션을 최신 .NET으로 이식하는 데 도움이 되는 AWS Toolkit for .NET Refactoring.NET Upgrade Assistant와 같은 다른 도구도 있습니다.

비용 최적화 권장 사항

.NET Framework 앱을 마이그레이션하려면 다음을 수행합니다.

  1. 사전 조건 - Porting Assistant for .NET을 사용하려면 애플리케이션 소스 코드를 분석하려는 시스템에 .NET 5 이상을 설치해야 합니다. 시스템의 리소스에는 최소 1.8GHz의 처리 속도, 4GB의 메모리 및 5Gb의 스토리지 공간이 있어야 합니다. 자세한 내용은 Porting Assistant for .NET 설명서의 Prerequisites를 참조하세요.

  2. 평가 - Porting Assistant for .NET을 실행 파일(다운로드)로 다운로드합니다. 시스템에 도구를 다운로드하여 설치하여 애플리케이션 평가를 시작할 수 있습니다. 평가 페이지에는 최신 .NET과 호환되지 않는 이식된 프로젝트, 패키지 및 API가 포함되어 있습니다. 이러한 이유로 평가 후 솔루션에서 빌드 오류가 발생합니다. 평가 결과를 보거나 CSV 파일로 다운로드할 수 있습니다. 자세한 내용은 Porting Assistant for .NET 설명서의 Port a solution을 참조하세요.

  3. 리팩터링 - 애플리케이션을 평가한 후 프로젝트를 대상 프레임워크 버전으로 이식할 수 있습니다. 솔루션을 이식하는 경우 프로젝트 파일과 일부 코드가 이식 어시스턴트에 의해 수정됩니다. 로그를 확인하여 소스 코드의 변경 사항을 검토할 수 있습니다. 대부분의 경우 코드를 프로덕션에서 사용할 준비를 하기 위해 마이그레이션 및 테스트를 완료하는 데 추가 노력이 필요합니다. 애플리케이션에 따라 일부 변경 사항에는 엔터티 프레임워크, ID 및 인증이 포함될 수 있습니다. 자세한 내용은 Porting Assistant for .NET 설명서의 Port a solution을 참조하세요.

이는 애플리케이션을 컨테이너로 현대화하는 첫 번째 단계입니다. .NET Framework 앱을 Linux 컨테이너로 현대화하기 위한 여러 비즈니스 및 기술 동인이 있을 수 있습니다. 중요한 동인 중 하나는 Windows 운영 체제에서 Linux로 이전하여 총 소유 비용을 줄이는 것입니다. 이 경우 애플리케이션을 .NET의 교차 플랫폼 버전과 컨테이너로 마이그레이션하여 리소스 사용률을 최적화하면 라이선스 비용이 절감됩니다.

애플리케이션을 Linux로 이식한 후 AWS App2Container를 사용하여 애플리케이션을 컨테이너화할 수 있습니다. App2Container는 Amazon ECS 또는 Amazon EKS를 직접 배포할 수 있는 엔드포인트 서비스로 사용합니다. App2Container는 애플리케이션을 반복적으로 컨테이너화하는 데 필요한 모든 코드형 인프라(IaC) 배포 아티팩트를 제공합니다.

추가 고려 사항 및 리소스