기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SQL Server 현대화 워크플로
이 섹션에서는 AWS 변환을 사용한 전체 SQL Server 현대화 프로세스를 step-by-step로 안내합니다.
1단계: SQL Server 현대화 작업 생성
AWS 변환 콘솔에서 새 변환 작업을 생성하여 현대화 여정을 시작합니다.
AWS 변환 콘솔에 로그인
현대화 작업 생성을 선택합니다.
Windows 현대화 작업을 선택한 다음 SQL Server 현대화를 선택합니다.
작업 세부 정보를 입력합니다.
작업 이름: 프로젝트의 설명 이름
설명: 선택적 설명
배포 대상 리전: AWS 리전
작업 생성을 선택합니다.
중요
작업 이름에 개인 식별 정보(PII)를 포함하지 마십시오.
2단계: SQL Server 데이터베이스에 연결
AWS 변환을 SQL Server 데이터베이스에 연결하여 스키마 분석 및 변환을 활성화합니다.
데이터베이스 커넥터 생성
SQL Server 현대화 작업에서 리소스에 연결로 이동합니다.
SQL Server 데이터베이스에 연결을 선택합니다.
새 커넥터 생성을 선택합니다.
커넥터 정보를 입력합니다.
어휘 이름: 설명 이름
AWS 계정 ID: SQL Server가 호스팅되는 계정
확인되면 승인을 위한 링크를 받게 됩니다. 승인 링크를 복사하여 계정에 대한 AWS 관리자의 승인을 받습니다. 승인되면 다음 단계로 진행할 수 있습니다.
관리자가 커넥터 요청을 승인한 후 제출을 클릭하여 소스 코드 연결 설정으로 진행합니다.
3단계: 소스 코드 리포지토리 연결
AWS 변환은 SQL Server 데이터베이스와 상호 작용하는 코드를 분석하고 변환하기 위해 .NET 애플리케이션 소스 코드에 대한 액세스 권한이 필요합니다. AWS 변환은 소스 코드를 제공하는 세 가지 방법을 지원합니다.
인증 방법 선택
- 개인용 액세스 토큰(PAT) 커넥터(권장)
-
사용자 지정 권한 범위, 자체 호스팅 공급자 지원 또는 GitHub Secrets와 같은 공급자별 APIs에 대한 액세스가 필요한 팀에 가장 적합합니다. 사용자 지정 권한을 사용하여 소스 코드 공급자에서 PAT를 생성하고, 저장하고 AWS Secrets Manager, 필요한 경우 AWS 변환이 이를 검색합니다. 토큰 교체 및 만료 관리는 사용자의 책임입니다.
- AWS CodeConnections
-
자동 자격 증명 관리를 원하는 팀에 가장 적합합니다. AWS CodeConnections는 OAuth 2.0 권한 부여 흐름을 통해 인증을 처리하는 관리형 공급자 통합을 사용합니다.는 자동 토큰 새로 고침 및 교체를 포함한 전체 자격 증명 수명 주기를 AWS 관리합니다. 수동 자격 증명 관리는 필요하지 않습니다.
- Amazon S3
-
소스 코드를 Amazon S3 버킷에 직접 업로드합니다. AWS 변환은 변환 작업 중에 버킷에서 코드에 액세스합니다.
| 기능 | PAT 커넥터(권장) | AWS CodeConnections |
|---|---|---|
| 보안 인증 정보 관리 | 수동(고객 관리형) | 자동(AWS관리형) |
| 토큰 수명 주기 | 수동 교체 필요 | 자동 새로 고침 |
| 권한 유연성 | 완전히 사용자 지정 가능한 범위 | 수정된 권한 |
| 자체 호스팅 공급자 지원 | 지원됨 | 사용할 수 없음 |
| 설정 복잡성 | 보통(수동 토큰 생성 및 스토리지) | 낮음(일회성 권한 부여) |
| 토큰 스토리지 | 고객의 AWS Secrets Manager | AWS관리형 |
PAT 커넥터 설정(권장)
PAT 커넥터를 사용하면 사용자 지정 권한이 있는 소스 코드 공급자에서 개인 액세스 토큰을 생성하고, 안전하게 저장하고 AWS Secrets Manager, 필요한 경우 AWS 변환이 이를 검색합니다. 교체 및 만료를 포함하여 토큰 수명 주기를 관리할 책임이 있습니다. AWS 변환은 보안 암호에 액세스할 수 있는 권한이 있는 필요한 IAM 역할을 자동으로 생성합니다.
PAT 커넥터는 자체 호스팅 및 사용자 지정 DNS/URL 버전을 포함하여 다음 공급자를 지원합니다.
GitHub 및 GitHub Enterprise Server
GitLab.com 및 GitLab 자체 관리형
Bitbucket Cloud 및 Bitbucket 데이터 센터
Azure DevOps 및 Azure DevOps Server
개인 액세스 토큰 생성
소스 코드 공급자에서 PAT를 생성합니다. 필요한 권한은 공급자마다 다릅니다. 공급자의 탭을 선택합니다.
중요
생성 직후 토큰을 복사합니다. 다시 볼 수 없습니다. 변환 작업 기간 만료를 설정합니다. 만료를 만료되지 않도록 설정하지 마십시오.
주의
PAT 토큰을 코드 리포지토리에 커밋하거나 안전하지 않은 채널을 통해 공유하지 마십시오. 항상에 저장합니다 AWS Secrets Manager.
GitHub
설정, 개발자 설정, 개인 액세스 토큰, 세분화된 토큰으로 이동합니다. 변환할 리포지토리를 선택하고 다음 권한을 부여합니다.
리포지토리 권한
| 권한 | 액세스 | 용도 |
|---|---|---|
| 내용 | 읽기 및 쓰기 | 소스 코드를 읽고 변환된 코드를 리포지토리에 다시 씁니다. |
| Metadata | 읽기 전용 | 기본 리포지토리 정보에 액세스합니다. |
조직 권한(조직 리포지토리에 필요)
| 권한 | 액세스 | 용도 |
|---|---|---|
| Members | 읽기 전용 | 리포지토리 검색을 위해 토큰에 액세스할 수 있는 조직을 나열합니다. |
GitLab
프로필 편집, 토큰 액세스로 이동합니다. 다음 범위를 선택합니다.
| Scope | 용도 |
|---|---|
read_api |
리포지토리 메타데이터, 프로젝트 정보, 사용자 세부 정보를 읽고 그룹 및 브랜치를 나열합니다. |
read_repository |
분석을 위해 소스 코드 파일 및 리포지토리 구조를 읽습니다. |
write_repository |
변환된 코드를 리포지토리에 다시 씁니다. |
Bitbucket
계정 설정, 보안, API 토큰 생성 및 관리로 이동합니다. 필요한 범위는 토큰 유형에 따라 다릅니다.
Workspace/리포지토리 토큰(ATCT — 베어러 인증, 사용자 이름 필요 없음)
| 권한 | 액세스 | 용도 |
|---|---|---|
| 리포지토리 | 읽기 및 쓰기 | git 푸시를 통해 리포지토리를 나열하고, 브랜치를 읽고, 변환된 코드를 씁니다. |
계정 API 토큰(ATAT - 이메일이 포함된 기본 인증) 또는 앱 암호(ATBB - 사용자 이름이 포함된 기본 인증)
| Scope | 용도 |
|---|---|
read:account |
인증된 사용자를 식별하여 리포지토리 멤버십 확인 |
read:workspace:bitbucket |
AWS 변환이 리포지토리를 열거할 수 있도록 토큰이 액세스할 수 있는 워크스페이스를 나열합니다. 보안 암호에 워크스페이스 목록을 지정하는 경우 필요하지 않습니다. |
read:repository:bitbucket |
리포지토리를 나열하고 메타데이터 및 브랜치 정보를 읽습니다. |
write:repository:bitbucket |
git 푸시를 통해 변환된 코드를 리포지토리에 다시 씁니다. |
Azure DevOps
사용자 설정, 개인 액세스 토큰으로 이동합니다. 사용자 지정 정의 범위를 선택합니다. 조직 범위에서 액세스 가능한 모든 조직(권장)을 선택하거나 단일 조직을 지정합니다.
| Scope | 액세스 | 용도 |
|---|---|---|
| 코드 | 읽기 및 쓰기 | 소스 코드를 읽고, 리포지토리와 브랜치를 나열하고, 변환된 코드를 다시 작성합니다. |
| 사용자 프로필 | 읽기 | 토큰 액세스를 검증하고 조직 조회를 위한 사용자 자격 증명을 검색합니다. |
| 멤버 권한 관리 | 읽기 | 리포지토리 검색을 위해 토큰에 액세스할 수 있는 조직을 나열합니다. |
에 PAT 저장 AWS Secrets Manager
AWS Secrets Manager 콘솔을 엽니다.
새 보안 암호 저장을 선택합니다.
보안 암호 유형에서 다른 유형의 보안 암호를 선택합니다.
공급자 및 호스팅 유형에 따라 키-값 페어를 추가합니다.
클라우드 호스팅 공급자 - PAT를 값으로
token사용하여 라는 키를 추가합니다.특정 조직이 있는 Azure DevOps의 경우 조직 이름과
organization함께 라는 이름의 키도 추가합니다.Bitbucket 앱 암호(ATBB)의 경우 Bitbucket 사용자 이름과
username함께 라는 키도 추가합니다. Bitbucket 계정 API 토큰(ATAT)의 경우emailBitbucket 이메일 주소로 라는 키를 추가합니다.
자체 호스팅 및 사용자 지정 DNS/URL 공급자 -
host(서버 URL, 예:https://github.mycompany.com),provider_type(github,gitlabbitbucket, 또는ado) 및token(PAT) 키를 추가합니다.특정 조직이 있는 Azure DevOps의 경우 조직 이름과
organization함께 라는 이름의 키도 추가합니다.Bitbucket 앱 암호(ATBB)의 경우 Bitbucket 사용자 이름과
username함께 라는 키도 추가합니다. Bitbucket 계정 API 토큰(ATAT)의 경우emailBitbucket 이메일 주소로 라는 키를 추가합니다.
다음 예제는 보안 암호가 GitHub 클라우드 호스팅 공급자를 AWS Secrets Manager 찾는 방법을 보여줍니다.
{ "token": "your-github-personal-access-token" }다음 예제에서는 Bitbucket 앱 암호(ATBB)를 보여줍니다.
{ "token": "your-bitbucket-app-password", "username": "my-bitbucket-username" }다음 예제는 자체 호스팅 GitLab 인스턴스를 보여줍니다.
{ "host": "https://gitlab.mycompany.com", "provider_type": "gitlab", "token": "your-gitlab-personal-access-token" }다음을 선택합니다.
와 같은 보안 암호 이름을 입력합니다
github-pat-myproject.(선택 사항) 암호화를 위한 고객 관리형 KMS 키를 선택합니다.
마법사를 완료하고 저장을 선택합니다.
보안 암호 ARN을 복사합니다. AWS 변환 작업을 구성할 때이 값이 필요합니다.
고객 관리형 KMS 키를 사용하여 보안 암호를 암호화하는 경우(기본 AWS관리형 키 대신) AWS 변환이 보안 암호를 해독하도록 KMS 키 정책을 업데이트해야 합니다. 고객 관리형 KMS 키 정책에 다음 문을 추가합니다.
{ "Sid": "Allow AWS Transform to decrypt secrets", "Effect": "Allow", "Principal": { "Service": "transform.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.REGION.amazonaws.com", "kms:EncryptionContext:SecretARN": "YOUR-SECRET-ARN" } } }
REGION을 AWS 리전(예: us-east-1)으로 바꾸고 YOUR-SECRET-ARN을 보안 암호의 ARN으로 바꿉니다. kms:ViaService 조건은 KMS 키를 AWS Secrets Manager 서비스를 통해서만 사용할 수 있도록 합니다. kms:EncryptionContext:SecretARN 조건은 복호화를 특정 보안 암호로 제한합니다.
KMS 키 정책을 업데이트하려면:
에서 AWS KMS 콘솔을 엽니다
https://console.aws.amazon.com/kms.탐색 창에서 고객 관리형 키를 선택합니다.
KMS 키를 선택합니다.
키 정책 탭에서 편집을 선택합니다.
기존 정책에 정책 설명을 추가합니다.
변경 사항 저장을 선택합니다.
참고
기본 AWS관리형 키(aws/secretsmanager)를 사용하는 경우 KMS 키 정책을 수정할 필요가 없습니다.
AWS 변환 작업 구성
AWS 변환 작업에서 리소스에 연결로 이동합니다.
소스 코드 리포지토리 연결을 선택합니다.
인증 방법으로 PAT 커넥터를 선택합니다.
2단계의 보안 암호 ARN을 입력합니다.
(선택 사항) 고객 관리형 KMS 키를 사용한 경우 KMS 키 ARN을 입력합니다.
리포지토리와 브랜치를 선택합니다.
계속을 선택합니다.
AWS 변환은 보안 암호에 액세스하는 데 필요한 권한이 있는 IAM 역할을 자동으로 생성합니다.
토큰 교체 및 유지 관리
PAT 토큰이 만료되기 전에 교체하는 것은 사용자의 책임입니다. 토큰을 교체하려면:
소스 코드 공급자에서 동일한 권한을 가진 새 PAT를 생성합니다.
에서 보안 암호 값을 업데이트합니다 AWS Secrets Manager.
AWS 변환 작업이 새 토큰을 사용하여 리포지토리에 액세스할 수 있는지 확인합니다.
소스 코드 공급자에서 이전 PAT를 취소합니다.
PAT 커넥터 문제 해결
- 액세스 거부됨 - 잘못된 PAT
-
PAT가 만료되지 않았는지 확인합니다. PAT에 공급자에 필요한 범위가 있는지 확인합니다. PAT가 올바르게 저장되어 있는지 확인합니다 AWS Secrets Manager.
- 보안 암호를 검색할 수 없음
-
보안 암호 ARN이 올바른지 확인합니다. 작업 로그를 확인하여 AWS 변환이 IAM 역할을 생성했는지 확인합니다. 고객 관리형 KMS 키를 사용하는 경우 키 정책을 확인합니다.
- 권한 부족
-
PAT에는 작업에 필요한 범위가 부족할 수 있습니다. 필요한 범위로 PAT를 재생성하고 보안 암호 값을 업데이트합니다 AWS Secrets Manager.
Set up AWS CodeConnections
AWS CodeConnections는 OAuth 2.0 권한 부여 흐름을 통해 임시 OAuth 자격 증명을 자동으로 검색하는 관리형 공급자 통합을 사용합니다. 권한은 공급자 앱에서 구성되며 전적으로에서 관리합니다 AWS. 앱을 한 번 승인하면가 모든 자격 증명 관리를 AWS 처리합니다.
SQL Server 현대화 작업에서 리소스에 연결로 이동합니다.
소스 코드 리포지토리 연결을 선택합니다.
기존 연결이 없는 경우 연결 생성을 선택합니다.
리포지토리 공급자를 선택합니다.
GitHub/GitHub Enterprise
GitLab.com
Bitbucket Cloud
Azure 리포지토리
공급자의 권한 부여 흐름을 따릅니다.
권한 부여 후 연결을 선택합니다.
리포지토리 및 브랜치 선택
목록에서 리포지토리를 선택합니다.
변환하려는 브랜치(일반적으로 기본, 마스터 또는 개발)를 선택합니다.
(선택 사항) .NET 애플리케이션이 리포지토리 루트에 없는 경우 하위 디렉터리를 지정합니다.
계속을 선택합니다.
참고
AWS 변환은 변환된 코드에 대한 새 브랜치를 생성합니다. 일반 코드 검토 프로세스를 통해 변경 사항을 검토하고 병합할 수 있습니다.
리포지토리 액세스 승인
GitHub 및 기타 플랫폼의 경우 리포지토리 관리자가 연결 요청을 승인해야 합니다.
AWS 변환에 확인 링크가 표시됩니다.
이 링크를 리포지토리 관리자와 공유합니다.
관리자는 리포지토리 설정에서 요청을 검토하고 승인합니다.
관리자가 요청을 승인하면 연결 상태가 승인됨으로 변경됩니다.
중요
승인 프로세스는 조직의 정책에 따라 시간이 걸릴 수 있습니다. 이에 따라 적절한 계획을 수립해야 합니다.
4단계: 배포 커넥터 생성(선택 사항)
변환된 애플리케이션을 AWS 계정에 배포하려면 배포 커넥터를 선택할 수 있습니다.
배포 커넥터 설정
애플리케이션을 배포하려면 예를 선택합니다. 아니요를 선택하면이 단계를 건너뜁니다.
변환된 애플리케이션을 배포할 AWS 계정을 추가합니다.
커넥터를 쉽게 기억하는 데 도움이 되는 이름 추가
승인을 위해 커넥터 요청을 제출합니다.
배포 커넥터 승인
AWS 계정 관리자는 배포 커넥터에 대한 연결 요청을 승인해야 합니다.
AWS 변환에 확인 링크 표시
AWS 계정 관리자와이 링크 공유
관리자가 리포지토리 설정에서 요청을 검토하고 승인합니다.
승인되면 연결 상태가 승인됨으로 변경됩니다.
중요
승인 프로세스는 조직의 정책에 따라 시간이 걸릴 수 있습니다. 이에 따라 적절한 계획을 수립해야 합니다.
5단계: 리소스 확인
데이터베이스 및 리포지토리에 연결한 후 AWS 변환은 필요한 모든 리소스에 액세스할 수 있고 변환할 준비가 되었는지 확인합니다.
AWS 변환이 확인하는 내용
데이터베이스 연결: 연결이 활성 상태이고, 사용자에게 필요한 권한이 있으며, 데이터베이스에 액세스할 수 있고, 버전이 지원됩니다.
리포지토리 액세스: 리포지토리에 액세스할 수 있음, 브랜치 존재, .NET 프로젝트 파일 감지됨, 데이터베이스 연결 검색 가능
환경 준비: VPC 구성에서 DMS 지원, 필수 AWS 서비스 역할 존재, 네트워크 연결 설정, 리전 호환성 확인
비행 전 체크리스트 검토
작업 계획에서 리소스 확인으로 이동합니다.
체크리스트 항목을 검토합니다.
✅ 데이터베이스 연결 확인됨
✅ 리포지토리 액세스 확인됨
✅ .NET 버전 지원
✅ Entity Framework 또는 ADO.NET 감지됨
✅ 네트워크 구성이 유효함
✅ 부여된 필수 권한
모든 항목이 완료로 표시되면 계속을 선택합니다.
경고 또는 오류가 표시되는 항목이 있는 경우 계속하기 전에 해결합니다.
6단계: 검색 및 평가
AWS 변환은 SQL Server 데이터베이스와 .NET 애플리케이션을 분석하여 현대화의 범위와 복잡성을 이해합니다.
검색되는 내용
데이터베이스 객체: 테이블, 뷰, 인덱스, 저장 프로시저, 함수, 트리거, 제약 조건, 데이터 유형, 계산된 열, 자격 증명 열, 외래 키 관계
애플리케이션 코드: .NET 프로젝트 구조, Entity Framework 모델 및 구성, ADO.NET 데이터 액세스 코드, 데이터베이스 연결 문자열, 저장 프로시저 호출, 코드 내 SQL 쿼리
종속성: 어떤 애플리케이션이 어떤 데이터베이스, 데이터베이스 간 종속성, 공유된 저장 프로시저, 공통 데이터 액세스 패턴을 사용하는지
검색 프로세스
AWS 리소스 확인 후 변환이 자동으로 검색 시작
데이터베이스 크기 및 애플리케이션 복잡성에 따라 일반적으로 검색에 5~15분이 소요됩니다.
작업 로그의 진행 상황 모니터링
AWS 변환은 객체가 검색될 때 실시간 업데이트를 표시합니다.
검색 결과 검토
검색이 완료되면 검색 및 평가로 이동하여 다음을 검토합니다.
데이터베이스 분석:
객체 수: 테이블, 뷰, 저장 프로시저, 함수, 트리거 수
복잡성 점수: 변환 복잡성 평가(낮음, 중간, 높음)
작업 항목: 사람의 주의가 필요할 수 있는 객체
지원되는 기능: 자동으로 변환되는 데이터베이스 기능
지원되지 않는 기능: 해결 방법이 필요한 기능
애플리케이션 분석:
프로젝트 유형: ASP.NET Core, 콘솔 앱, 클래스 라이브러리 등
.NET 버전: Detected .NET Core 버전
데이터 액세스 프레임워크: Entity Framework 버전 또는 ADO.NET
데이터베이스 연결: 발견된 연결 문자열 수
코드 복잡성: 변환 복잡성 평가
종속성 맵:
application-to-database 관계의 시각적 표현
데이터베이스 간 종속성
공유 구성 요소
복잡성 평가 이해
AWS 변환은 현대화를 세 가지 범주로 분류합니다.
| 복잡성 | 특성 | 예상 결과 |
|---|---|---|
| 낮음(클래스 A) | 표준 SQL 패턴(ANSI SQL), 간단한 저장 프로시저, 기본 데이터 형식, 표준 구성을 사용하는 Entity Framework | 최소한의 인적 개입 예상, 높은 자동화 성공률 |
| 중간(클래스 B) | 고급 T-SQL 패턴, 비즈니스 로직을 사용한 복잡한 저장 프로시저, 사용자 정의 함수, 계산된 열 | 사람의 개입이 일부 필요, 전문가 검토 권장 |
| 높음(클래스 C) | CLR 어셈블리, 연결된 서버, 서비스 브로커, 복잡한 전체 텍스트 검색 | 상당한 인적 리팩터링 필요, 단계별 접근 방식 고려 |
평가 보고서
AWS 변환은 다음을 포함하는 세부 평가 보고서를 생성합니다.
개략적인 개요가 포함된 실행 요약
전체 데이터베이스 인벤토리
애플리케이션 인벤토리
변환 준비 백분율
노력 추정
위험 평가 및 완화 전략
권장 접근 방식
오프라인 검토 및 이해관계자와의 공유를 위해 평가 보고서를 다운로드할 수 있습니다.
7단계: 웨이브 플랜 생성 및 검토
여러 데이터베이스 및 애플리케이션이 있는 대규모 자산의 경우 AWS 변환은 논리적 그룹에서 현대화를 시퀀스화하는 웨이브 플랜을 생성합니다.
웨이브 플랜이란 무엇입니까?
웨이브 플랜은 다음을 기반으로 현대화를 단계(웨이브)로 구성합니다.
데이터베이스와 애플리케이션 간의 종속성
비즈니스 우선순위
위험 허용치
리소스 가용성
기술적 복잡성
각 웨이브에는 종속성을 손상시키지 않고 함께 현대화할 수 있는 데이터베이스 및 애플리케이션 그룹이 포함되어 있습니다.
웨이브 플랜 검토
작업 계획에서 웨이브 계획으로 이동합니다.
제안된 웨이브 검토
각 웨이브에 대해 다음을 검토합니다.
포함된 데이터베이스
포함된 애플리케이션
다른 웨이브에 대한 종속성
예상 변환 시간
복잡성 수준
배포 가능한 애플리케이션
웨이브 플랜 사용자 지정
다음 두 가지 방법으로 비즈니스 요구 사항에 맞게 웨이브 플랜을 사용자 지정할 수 있습니다.
JSON 사용:
모든 웨이브 다운로드를 선택하여 모든 웨이브가 포함된 JSON 파일을 가져옵니다.
다음과 같이 JSON의 웨이브를 수정합니다.
파도 간 데이터베이스 이동
파도를 더 작은 그룹으로 분할
웨이브를 함께 병합
웨이브 시퀀스 변경
범위에서 데이터베이스 추가 또는 제거
웨이브 플랜 업로드를 선택하여 JSON 파일을 콘솔에 다시 업로드합니다.
AWS 변환은 변경 사항을 검증하고 종속성이 위반되면 경고합니다.
웨이브 확인을 선택하여 웨이브 플랜을 업데이트합니다.
채팅 사용:
에이전트와 채팅하고 리포지토리와 데이터베이스를 특정 웨이브로 이동하도록 요청하여 웨이브 계획을 수정할 수 있습니다. 이 접근 방식은 웨이브를 약간 편집해야 하는 경우에 적합합니다.
중요
웨이브를 사용자 지정할 때 종속성이 준수되는지 확인합니다. 데이터베이스 이전에 종속 애플리케이션을 변환하면 문제가 발생할 수 있습니다.
단일 데이터베이스 현대화
단일 데이터베이스 및 애플리케이션을 현대화하는 경우 AWS 변환은 하나의 웨이브로 간단한 계획을 생성합니다. 웨이브 계획 없이 직접 변환을 진행할 수 있습니다.
웨이브 플랜 승인
검토 및 사용자 지정(필요한 경우) 후 웨이브 계획 승인을 선택합니다.
AWS 변환은 웨이브 계획을 잠그고 변환을 진행합니다.
웨이브 계획 편집을 선택하여 나중에 계획을 수정할 수 있습니다.
8단계: 스키마 변환
AWS 변환은 테이블, 뷰, 저장 프로시저, 함수 및 트리거를 포함하여 SQL Server 데이터베이스 스키마를 Aurora PostgreSQL로 변환합니다.
스키마 변환 작동 방식
AWS 변환은 생성형 AI로 향상된 AWS DMS Schema Conversion을 사용하여 다음을 수행합니다.
SQL Server 스키마 및 관계 분석
SQL Server에서 PostgreSQL로 데이터 형식 매핑
T-SQL을 PL/pgSQL로 변환
자격 증명 열, 계산된 열 및 제약 조건 처리
변환 및 참조 무결성 검증
인적 검토가 필요한 객체에 대한 작업 항목 생성
지원되는 변환
자동으로 변환됨:
테이블, 뷰 및 인덱스
기본 키 및 외래 키
제약 조건 및 기본값 확인
가장 일반적인 데이터 형식
간단한 저장 프로시저
기본 함수 및 트리거
자격 증명 열(직렬 또는 생성형으로 변환됨)
대부분의 계산된 열
인적 검토가 필요할 수 있습니다.
고급 T-SQL을 사용한 복잡한 저장 프로시저
SQL Server 관련 함수(GETUTCDATE, SUSER_SNAME 등)
복잡한 표현식이 있는 컴퓨팅된 열
전체 텍스트 검색 인덱스
XML 데이터 형식 작업
HIERARCHYID 데이터 형식(ltree 확장 필요)
자동으로 변환되지 않음:
CLR 어셈블리
연결된 서버
서비스 브로커
SQL Server 에이전트 작업
스키마 변환 시작
작업 계획에서 스키마 변환으로 이동합니다.
변환 설정을 검토합니다.
대상 PostgreSQL 버전
확장 옵션(ltree, PostGIS 등)
이름 지정 규칙
변환 시작을 선택합니다.
작업 로그의 진행 상황 모니터링
변환은 일반적으로 데이터베이스 객체 수에 따라 10~30분이 걸립니다.
변환 결과 검토
변환이 완료되면 스키마 변환 검토로 이동합니다.
변환 요약:
변환된 객체: 성공적으로 변환된 객체 수
작업 항목: 사람의 주의가 필요한 객체
경고: 검토할 잠재적 문제
오류: 변환할 수 없는 객체
객체 유형별 검토:
테이블: 데이터 형식 매핑, 제약 조건, 인덱스
저장 프로시저: T-SQL에서 PL/pgSQL로의 변환
함수: 함수 서명 및 로직 변경
트리거: 트리거 구문 및 타이밍 변경
작업 항목 검토
작업 항목 보기를 선택합니다.
각 작업 항목에 대해 다음을 검토합니다.
객체 이름: 데이터베이스 객체
문제 유형: 주의가 필요한 항목
심각도: 심각, 경고 또는 정보
권장 사항: 권장 해상도
원본 코드: SQL Server 버전
변환된 코드: PostgreSQL 버전
각 작업 항목에 대해 다음을 수행할 수 있습니다.
수락: 변환된 코드 사용
수정: 변환된 코드 편집
나중을 위한 플래그: 변환 후 인적 검토를 위해 표시
예: 저장 프로시저 변환
SQL Server T-SQL:
CREATE PROCEDURE GetProductsByCategory @CategoryId INT, @PageSize INT = 10 AS BEGIN SET NOCOUNT ON; SELECT TOP (@PageSize) ProductId, Name, Price, DATEDIFF(DAY, CreatedDate, GETUTCDATE()) AS DaysOld FROM Products WHERE CategoryId = @CategoryId ORDER BY Name END
변환된 PostgreSQL PL/pgSQL:
CREATE OR REPLACE FUNCTION get_products_by_category( p_category_id INTEGER, p_page_size INTEGER DEFAULT 10 ) RETURNS TABLE ( product_id INTEGER, name VARCHAR(255), price NUMERIC(18,2), days_old INTEGER ) AS $$ BEGIN RETURN QUERY SELECT p.product_id, p.name, p.price, EXTRACT(DAY FROM (NOW() - p.created_date))::INTEGER AS days_old FROM products p WHERE p.category_id = p_category_id ORDER BY p.name LIMIT p_page_size; END; $$ LANGUAGE plpgsql;
변경 사항:
TABLE을 반환하는 함수로 변환된 프로시저
p_ 접두사가 붙은 파라미터 이름
TOP을 LIMIT으로 변환
EXTRACT로 변환된 DATEDIFF
GETUTCDATE()를 NOW()로 변환
열 이름을 소문자로 변환(PostgreSQL 규칙)
스키마 변환 승인
모든 작업 항목을 검토하고 필요한 수정을 수행한 후
스키마 변환 승인 선택
AWS 변환은 Aurora PostgreSQL에 배포할 변환된 스키마를 준비합니다.
참고
오프라인 검토 또는 버전 관리를 위해 변환된 스키마를 SQL 스크립트로 다운로드할 수 있습니다.
9단계: 데이터 마이그레이션(선택 사항)
AWS 변환은 SQL Server에서 Aurora PostgreSQL로 데이터를 마이그레이션하는 옵션을 제공합니다. 데이터 마이그레이션은 선택 사항이며 스키마 및 코드 변환만 필요한 경우 건너뛸 수 있습니다.
데이터 마이그레이션 옵션
옵션 1: 프로덕션 데이터 마이그레이션
AWS DMS를 사용하여 실제 프로덕션 데이터를 마이그레이션합니다.
모든 데이터의 전체 초기 로드
테스트 중 지속적 복제(CDC)
가동 중지 시간 전환 최소화
데이터 검증 및 무결성 검사
옵션 2: 데이터 마이그레이션 건너뛰기
스키마 및 코드만 변환:
개발/테스트 환경에 유용
데이터가 별도로 마이그레이션되는 경우
proof-of-concept 프로젝트의 경우
데이터 마이그레이션 구성
작업 계획에서 데이터 마이그레이션으로 이동합니다.
마이그레이션 옵션을 선택합니다.
프로덕션 데이터 마이그레이션
데이터 마이그레이션 건너뛰기
프로덕션 데이터를 마이그레이션하는 경우 다음을 구성합니다.
마이그레이션 유형: 전체 로드 또는 전체 로드 + CDC
검증: 데이터 검증 활성화
성능: DMS 인스턴스 크기
-
>마이그레이션 시작을 선택합니다.
프로덕션 데이터 마이그레이션 프로세스
프로덕션 데이터를 마이그레이션하도록 선택한 경우:
초기 동기화: AWS DMS는 모든 테이블의 전체 로드를 수행합니다.
연속 복제: (CDC가 활성화된 경우) 데이터 동기화 유지
검증: 행 수 및 데이터 무결성 확인
전환 준비: 최종 동기화 준비
마이그레이션 타임라인:
소규모 데이터베이스(< 10GB): 30분~2시간
중간 데이터베이스(10~100GB): 2~8시간
대규모 데이터베이스(> 100GB): 8시간 이상
데이터 유효성 검사
AWS 변환은 다음 검사를 통해 마이그레이션된 데이터를 검증합니다.
행 수 비교(소스 대 대상)
기본 키 무결성
외래 키 관계
데이터 형식 호환성
계산된 열 결과
Null 값 처리
10단계: 애플리케이션 코드 변환
AWS 변환은 SQL Server 대신 Aurora PostgreSQL에서 작동하도록 .NET 애플리케이션 코드를 변환합니다. 변환된 소스 코드를 커밋하기 위해 리포지토리에서 대상 브랜치 이름을 요청합니다. 브랜치 이름을 입력하면 AWS 변환은 새 브랜치를 생성하고 PostgreSQL 데이터베이스와 일치하도록 변환을 시작합니다.
변환되는 항목
개체 프레임워크 변경 사항:
데이터베이스 공급자: UseSqlServer() → UseNpgsql()
연결 문자열: SQL Server 형식 → PostgreSQL 형식
데이터 형식 매핑: SQL Server 형식 → PostgreSQL 형식
DbContext 구성: SQL Server별 → PostgreSQL별
마이그레이션 파일: PostgreSQL 호환성을 위해 업데이트됨
ADO.NET 변경 사항:
연결 클래스: SqlConnection → NpgsqlConnection
명령 클래스: SqlCommand → NpgsqlCommand
데이터 리더: SqlDataReader → NpgsqlDataReader
파라미터: SqlParameter → NpgsqlParameter
SQL 구문: T-SQL → PostgreSQL SQL
구성 변경:
appsettings.json의 연결 문자열
데이터베이스 공급자 NuGet 패키지
종속성 주입 구성
시작/Program.cs 구성
코드 변환 시작
작업 계획에서 애플리케이션 변환으로 이동합니다.
변환 설정을 검토합니다.
대상 .NET 버전(업그레이드하는 경우)
PostgreSQL 공급자 버전
코드 스타일 기본 설정
변환 시작을 선택합니다.
작업 로그의 진행 상황 모니터링
변환은 일반적으로 코드베이스 크기에 따라 15~45분이 걸립니다.
11단계: 변환 결과 검토
배포를 진행하기 전에 전체 변환 결과를 검토하여 모든 것을 테스트할 준비가 되었는지 확인합니다.
다음을 위해 리포지토리 브랜치에서 변환된 코드를 다운로드할 수 있습니다.
로컬 테스트 및 검증
IDE의 코드 검토
CI/CD 파이프라인과 통합
버전 제어 커밋
변환 요약을 다운로드하여 변환의 일부로 AWS 변환에서 수행한 자연어 변경 사항을 검토할 수도 있습니다.
변환 요약
작업 계획의 변환 요약으로 이동합니다.
전체 결과를 검토합니다.
스키마 변환: 변환된 객체, 작업 항목, 경고
데이터 마이그레이션: 마이그레이션된 테이블, 전송된 행, 검증 상태
코드 변환: 파일 변경, 줄 수정, 문제 해결
준비 점수: 전체 배포 준비 상태
변환 보고서 생성
AWS 변환은 포괄적인 변환 보고서를 생성합니다.
보고서 생성을 선택합니다.
보고서 유형 선택:
개요: 이해관계자를 위한 개략적인 개요
기술 세부 정보: 전체 변환 설명서
작업 항목: 필요한 인적 작업 목록
보고서 다운로드를 선택합니다.
보고서에는 다음이 포함됩니다.
변환 범위 및 목표
변환된 객체 및 코드
발생한 문제 및 해결 방법
검증 결과
배포 준비 상태 평가
테스트 권장 사항
12단계: 검증 및 테스트
프로덕션에 배포하기 전에 변환된 애플리케이션이 Aurora PostgreSQL에서 올바르게 작동하는지 확인합니다.
검증 유형
자동 검증: AWS 변환은 자동 검사를 수행합니다.
소스 데이터베이스에 대한 스키마 검증
데이터 무결성 확인
쿼리 동등성 테스트
연결 문자열 검증
구성 검증
인적 검증: 추가 테스트를 수행해야 합니다.
애플리케이션 기능의 기능 테스트
다른 시스템과의 통합 테스트
성능 테스트 및 벤치마킹
사용자 승인 테스트
보안 테스트
자동 검증 실행
작업 계획의 검증으로 이동합니다.
검증 실행을 선택합니다.
AWS 변환은 검증 테스트를 실행합니다.
데이터베이스 연결
스키마 호환성
데이터 무결성
애플리케이션 빌드
기본 기능
검증 결과 검토:
통과: 성공한 테스트
실패: 주의가 필요한 테스트
경고: 검토할 잠재적 문제
테스트 체크리스트
데이터베이스 기능:
모든 테이블 액세스 가능
저장된 프로시저가 올바르게 실행됨
함수는 예상 결과를 반환합니다.
적절하게 발사를 트리거합니다.
제약 조건이 올바르게 적용됨
인덱스는 쿼리 성능을 개선합니다.
애플리케이션 기능:
애플리케이션이 성공적으로 시작됨
데이터베이스 연결 설정됨
CRUD 작업이 올바르게 작동함
저장 프로시저 호출 성공
트랜잭션 커밋/롤백이 올바르게 수행됨
오류 처리는 예상대로 작동합니다.
데이터 무결성:
행 수가 소스와 일치
고유 기본 키
유효한 외래 키
계산된 열이 올바름
적절한 Null 처리
데이터 형식 호환
성능:
쿼리 응답 시간 허용 가능
연결 풀링 구성됨
인덱스 최적화
N+1 쿼리 문제 없음
배치 작업 효율성
리소스 사용 합리적
13단계: 배포
검증에 성공하면 현대화된 애플리케이션과 데이터베이스를 프로덕션에 배포합니다.
배포 옵션
Amazon ECS 및 Amazon EC2 Linux
배포 전 체크리스트
프로덕션에 배포하기 전에:
모든 검증 테스트 통과
성능 테스트 완료
보안 검토 완료
백업 및 롤백 계획 문서화
모니터링 및 알림 구성됨
새 환경에 대해 훈련된 팀
배포에 대한 정보를 제공받은 이해관계자
예약된 유지 관리 기간
Amazon EKS에 배포
작업 계획의 배포로 이동합니다.
ECS에 배포를 선택합니다.
배포 설정 구성:
클러스터: ECS 클러스터 선택 또는 생성
서비스: ECS 서비스 구성
작업 정의: 생성된 작업 정의 검토
로드 밸런서: ALB/NLB 구성
Auto Scaling: 조정 정책 설정
infrastructure-as-code(CloudFormation 템플릿 또는 AWS CDK 코드) 검토
배포 선택
배포 모니터링
AWS 변환은 애플리케이션을 배포합니다.
Aurora PostgreSQL 클러스터를 생성합니다.
데이터베이스 스키마 적용
데이터 로드(해당하는 경우)
애플리케이션 컨테이너를 배포합니다.
로드 밸런서를 구성합니다.
Auto Scaling 설정
배포 진행 상황을 모니터링하고 다음을 확인합니다.
인프라 프로비저닝
데이터베이스 초기화
애플리케이션 배포
상태 확인 통과
애플리케이션 액세스 가능
데이터베이스 연결 작동
정상 작업을 보여주는 로그
배포 후 검증
배포 후:
연기 테스트:
중요한 기능 확인
키 사용자 워크플로 테스트
통합 지점 확인
오류율 모니터링
성능 모니터링:
응답 시간 추적
데이터베이스 쿼리 모니터링
리소스 사용률 확인
애플리케이션 로그 검토
사용자 검증:
사용자 수락 테스트 수행
피드백 수집
모든 문제 해결
학습한 교훈 문서화
롤백 절차
배포 후 문제가 발생하는 경우:
즉시 롤백:
이전 애플리케이션 버전으로 되돌리기
SQL Server로 다시 전환(아직 사용할 수 있는 경우)
필요한 경우 백업에서 복원
부분 롤백:
특정 구성 요소 롤백
데이터베이스 변경 사항 유지
애플리케이션 코드만 되돌리기
수정 사항 전달:
Aurora PostgreSQL 버전에 핫픽스 적용
업데이트된 애플리케이션 코드 배포
해상도 모니터링
중요
필요한 경우 롤백을 활성화하려면 전환 후 일정 기간 동안 SQL Server 데이터베이스를 사용할 수 있도록 유지합니다.
배포 후 최적화
배포 성공 후:
성능 튜닝:
느린 쿼리 최적화
연결 풀 설정 조정
Aurora PostgreSQL 파라미터 미세 조정
인덱스 검토 및 최적화
비용 최적화:
적절한 크기의 Aurora 인스턴스
Auto Scaling을 적절하게 구성
스토리지 설정 검토
백업 보존 최적화
모니터링 설정:
CloudWatch 대시보드 구성
알림 설정
고급 모니터링 활성화
성능 개선 도우미 구성
설명서:
런북 업데이트
아키텍처 변경 사항 문서화
운영 팀 교육
문제 해결 가이드 생성