

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

# IIS에서 Elastic Beanstalk로의 마이그레이션 매핑 이해
<a name="dotnet-migrating-applications-mapping"></a>

IIS에서 Elastic Beanstalk로 마이그레이션하려면 온프레미스 Windows 서버 구성을 AWS 클라우드 리소스에 매핑해야 합니다. 이 매핑을 이해하는 것은 성공적인 마이그레이션과 마이그레이션 이후의 관리를 위해 매우 중요합니다.

## Elastic Beanstalk의 IIS 사이트 및 애플리케이션
<a name="dotnet-migrating-applications-mapping-sites"></a>

IIS에서 웹 사이트는 자체적인 구성과 콘텐츠를 가진 웹 애플리케이션과 가상 디렉터리의 집합을 나타냅니다. Elastic Beanstalk로 마이그레이션할 때 이러한 구성 요소는 다음과 같이 변환됩니다.

**IIS 웹 사이트**  
IIS 웹 사이트는 Elastic Beanstalk 내의 애플리케이션이 됩니다. 바인딩, 애플리케이션 풀, 인증 설정을 비롯한 각 웹 사이트의 구성은 Elastic Beanstalk의 배포 매니페스트(`aws-windows-deployment-manifest.json`)를 통해 유지됩니다.  
예를 들어 *기본 웹 사이트* 및 *IntranetSite*와 같이 여러 사이트가 있는 경우, **eb migrate**는 각 사이트의 콘텐츠와 구성을 패키징하면서 해당 사이트의 격리를 유지합니다.  
이 명령은 애플리케이션으로의 라우팅 요청을 처리하기 위해 적절한 Application Load Balancer(ALB) 리스너 규칙을 생성합니다. 또한 원래 IIS 바인딩을 기반으로 적절한 포트 액세스를 보장하기 위해 보안 그룹도 구성합니다.

**애플리케이션 풀**  
IIS 애플리케이션 풀은 애플리케이션을 위한 작업자 프로세스 격리, 런타임 관리, 리사이클링 기능을 제공합니다. Elastic Beanstalk에서는 이러한 항목이 `aws:elasticbeanstalk:environment:process` 네임스페이스를 통해 정의된 환경 프로세스에 매핑되며, EC2 인스턴스의 IIS를 통해 구성됩니다.  
마이그레이션은 아래와 같은 중요 애플리케이션 풀 설정을 보존합니다.  
+ 프로세스 모델 구성 - ID(ApplicationPoolIdentity, NetworkService 또는 사용자 지정 계정), 유휴 시간 제한 설정, 프로세스 재활용 간격
+ .NET CLR 버전 설정 - 지정한 .NET Framework 버전(v2.0, v4.0 또는 No Managed Code)을 유지해 애플리케이션 호환성을 보장합니다.
+ 관리형 파이프라인 모드 – HTTP 요청 처리 아키텍처를 유지하기 위해 통합 또는 클래식 파이프라인 모드 설정을 그대로 유지합니다.
+ 고급 설정 - 대기열 길이, CPU 제한, 빠른 실패 보호 임계값 및 스타트업 시간 제한
**eb migrate** 명령은 Elastic Beanstalk 환경으로의 마이그레이션 중 사이트와 애플리케이션 풀 간의 매핑을 유지합니다.  
애플리케이션 풀이 사용자 지정 재활용 스케줄(특정 시간 또는 메모리 임계값)을 사용하는 경우, 이는 EC2 인스턴스에서 적절한 IIS 설정을 구성하는 배포 패키지의 PowerShell 스크립트를 통해 구현됩니다.

**웹 사이트 바인딩**  
클라이언트가 애플리케이션에 액세스하는 방식을 정의하는 IIS 웹 사이트 바인딩은 다음과 같은 Application Load Balancer(ALB) 구성으로 변환됩니다.  
+ 포트 바인딩은 해당 ALB 리스너 규칙에 매핑됩니다.
+ 호스트 헤더 구성은 ALB 라우팅 규칙으로 변환됩니다.
+ SSL 지원 사이트는 AWS 인증서 관리를 위해 Certificate Manager(ACM)를 사용합니다.

## 가상 디렉터리 및 애플리케이션 경로 관리
<a name="dotnet-migrating-applications-mapping-virtual-dirs"></a>

IIS 가상 디렉터리 및 애플리케이션은 물리적 디렉터리에 대한 URL 경로 매핑을 제공합니다. Elastic Beanstalk은 이러한 관계를 다음 구성 요소를 통해 유지합니다.

**가상 디렉터리**  
마이그레이션 과정은 배포 패키지 내에서 가상 디렉터리의 실제 경로를 그대로 유지합니다.  
경로 매핑은 EC2 인스턴스의 IIS 구성에서 설정되며 이를 통해 마이그레이션 후에도 URL 구조가 그대로 유지됩니다.

