AWS 기술 블로그

AWS Transform for SQL Server: SQL Server를 Aurora PostgreSQL로 .NET 코드와 함께 현대화

윈도우 기반의 환경에서 .NET 코드와 SQL Server는 업무용 애플리케이션으로 널리 사용되는 패턴입니다. 클라우드 환경이 인프라의 변화를 가져온 이후, 상업용 소프트웨어에 대한 오픈 소스의 대체가 용이해짐에 따라 윈도우 기반에서 리눅스 기반으로 변경하거나 데이터베이스 역시 PostgreSQL과 같은 오픈소스 데이터베이스로의 전환을 원하는 것은 라이선스 비용 절감의 측면에서 더 이상 미룰 수 없는 작업이기도 합니다. 하지만, 데이터베이스를 담당하는 부서와 개발 코드를 담당하는 부서가 일반적으로 파편화되어 있고, 각 부서 간의 긴밀한 협업을 통해 어디서부터, 어떻게 현대화를 시작해야 할지 결정하는 것은 그렇게 쉬운 결정이 아니라는 점만 확인하는 경우가 많이 있습니다.

이에 Agentic AI기반의 AWS Transform 서비스는 기존의 AWS Transform for .NET 서비스를 통해서 레거시 .NET Framework 기반의 코드를 크로스 플랫폼 .NET으로 업그레이드를 지원함으로써 Linux 호환가능한 코드로의 현대화를 지원했으며, 많은 고객분들의 피드백에 따라 현대화된 .NET 코드에서 사용 중인 SQL Server를 Aurora PostgreSQL로 관련 코드와 함께 이관하는 AWS Transform for SQL Server 서비스를 추가적으로 제공함에 따라 이제 전체 스택 윈도우 현대화를 지원하게 되었습니다.

앞으로 기술된 내용은 AWS Transform for SQL Server를 통해 SQL Server가 Aurora PostgreSQL로 현대화되는 과정을 살펴봄으로써 해당 서비스에 대한 이해를 돕고 현업에서 사용을 검토할 수 있도록 안내하는 목적으로 기술하였습니다.

AWS Transform을 사용하기

AWS Transform은 일반적으로 AWS IAM Identity Center를 통해서 제공되는 사용자를 이용하여 적절한 권한을 얻어 사용할 수 있으며, 사용전에 AWS 관리 콘솔에서 활성화를 해야 하므로, 이 부분에 대해서는 Setting up AWS TransformGetting started with AWS Transform 문서를 먼저 검토하십시오.

AWS Transform for SQL Server 사용 전 제한 사항

첫번째, 온프레미스에 존재하는 SQL Server를 소스로 변환하는 부분은 현재 제공되지 않습니다. 그러므로, 만일, 온프레미스 환경의 데이터베이스를 검토하신다면 먼저, EC2환경으로 SQL Server를 이관하시거나 RDS for SQL Server로 먼저 이관을 고려해야 합니다. (참고: SQL Server 데이터베이스 마이그레이션 방법)

두번째, Aurora PostgreSQL로 현대화 대상이 되는 SQL Server를 사용하는 .NET코드는 AWS Transform for .NET을 이용하여 먼저 Linux 호환가능한 코드로 변환해야 합니다. (참고: .NET 앱 현대화를 위해 Visual Studio IDE에서 Amazon Q Developer를 이용한 에이전틱 코딩 경험 공유) 이 단계(Phase 1) .NET 코드는 기존의 SQL Server와 관련 있는 ADO.NET 혹은 Entity Framework Core로 선 변환이 됩니다. 이후 AWS Transform for SQL Server를 통해 데이터베이스가 Aurora PostgreSQL로 변경되므로(Phase 2), 변경된 스키마 오브젝트나 Stored Procedure에 맞는 코드 변환을 추가적으로 진행합니다.

이제 AWS Transform for SQL Server에 대해서 시작해보겠습니다.

AWS Transform for SQL Server 진행을 위한 사전 준비사항

AWS Transform for SQL Server는 SQL Server를 Aurora PostgreSQL로 이관하고, 관련된 .NET 코드를 변환하는 작업을 End-to-End로 진행합니다. 그러므로, 해당 AI Agent가 미리 알아야 할 정보를 제공하고 적절한 권한을 부여해야만 합니다.

