.NET 애플리케이션 마이그레이션 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

.NET 애플리케이션 마이그레이션

.NET 애플리케이션을 로 마이그레이션 AWS 하면 탄력적 조정 기능을 사용하여 고가용성 워크로드를 생성하고, 운영 오버헤드를 줄이고, 차별화된 가치에 집중하여 비즈니스 민첩성을 높일 수 있습니다.

이 섹션에서는에서 .NET 애플리케이션을 호스팅하기 위한 다양한 옵션에 중점을 둡니다 AWS. 와 같은 관리형 솔루션인 VM 사용AWS Elastic Beanstalk, 코드 컨테이너화 또는 마이크로서비스 또는 서버리스 기반 아키텍처로 코드 리팩터링 중에서 선택할 수 있습니다.

평가

.NET 워크로드의 마이그레이션 경로를 선택할 때는 다음과 같은 주요 요소를 고려해야 합니다.

  • 사용된 .NET 버전 찾기 - Microsoft에서 지원하는 두 가지 .NET 구현인 .NET Framework(1.0~4.8)와 .NET(.NET Core 1.0~3.1 및 .NET 5 이상)이 있습니다. 둘 다 동일한 구성 요소를 많이 공유하며 서로 다른 .NET 프로그래밍 언어(예: C#, F#, VB.NET)를 사용하여 작성된 애플리케이션 코드를 실행할 수 있습니다. .NET Framework는 Windows에서 실행되지만 최신 .NET은 다중 플랫폼이므로 마이그레이션 전략과 호스팅 서비스 선택은 사용하는 런타임에 따라 달라집니다. .NET Framework의 경우 Windows OS에서 호스팅하거나 최신 .NET을 사용하도록 코드를 리팩터링할 수 있습니다. Linux OS 기반 서비스에서도 최신 .NET을 호스팅할 수 있습니다. .NET Framework 기반 워크로드를 현대화할 때 Porting Assistant for .NET 또는 AWS Toolkit for .NET Refactoring을 사용하여 코드를 스캔하고 호환성 평가 보고서를 생성할 수 있습니다. 프로젝트에서 참조하는 호환되지 않는 .NET Framework API가 있는지 확인하여 마이그레이션 프로젝트의 복잡성을 계획하고 최신 런타임을 사용하도록 코드를 리팩터링할지 여부와 시기를 결정할 수 있습니다.

  • 현재 배포 검토 - 현재 마이그레이션된 워크로드에 동일한 워크로드를 클라우드에 배포하도록 업데이트할 수 있는 기존 CI/CD 파이프라인이 있는지 확인합니다. 기존 빌드 및 배포 파이프라인을 사용하면 워크로드를 구축, 구성 및 배포하는 데 필요한 단계를 자동화하여 애플리케이션을 클라우드에 배포하는 데 걸리는 시간을 줄일 수 있습니다.

  • 로드맵 검토 - 프로젝트의 현재 상태에 따라 이미 애플리케이션을 리아키텍트하거나 재설계할 계획을 세우고 있을 수 있습니다. 현대화를 수행할 때는 제품 로드맵을 고려해야 합니다. 예를 들어, 기존 코드를 컨테이너화하기로 결정하거나 모놀리식 아키텍처를 마이크로서비스로 리팩터링하는 것은 이상적으로 제품 로드맵의 일부이며 다른 개발 노력과 연계됩니다.

동원

.NET 워크로드를 마이그레이션할 때 고려해야 할 세 가지 마이그레이션 경로가 있습니다 AWS. 기존 코드베이스의 복잡성, 마이그레이션에 할당된 시간, 마이그레이션 작업을 지원하기 위해 할당된 팀의 규모에 따라 다양한 옵션 중에서 선택할 수 있습니다. 마이그레이션의 일환으로 현대화를 고려할 때는 제품의 로드맵에 부합하는 것이 가장 좋습니다.

  • 리호스팅(리프트 앤 시프트) - 우선순위가 거의 또는 전혀 변경하지 않고 AWS 로 더 빠르게 마이그레이션하는 경우이 접근 방식을 선택할 수 있습니다. Amazon EC2 인스턴스에서 실행되는 인터넷 정보 서비스(IIS)로 ASP.NET 기반 웹 사이트를 리호스팅할 수 있습니다. 데스크톱 기반 애플리케이션(예: Windows Presentation Foundation, Web Forms 및 .NET MAUI)을 Amazon AppStream 2.0 또는 Amazon WorkSpaces와 같은 최종 사용자 컴퓨팅 플랫폼 중 하나로 리호스팅할 수 있습니다.

  • 리플랫포밍 - 리플랫포밍은 코드를 변경하지 않고 관리형 서비스를 사용하여 애플리케이션을 호스팅하고 싶지만 설치, 패치, 업그레이드, 인스턴스 관리 등의 획일적이고 과중한 업무를 없애서 운영 오버헤드를 줄이려는 경우에 가장 적합합니다. 이 전략은 컨테이너 기반 워크로드로 전환하려는 팀에도 적합합니다. 기존 애플리케이션을 Elastic Beanstalk로 리플랫포밍하거나 Amazon ECS, Amazon EKS 또는에서 호스팅되는 Docker 컨테이너를 사용할 수 있습니다AWS App Runner.

  • 리팩터링 - AWS 클라우드 네이티브 서비스를 사용하여 운영 오버헤드를 줄이고 규모 조정, 고가용성 및 재해 복구를 개선하는 코드 및 아키텍처 변경에 시간과 노력을 투자할 수 있는 경우이 접근 방식을 선택합니다. 리팩터링에는 기존 .NET 프레임워크 애플리케이션을 .NET(이전의 .NET Core)으로 이식하거나 클라우드에서 더 잘 실행되도록 기존 코드베이스를 현대화하는 작업이 포함됩니다. 를 사용하여 .NET 코드 내에서 많은 AWS 클라우드 서비스를 호출AWS SDK for .NET할 수 있습니다. Porting Assistant for .NET 및와 같은 도구를 사용하여 코드베이스를 .NET Framework에서 .NET으로 이식하고 모놀리식 애플리케이션을 마이크로서비스로 분리할 AWS Microservice Extractor for .NET 수 있습니다. 에서 실행되도록 기존 .NET 워크로드를 리팩터링하면 서버리스 컴퓨팅을 사용하여 인프라를 프로비저닝하고 관리할 AWS Lambda필요가 없습니다.

마이그레이션

.NET 워크로드 마이그레이션 단계는 평가 단계에서 선택한 마이그레이션 경로와 애플리케이션 유형에 따라 달라집니다.

.NET 애플리케이션 리호스팅

코드를 변경하지 않고 애플리케이션을 마이그레이션하고 클라우드의 자동 조정, 로드 밸런싱, 탄력성을 활용하려는 경우 이 마이그레이션 경로를 선택합니다. Windows 기반 웹 사이트의 경우 리호스팅은 일반적으로의 IIS(인터넷 정보 서비스)에서 웹 사이트를 실행하는 것을 의미합니다 AWS. 데스크톱 기반 애플리케이션의 경우 애플리케이션을 설치하고 사용자가 외부에서 애플리케이션에 연결할 수 있도록 해야 합니다.

의 인터넷 정보 서비스 AWS

인터넷 정보 서비스(IIS)는 Windows 운영 체제에서 실행되는 Microsoft 웹 서버이며 웹 사이트와 웹 서비스를 호스팅하는 데 사용됩니다. Windows Server를 실행하는 모든 Amazon EC2 인스턴스에 IIS를 설치할 수 있습니다. IIS를 사용하도록 설정하고 구성한 후에는 온프레미스 환경에 사용하는 것과 동일한 배포 메커니즘을 사용하여 ASP.NET 웹 사이트 및 서비스를 배포할 수 있습니다.

EC2 Windows 인스턴스에서 IIS를 호스팅하는 경우 워크로드 및 HADR 요구 사항에 따라 로드 밸런싱, Auto Scaling 그룹 및 다중 AZ 배포를 사용하여 AWS Well-Architected Framework를 따르는 것이 중요합니다. IIS 리소스를 실행하는 Windows Server 워크로드의 크기 조정, 구성 및 배포를 안내AWS Launch Wizard하므로를 사용하는 것이 좋습니다 AWS. Launch Wizard는 새로 생성된 VPC 또는 기존 VPC에 필요한 컴퓨팅, 네트워킹 및 스토리지 구성 요소와 함께 두 개의 가용 영역에 걸친 고가용성 아키텍처를 배포합니다.

에서 데스크톱 애플리케이션 호스팅 AWS

많은 클라이언트가 Windows 기반 씩 클라이언트 애플리케이션에 액세스해야 합니다. 다음과 같은 3가지 플랫폼 중에서 선택할 수 있습니다.

  • Amazon EC2 - 사용자가 Microsoft 원격 데스크톱을 사용하여 Windows Server 기반 환경에 연결하도록 하려면 이 옵션을 선택합니다. 이 옵션을 사용할 경우 사용자가 운영 체제의 패치 적용 및 유지 관리를 담당합니다. 또한 사용자와 활성 소프트웨어 보증(SA)을 위한 원격 데스크톱 서비스 클라이언트 액세스 라이선스(RDS CAL)도 추가로 구입해야 합니다. 자세한 내용은 AWS 설명서의 의 Microsoft 라이선싱 AWS을 참조하세요.

  • Amazon WorkSpaces - 사용자를 위한 완전관리형 가상 데스크톱 인프라(VDI)가 필요한 경우 이 옵션을 선택합니다. WorkSpaces를 사용하여 사용자에게 지속적인 Windows 데스크톱 환경을 제공할 수 있습니다. 사용자 지정 이미지를 사용하여 WorkSpaces 환경을 사용자 지정하고 .NET 애플리케이션을 설치하거나 AWS Systems Manager를 사용하여 WorkSpaces 환경에 .NET 애플리케이션을 제공할 수도 있습니다. 사용자는 브라우저 또는 Amazon WorkSpaces 클라이언트를 사용하여 연결할 수 있습니다.

  • Amazon AppStream 2.0 – 어느 위치에서든 애플리케이션 및 비영구 데스크톱에 대한 안전하고 안정적이며 확장 가능한 액세스를 제공하려면 이 옵션을 선택합니다. AppStream 2.0으로 사용자가 웹에서 .NET 애플리케이션에 액세스할 수 있게 할 수 있습니다. 기존 RDS CAL과 활성 SA가 이미 있는 경우 License Mobility를 사용하여 AppStream 2.0에서 해당 라이선스를 사용할 수 있습니다.

리플랫포밍

리플랫포밍에는 코드를 거의 또는 전혀 변경하지 않고 호스팅 환경을 변경하는 작업이 포함됩니다. 이 전략을 선택하여 운영 오버헤드를 줄이고 클라우드 기능 및 서비스를 활용합니다.

AWS Elastic Beanstalk

AWS Elastic Beanstalk를 사용하여 .NET Framework 워크로드를 리플랫포밍할 수 있습니다. ASP.NET 기반 또는 ASP.NET Core 기반 애플리케이션을 패키징하면 애플리케이션을 실행하는 인프라에 대해 알 필요 AWS 없이에서 애플리케이션을 빠르게 배포하고 관리할 수 있습니다. 이는 선택 또는 제어에 대한 제한 없이 복잡성을 줄입니다. 애플리케이션을 업로드하기만 하면 Elastic Beanstalk에서 용량 프로비저닝, 로드 밸런싱, 조정 및 애플리케이션 상태 모니터링의 세부 정보를 자동으로 처리합니다.

자세한 내용은 다음 리소스를 참조하세요.

기존 애플리케이션 컨테이너화

Amazon ECS 또는 Amazon EKS를 사용하여 Docker 기반 컨테이너화된 애플리케이션을 호스팅할 수 있습니다.는 두 서비스를 모두 AWS 관리합니다. 둘 중 하나를 선택하는 것은 기존 지식과 선호도에 따라 달라집니다. 두 옵션 모두 Linux 기반 컨테이너나 Windows 기반 컨테이너를 실행할 수 있습니다.

자세한 내용은 다음 리소스를 참조하세요.

.NET 기반 애플리케이션을 컨테이너화하는 것은 사용된 .NET 런타임에 따라 달라집니다. 다음을 고려하세요.

  • Windows 컨테이너에서 .NET Framework 기반 애플리케이션 실행 - 애플리케이션을 컨테이너화하는 방법을 약술하는 Docker 파일을 생성하여 기존 애플리케이션에 Docker 지원을 추가할 수 있습니다. AWS App2Container를 사용하여 기존 .NET Framework 기반 애플리케이션을 쉽게 컨테이너화하고 로 마이그레이션할 수 있습니다 AWS. App2Container는 IIS 서버를 스캔하여 필요한 파일을 확인하고 대상 애플리케이션을 추출하여 도커 이미지를 생성합니다. App2Container를 사용하여에서 애플리케이션을 호스팅하는 데 필요한 배포 아티팩트를 생성할 수도 있습니다 AWS 클라우드.

  • .NET 또는 .NET Core - Amazon ECS 또는 Amazon EKS에서 최신 .NET 기반 웹 애플리케이션을 실행하는 것 외에도를 사용할 수도 있습니다AWS App Runner. App Runner는 코드나 컨테이너 이미지를 실행하고 부하 분산, Auto Scaling, 로깅, 인증서, 네트워킹을 관리하는 서버리스 완전관리형 솔루션입니다.

기존 코드 리팩터링/리아키텍트

애플리케이션의 현재 환경에서 달성하기 어려운 기능, 규모 또는 성능을 추가해야 하는 비즈니스 요구가 큰 경우이 옵션을 선택합니다. 애플리케이션 로드맵에 따라 최신 프레임워크, 클라우드 네이티브 서비스를 사용하도록 코드를 변경하거나 클라우드에서 더 잘 실행되도록 리아키텍트할 수 있습니다.

사용할 수 있는 첫 번째 리팩터링 옵션은 기존 .NET Framework 애플리케이션을.NET으로 마이그레이션하는 것입니다. .NET으로 전환하면 Windows 대신 Linux에서 실행할 수 있는 이점이 있습니다. 이렇게 하면 총 라이선스 비용이 절감되고, 최신 프레임워크와 최신 버전의 .NET 프로그래밍 언어가 제공됩니다.

AWS SDK for .NET

AWS SDK for .NET는 .NET 개발자에게 일관되고 친숙한 라이브러리 세트를 AWS 서비스 제공하여 사용을 간소화합니다. AWS SDK는 교차 플랫폼 지원을 제공하며 NuGet을 사용하여 배포됩니다. 개발자는 AWS SDK를 사용하여 .NET 코드에서 클라우드 서비스를 쉽게 호출하여 애플리케이션의 스토리지, 대기열, 인증 및 구성 요구 사항을 충족할 수 있습니다.

.NET Framework 애플리케이션 현대화

코드 파일을 검사하고 애플리케이션 포트폴리오 마이그레이션 로드맵을 계획하는 데 도움이 되는 보고서를 생성하는 Porting Assistant for .NET을 사용하여 .NET Framework에서 마이그레이션할 수 있습니다. Porting Assistant for .NET은 호환되지 않는 .NET Core APIs 및 패키지를 식별하고 알려진 대체 패키지를 찾아 이식 오버헤드를 줄일 수도 있습니다. AWS Toolkit for .NET 리팩터링은 개발자가 레거시 .NET 애플리케이션을 클라우드 기반 대안으로 리팩터링하는 데 필요한 시간과 노력을 줄이는 Visual Studio 확장입니다 AWS. 애플리케이션 소스 코드를 평가하여 .NET Core로의 이식과 같은 가능한 현대화 경로를 권장하고, Windows별 IIS 및 Active Directory 종속성 구성을 식별하고, 가능한 경우 코드 수정을 수행하여 Linux 호환성을 활성화하고, 리팩터링된 애플리케이션을 검증하는 데 도움이 됩니다 AWS 서비스. .NET Framework 애플리케이션을.NET으로 마이그레이션하면 더 나은 가격 대비 성능으로 ARM64 기반 Graviton 프로세서에서 애플리케이션을 실행할 수 있습니다. 자세한 내용은 AWS Workshop Studio 설명서의 GitHub 및 Graviton2의 Graviton 기반 .NET 및 Graviton 기반 서비스로 비용 최적화의 컨테이너Graviton2를 참조하세요. GitHub AWS

모노리스에서 마이크로서비스로

많은 개발 팀이 기존 모놀리식 애플리케이션을 마이크로서비스로 리아키텍트하고자 합니다. 개발 팀은 마이크로서비스 기반 아키텍처로 전환하여 개발 민첩성을 높이고, 컴퓨팅 비용을 줄이고, 서비스를 개별적으로 확장하고, 배포 시간을 줄일 수 있습니다.는 이전 모놀리식 애플리케이션을 마이크로서비스 기반 아키텍처로 리팩터링하는 프로세스를 AWS Microservice Extractor for .NET 간소화합니다. 구성 요소를 식별하고 기능을 그룹화함으로써 개발 팀은 .NET Framework 모놀리식 애플리케이션에서 .NET 서비스로 기능을 점진적으로 추출할 수 있습니다.

서버리스 애플리케이션으로 리팩터링

AWS Lambda는 서버를 프로비저닝하거나 관리하지 않고도 사실상 모든 유형의 애플리케이션 또는 백엔드 서비스에 대한 코드를 실행할 수 있는 서버리스 이벤트 기반 컴퓨팅 서비스입니다. 기존 애플리케이션에서 로직을 추출하여 필요할 때 .NET과 Lambda를 사용하여 자동으로 확장되는 이벤트 기반 서버리스 워크플로를 생성할 수 있습니다. Lambda의 일반적인 사용 사례에는 파일 처리, 분석, 웹 사이트, 모바일 애플리케이션 등의 다양한 크기 조정 요구 사항에 따라 몇 초 또는 몇 분 동안 실행되는 이벤트 기반 워크로드가 포함됩니다. 자세한 내용은 Lambda 설명서의 C#을 사용하여 Lambda 함수 빌드를 참조하세요.

추가 리소스