**비시스템 드라이브 물리적 경로**  
기본적으로 Elastic Beanstalk Windows 환경은 C:\$1 드라이브(루트 볼륨)만 프로비저닝합니다. 현재 버전에서는 비시스템 드라이브(D:, E:\$1 등)에 콘텐츠가 있는 애플리케이션은 마이그레이션을 지원하지 않습니다.
이 **eb migrate** 명령은 비시스템 드라이브에 위치한 물리적 경로를 자동으로 감지하고, 다음 예시와 같은 잠재적 문제에 대해 경고합니다.  

```
ERROR: Detected physical paths on drive D:\ which are not supported in the current version:
  - D:\websites\intranet
  - D:\shared\images

Migration of content from non-system drives is not supported. Please relocate this content to the C:\ drive before migration. Otherwise, select only those sites that are on C:\.
```
애플리케이션이 비시스템 드라이브에 의존하는 경우, 마이그레이션 전에 모든 콘텐츠를 C:\$1 드라이브에 저장하도록 애플리케이션을 수정해야 합니다.

**중첩 애플리케이션**  
웹 사이트의 중첩된 애플리케이션은 올바른 경로 구성과 적절한 애플리케이션 풀 할당과 함께 배포됩니다. 마이그레이션 과정은 모든` web.config`설정을 유지하여 애플리케이션별 구성이 클라우드 환경에서도 예상대로 작동하도록 합니다.

## URL 재작성 및 애플리케이션 요청 라우팅(ARR)
<a name="dotnet-migrating-applications-mapping-url-rewrite"></a>

IIS 배포에서 URL 재작성 또는 ARR(애플리케이션 요청 라우팅)을 사용하는 경우, **eb migrate**는 다음 규칙과 구성을 통해 이러한 설정을 처리합니다.

**URL 재작성 규칙**  
`web.config` 파일의 URL 재작성 규칙은 가능한 경우 ALB 라우팅 규칙으로 변환됩니다. 예를 들어, 다음 항목은 호스트 헤더 및 경로 패턴에 따라 트래픽을 라우팅하는 ALB 리스너 규칙이 됩니다.  

```
<!-- Original IIS URL Rewrite Rule -->
<rule name="Redirect to WWW" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^example.com$" />
    </conditions>
    <action type="Redirect" url="http://www.example.com/{R:1}" />
</rule>
```


**애플리케이션 요청 라우팅**  
ARR 구성은 EC2 인스턴스에 ARR 기능을 설치함으로써 유지됩니다. 마이그레이션 프로세스는 다음 작업을 완료합니다.  
+ 소스 환경과 일치하도록 프록시 설정을 구성합니다.
+ ARR과 관련된 URL 재작성 규칙을 유지합니다.

## 마이그레이션 아티팩트 구조
<a name="dotnet-migrating-applications-mapping-artifacts"></a>

**eb migrate**를 실행하면 필수 배포 구성 요소를 모두 포함하는 구조화된 디렉터리가 생성됩니다. 다음 목록은 디렉터리 구조를 설명합니다.

```
C:\migration_workspace\
└── .\migrations\latest\
    └── upload_target\
        ├── [SiteName].zip                 # One ZIP per IIS site
        ├── aws-windows-deployment-manifest.json
        └── ebmigrateScripts\
            ├── site_installer.ps1         # Site installation scripts
            ├── arr_configuration.ps1      # ARR configuration scripts
            ├── permission_handler.ps1     # Permission management
            └── firewall_config.ps1        # Windows Firewall rules
```

`aws-windows-deployment-manifest.json` 파일은 Elastic Beanstalk에 애플리케이션을 어떻게 배포할지 지시하는 핵심 구성 파일입니다. 다음 예시 구조를 참조하세요.

```
{
    "manifestVersion": 1,
    "deployments": {
        "msDeploy": [
            {
                "name": "Primary Site",
                "parameters": {
                    "appBundle": "DefaultWebSite.zip",
                    "iisPath": "/",
                    "iisWebSite": "Default Web Site"
                }
            }
        ],
        "custom": [
            {
                "name": "ConfigureARR",
                "scripts": {
                    "install": {
                        "file": "ebmigrateScripts\\arr_configuration.ps1"
                    },
                    "uninstall": {
                        "file": "ebmigrateScripts\\noop.ps1"
                    },
                    "restart": {
                        "file": "ebmigrateScripts\\noop.ps1"
                    }
                }
            }
        ]
    }
}
```

이 매니페스트는 마이그레이션에 대해 다음과 같은 결과를 보장합니다.
+ 애플리케이션은 올바른 IIS 경로에 배포됨
+ 사용자 지정 구성 적용
+ 사이트별 설정은 그대로 유지
+ 배포 순서 유지