첫번째는 소스코드 저장소를 AWS CodeConnections를 통해 연결해야 합니다. 소스코드 저장소로는 현재, GitHub, BitBucket, GitLab, Azure Repo를 사용할 수 있습니다. 문서 Creating a source code repository connector를 참조하십시오.

두번째는 AI Agent가 소스 데이터베이스에 해당하는 SQL Server 접근 및 처리 (일반적으로 메타데이터나 테이블에 대한 읽기 권한)를 위한 계정을 소스 데이터베이스에서 생성하고 해당 자격 정보를 Secret manager에 임의의 Tag와 함께 저장합니다. 또한 AWS Transform은 DMS 작업을 위한 특정 IAM 역할이 필요하므로, 해당 역할이 없다면 반드시 생성합니다. 이 부분에 대해서는 문서 SQL Server setup를 참조하십시오.

사전 준비사항에 대해서 모두 확인이 되셨다면, AWS 관리 콘솔에서 AWS Transform를 검색하여 들어가면 설정 부분에서 확인할 수 있는 AWS Transform Tenant URL(혹은 Web application URL)을 통해 로그인하여 시작합니다.

Workspace생성과 Job 생성 과정

처음 볼 수 있는 화면(그림 1)은 Workspace를 생성하는 하는 화면입니다.

그림 1 Workspace 생성

Workspace를 생성한 이후에는 Job을 생성하는 화면을 아래의 이미지와 같이 확인할 수 있는 데, 좌측에 Chat창으로 통해서 진행을 할 수 있으며, 진행사항시 궁금한 사항이 있거나 문제 발생 시 질의를 통한 답변을 얻을 수 있습니다.

그림 2 Job 생성

그림 2에서 보여주는 것처럼 Windows Modernization을 선택하면 .NET modernization과 SQL Server modernization 둘 중 하나를 추가적으로 선택할 수 있습니다. 현 문서에서는 SQL Server modernization에 대한 부분으로 진행합니다.

그림 3 Job 계획 및 Chat 화면

Job이 실행이 되면, 그림 3 화면의 좌측에서 각 Plan의 진행사항을 확인할 수 있으며, 우측에는 Human-In-the-loop에 의한 사용자 입력창이나 진행사항에 대한 자세한 정보를 제공하는 것을 확인할 수 있습니다. 현 화면은 앞서서 언급한 적이 있었던 사전 준비 사항에 대해서 다시 한번 언급이 있습니다. 자세한 방법에 대해서는 View the steps in detail 부분을 클릭해서 추가적인 정보를 얻으실 수 있습니다. 그리고 현 화면에서는 우측 상단에 Awaiting user input의 메시지를 통해 사용자의 입력을 기다리고 있음을 확인할 수 있습니다.

그림 4 사전 준비 사항 확인

리뷰가 완료가 된다면, 그림 4 화면의 우측 하단에 Completed pre-requisites를 클릭하여 AI Agent가 관련 리소스들과 연결을 위한 Connectors를 생성하는 다음 단계로 진행합니다.

리소스에 대한 연결작업

그림 5 데이터베이스 connector 생성

먼저, Database connector는 AWS Account ID를 이용하여 생성합니다. 그림 5 화면의 우측 하단에 Submit 버튼을 클릭하면, 그림 6의 화면과 같은 Copy verification link를 제공합니다. 해당 링크를 복사하여 권한이 있는 사용자에게 전달 및 승인을 받아야 다음 단계로 넘어갑니다.

그림 6 승인 링크 복사

승인과 관련해서는 Workspace 단계에서 제공하는 좌측 메뉴 중에 Collaborators 탭이 존재하고 해당 탭 화면에서 필요하다면 Approver 권한의 사용자를 추가할 수 있습니다(그림 7 화면 참조). 각 역할의 권한과 관련한 자세한 정보는 문서 Understanding collaborator permissions를 참조하십시오.

그림 7 협력자 추가

권한있는 사용자의 승인이 완료가 되면 (그림 8 화면의 우측하단과 같이) 승인되었음을 확인할 수 있습니다.

그림 8 승인자에 의한 승인 완료

(그림 8 화면내에서) Submit 버튼을 클릭하면 소스 Connector를 생성하는 단계로 넘어갑니다.

그림 9 소스 connector 생성

소스 저장소는 사전 준비사항에서 마련된 CodeConnections에 연결되어 있으므로, 해당 Connection에 대한 Arn정보를 이용하여 생성합니다. (그림 9 화면에서) Submit 버튼을 클릭하여 생성 시 승인 절차는 Database Connector와 동일하게 verification link를 복사하여 전달하고 승인받습니다. 이후에는 DMS와 관련한 IAM 역할이나 AWS Secrete Manager에 데이터베이스 관련 자격정보가 존재하는 지 기타 AWS 리소스 관련 잠재적 문제등을 확인하는 검증 단계를 거치고 정상임을 확인하면, SQL Server와 관련한 리소스 검색 단계를 진행합니다.

리소스 검색 후 평가 계획 작업

그림 10 리소스 검색

데이터베이스 검색이 완료되면 소스 데이터베이스와 코드 소스 저장소 정보를 확인할 수 있으며, Repositories 탭을 클릭해서 해당 데이터베이스와 관련된 소스 코드 저장소의 원본 Branch 정보를 한 번 더 확인하는 것이 필요할 수 있습니다. 이후 Start assessment 버튼을 클릭하여 평가를 시작합니다(그림 10 화면 참조).

그림 11 데이터베이스 및 코드 평가

평가가 완료되면, DB관련 평가 결과, 예를 들어, 해당 데이터베이스 오브젝트가 Amazon Aurora PostgreSQL으로의 변환에 어느 정도 호환성을 갖고 있는 지 등의 정보를 PDF 문서로 다운로드 받을 수 있고 종속된 코드 정보(변환에 대한 복잡도, 대상 코드 라인 수 등)를 확인할 수 있습니다. 해당 과정에서의 분석을 기반으로 wave plan을 계획할 수 있습니다. Start wave planning 버튼을 클릭하여 다음 단계로 넘어갑니다(그림 11 화면 참조).

그림 12 평가 완료 및 리포트 확인

(그림 12 화면을 보듯) 평가 결과에 대해서는 리포트 형태로 확인이 가능하고, wave plan에 대해서는 다운로드 받아서 수정한 후에 업로드를 통해서 원하는 방향으로 이후 진행을 계획할 수 있습니다. Wave plan에 대해서 확인하셨다면 Confirm waves 버튼을 클릭하여 다음을 진행합니다.

그림 13 배포 단계 선택

해당 소스 코드에 대한 변환이 완료된 이후에 해당 애플리케이션의 배포를 지원합니다. 일반적으로 ECS 혹은 EC2환경을 구성하는 화면을 제공하여 해당 화면에서 제공하는 가이드를 통해 배포가 가능하며, 이미 운영 중에 CI/CD 파이프라인이 있다면, 코드 변환 후에 저장된 새로운 Branch의 코드를 이용하여 개별적으로 배포할 수 있습니다. 배포 여부는 (그림 13에서 보여주는 화면과 같이) 선택할 수 있으며, 배포 환경 설정은 변환작업이 마무리된 이후에 계획됩니다. 본 문서에서는 배포 작업을 진행하지 않습니다. 구체적인 배포작업과 관련하여 배포 Connector의 생성 및 배포환경 구성에 대해서는 다음의 문서들을 참조하십시오.

Wave plan에 따른 데이터베이스 및 코드 변환 작업

그림 14 Aurora PostgreSQL 생성

Wave plan의 첫 단계는 데이터베이스 스키마 변환과정입니다. 먼저 target database를 선택하여 새로운 Aurora PostgreSQL를 생성하실 수 있습니다(그림 14 화면 참조). 그렇지 않고 기존에 관리하시는 Aurora PostgreSQL이 존재한다면 해당 데이터베이스의 정보를 이용하여 구성하실 수 있습니다. 한가지 주의할 점은 대상 데이터베이스 생성시 보안그룹을 이용한 포트(일반적으로 5432 포트)를 오픈하는 등의 작업을 통해 연결 상에 문제가 되지 않도록 설정하는 부분을 고려하십시오. SQL Server setup 문서에서 Configure network security 부분을 참조하십시오.

그림 15 스키마 변환

(그림 15 화면과 같이) 스키마 변환이 완료가 되면, 상태 정보를 통해서 변환 정도를 확인할 수 있는 데, 만일, 100%완료되지 않았다면, 변환 리포트를 다운로드 받아서 검토할 수 있습니다. 해당 작업은 AI Agent가 AWS DMS에 요청하여 진행이 되는 작업입니다. 그러므로 문제를 확인하기 위해 Open in DMS를 클릭하여 DMS 환경하에서 수동적으로 문제를 해결하실 수 있습니다. 오류가 있다면 해당 오류 메시지 등을 프롬프트로 Agentic AI에서 활용하실 수 있습니다.

그림 16 데이터 이관

이후 소스 데이터베이스로부터 새로 생성된 Aurora PostgreSQL로 SQL Server에 존재하는 데이터를 이관할 수 있습니다. 이 경우도 AI Agent가 AWS DMS에 요청하여 데이터를 이관합니다. 여러 가지 상황에 따라 건너뛰고 진행하실 수 있습니다(그림 16 화면 참조). 데이터 이관과 관련한 과정에 대해서는 문서 Data migration (optional)을 참조하실 수 있습니다.

그림 17 소스 저장소에 새로운 Branch 생성

기존에 데이터베이스를 사용하는 종속된 코드는 SQL Server와 관련된 라이브러리를 이용한 코드로 작성이 이뤄져 있습니다. 이에 대해서 Aurora PostgreSQL과 관련된 라이브러리를 이용한 코드로 변환작업을 진행합니다. 진행이 완료되었을 때, 변환된 코드는 기존의 코드 저장소에 새로운 Branch로 Push됩니다. 이를 위해 현 단계에서는 Target branch 이름을 입력하고 Submit 버튼을 클릭하여 이후 코드 변환을 진행합니다(그림 17 화면 참조).

그림 18 코드 변환

코드에 따라서 Job plan의 현대화 과정은 달라질 수 있지만, 기존의 데이터베이스 관련 코드에 대한 단계별 변환과정을 거친 후에 완료상태를 확인할 수 있으며, 이에 대한 변환 리포트를 다운로드하여 검토할 수 있습니다. 문제가 있다면, 개발자에 의해 해당 리포트를 검토하여 문제 원인 파악 후에 다시 변환작업을 추가적으로 진행할 수 있습니다. 이후 Submit 버튼을 클릭하여 마무리합니다(그림 18 화면 참조).

마무리

AWS Transform for SQL Server는 SQL Server 데이터베이스와 관련 .NET 코드도 함께 현대화해주는 서비스입니다. 현대화 결과로 스키마, Stored Procedure 등이 Aurora PostgreSQL에 생성되고, .NET 코드도 새로운 데이터베이스에서 실행 가능한 형태로 변환됩니다. 변환 완료 후에는 스키마 정합성 확인과 개발환경에서의 코드 실행 테스트가 필요하며, 추가 문제 발생 시 Kiro와 같은 Agentic AI를 활용하여 해결할 수 있습니다. AWS Transform for SQL Server는 변환 작업 자체에 추가비용이 들지 않으며, 제공되는 워크플로우를 통해 데이터베이스 관리 부서와 개발 부서 간 협의 과정을 크게 단축할 수 있습니다. 따라서 AWS Transform for SQL Server로 대규모 변환을 먼저 수행한 후, Agentic AI로 나머지 문제를 해결하는 전략이 비용과 시간 측면에서 효율적입니다.

마지막으로, AWS Transform for SQL Server의 사용가능한 리전(현재 US East에서 가능합니다.)에 대한 확인과 Aurora PostgreSQL로 이전 가능한 소스 SQL Server 버전과 에디션에 대한 요구사항을 확인하여 업무에 활용하시길 기대합니다. (참조: SQL Server modernization)

Byung Chun Kang

Byung Chun Kang

강병천 솔루션즈 아키텍트는 오랜 기간 현업에서 다양한 분야의 윈도우 기반 애플리케이션에 대한 개발 및 디버깅을 전문적으로 다뤄온 경험을 가지고 있으며, 현재는 Microsoft 제품에서 수행하는 애플리케이션과 서비스들을 클라우드 환경으로 마이그레이션하는 분야에서 고객분들께 도움을 드리고 있습니다.