Introduction to Database Migration

Hyun·2025년 7월 7일

학습 목표

  • 데이터베이스를 AWS로 마이그레이션 하는 단계를 설명
  • AWS SCT의 기능과 AWS SCT가 어떻게 마이그레이션에 도움이 되는지 설명
  • AWS DMS의 기능과 AWS DMS가 어떻게 마이그레이션에 도움이 되는지 설명한다.

AWS로 마이그레이션

  • 클라우드 마이그레이션은 더 쉬운 자동화와 탄력성을 제공하여 비용을 절감하는 동시에 공급업체 종속을 줄이면서 라이선스 비용을 절감할 수 있다.

데이터베이스 마이그레이션 이유

  • 데이터베이스 현대화 : 디지털 시대에서 경쟁을 위해 비즈니스 민첩성을 확보할 수 있도록 레거시 데이터베이스 엔진에서 최신 데이터베이스 엔진으로 데이터를 이동
  • 데이터베이스 마이그레이션 : 엔터프라이즈 애플리케이션의 컨텍스트에서 플랫폼 간에 데이터를 이동하는 것
  • 데이터베이스 복제 : 모든 사용자와 동일한 수준의 정보르르 공유하기 위해 한 컴퓨터/서버의 데이터베이스에서 다른 컴퓨터/서버의 데이터베이스로 데이터를 전자적으로 자주 복사

AWS로 마이그레이션의 장점

  • 간편한 사용
    • AWS DMS는 드라이버나 애플리케이션을 설치할 필요가 없다.
    • 일반적으로 소스 데이터베이스를 변경할 필요도 없다.
  • 최소한의 가동 중지
    • 데이터베이스 마이그레이션 과정 중 가동 중지가 거의 없다.
  • 널리 사용되는 데이터베이스 지원
    • 널리 사용되는 상용 및 오픈 소스 데이터베이스 엔진으로 데이터를 마이그레이션 할 수 있다.
  • 저렴한 비용
    • 마이그레이션 프로세스 중 사용한 컴퓨팅에 대한 비용만 지불
  • 빠르고 쉬운 설정
    • AWS Management Console에서 몇분 내로 파라미터를 정의하여 task를 설정할 수 있다.
  • 안전성
    • 복원력과 자동 복구력이 뛰어나다.

AWS로 마이그레이션 방법

  • AWS DMS와 AWS Schema Conversion Tool(AWS SCT)을 사용하면 데이터베이스를 AWS로 빠르고 안전하게 마이그레션 할 수 있다.
  • AWS DMS를 이용하면 마이그레이션 중에서도 소스 데이터베이스를 사용하는 애플리케이션의 가동 중지 시간을 최소화 할 수 있다.
  • 동일한 데이터베이스 엔진으로 마이그레이션하거나 엔진을 전홚하여 데이터플랫폼을 현대화 할 수 있다. 또는 데이터를 복제하여 소스 및 타겟 데이터베이스를 동기화하기도 한다.
  • ex)
    온프레미스 Oracle DB → AWS DMS → Amazon RDS for Oracle
  • 마이그레이션에 사용되는 Tool
    • AWS DMS
      • 가장 기본적인 수준에서 복제 소프트웨어를 실행하는 AWS 클라우드 서버
      • 소스와 타켓을 연결을 만들어 어디에서 추출하고 어디에 로드할 것인지 AWS DMS에 알린다. 그후 AWS DMS에서 데이터를 이동하는 task를 예약한다.
    • AWS SCT
      • 데이터베이스 엔진을 전환하려는 경우 AWS SCT가 기존 데이터베이스 스키마를 타켓 플랫폼을 변환할 수 있다.
      • 스키마에는 테이블, 인덱스, 뷰 및 저장 프로시저와 애플리케이션 코드가 포함되어있다.
  • 데이터베이스를 마이그레이션하기 위해서는 12단계 프로세스를 따라서 동작한다. 크게 스키마 마이그레이션, 데이터 마이그레이션, 교육 및 지원 3 부분으로 나눌 수 있다.

스키마 마이그레이션

1단계 : 마이그레이션 구상 및 평가(AWS SCT)

  • 계획 수립을 수행을 통해 데이터베이스 스키마, 데이터 볼륨, 데이터 유형, 리소스 및 애해 관계자를 기초로 필요한 작업 범위를 이해해야 한다.
  • 이 단계에서 수행해야 할 것은 현재 환경과 알려진 위험을 평가하고 마이그레이션에 대한 비즈니스 사례를 만드는 것이다.
  • 이기종 데이터베이스 마이그레이션을 수행하고자 할 경우, AWS SCT를 활용한다. AWS SCT는 기존 시스템의 물리적 및 논리적 구성 요소를 카탈로그로 작성하여 마이그레이션 프로세스를 지원할 수 있다. 하나 이상의 인기있는 오픈 소스 엔진으로 마이그레이션하는 데 필요한 작업량을 평가한다.
  • 평가 보고서는 자동으로 변환할 수 있는 항목, 수동 수정 적용이 필요한 객체 및 중요한 수정 작업이 필요한 객체를 보여준다.

2단계 : 데이터베이스 스키마 변환 (AWS SCT)

  • 2단계에서는 데이터베이스 객체를 소스 엔진에서 타겟 엔진으로 변환하는 것이다. 여기에는 테이블, 인덱스, 제약 조건, 외래 키, 트리거 및 저장 프로시저 변환이 포함된다. 변환 과정에서도 AWS SCT가 역할을 수행한다.
  • AWS SCT가 단순(회색), 보통(노란색), 복잡(빨간색) 작업에 대해서 다른 색상으로 변환할수 없는 항목을 표시한다.
  • 소스 데이터베이스 기능에 AWS SCT가 변환할 수 있는 타겟 데이터베이스의 정확히 치환할 수없는 경우 타겟 엔진의 기능을 기반으로 디자인 패턴을 사용하여 객체를 다시 코딩해야 한다.이 프로세스를 지원하기 위해 가장 많이 사용되는 소스 및 타겟 조합에 대한 디자인 패턴이 포함된 마이그레이션 플레이북을 제공한다.
  • 플레이북은 이기종 데이터베이스 마이그레이션을 위한 모범 사례에 중점을 둔 일련의 안내서이다.
    • Microsoft SQL Server → Aurora MySQL
    • Microsoft SQL Server →Aurora PostgreSQL
    • Oracle → Aurora PostgreSQL

3단계 : 애플리케이션 변환 (AWS SCT)

  • 애플리케이션 변환은 Java 또는 C와 같은 언어로 작성된 애플리케이션 코드를 새 타켓 데이터베이스에 이식하는 과정이다.
  • 이 단계가 마이그레이션 프로세스의 가장 복잡한 측면이기도 하다. 오래 전에 더 이상 사용할 수 없는 리소스에 의해 작성된 데이터베이스에 대해 실행되는 애플리케이션이 있을 수 있다. 이러한 애플리케이션은 미션 크리티컬한 경우가 많으며 광범위한 연구 및 테스트 없이는 다시 작성하기가 어려울 수 있다.
  • AWS SCT를 사용하여 애플리케이션 코드에 포함된 SQL 문을 추출해 타겟 데이터베이스에서 작동하도록 SQL을 변환하고, 변환된 코드로 애플리케이션 프로그램을 다시 빌드할 수 있게 한다.

4단계 : 스크립트 변환 (AWS SCT)

  • 스크립트 변환 단계에서는 추출, 변환 및 로드(ETL) 프로세스, 데이터베이스 유지 관리, 재해 복구 및 기타 프로세스에 사용되는 배치 스크립트를 살펴본다.
  • 이러한 스크립트는 데이터베이스를 사용하는 애플리케이션과 직접적인 관련은 없지만 새 데이터베이스 엔진에서 작동여부를 확인하기 위해 분석이 필요하다.

5단계 : 서드 파티 애플리케이션과의 통합

  • 많은 기업에서도 서드 파티 애플리케이션에 대한 데이터베이스를 지원하거나 서드 파티 애플리케이션 데이터베이스 액세스 하도록 해야한다.
  • 다른 데이터베이스에 액세스 할수 있도록 일부 애플리케이션을 작성할 수 있지만 여전히 애플리케이션을 테스트하고 예상대로 작동하는지 확인해야 한다.

데이터 마이그레이션

6단계 : 데이터 마이그레이션(AWS DMS)

  • 이 단계에서는 소스에서 타켓으로 데이터 레코드를 이동하는 프로세스이다. 흔히 데이터베이스 마이그레이션을 생각할 때 수행되는 과정이다.
  • 대용량 데이터를 처리하고 애플리케이션을 타겟 시스템으로 전환할 수 있을 때까지 소스 시스템과 타겟 시스템은 동기화된 상태로 유지해야 하는 경우 데이터 마이그레이션이 어려울 수 있다.
  • 또한, 타겟 데이터베이스의 유형을 변경하는 경우 타겟 시스템 요구 사항을 준수하기 위해 대부분의 데이터 값(전체는 아님)을 변환해야 한다.
  • AWS DMS는 전체 로드 마이그레이션, 지속적인 복제 또는 이들 조합의 세 가지 방법 중 한나로 데이터를 이동한다.
    • 소스의 기존 데이터가 타겟으로 이전되는 전체 로드 마이레이션 도중 AWS DMS은 소스 데이터 스토어에 있는 테이블의 데이터를 타켓 데이터 스토어에 있는 테이블로 로드한다.
    • AWS DMS는 또한 지속적인 복제를 지원하여 타겟을 트랜잭션 활성 소스와 동기화한다.
    • 초기 전체 로드를 사용한 다음 지속적 복제를 통해 두 가지 유형의 데이터 전송을 결합하기도 한다.

7단계 : 전체 시스템 기능 테스트

  • 데이터 및 애플리케이션을 타겟 데이터베이스로 마이그레이션한 후 다음 단계는 전체 시스템들이 잘 동작되는지 기능 테스트를 수행한다.

8단계 : 성능 튜닝

  • 애플리케이션에서 기능 테스트의 일부로 충족할 성능 기준을 지정하는 경우가 존재한다.
  • 성능 문제가 발견되면 사용자 대상 애플리케이션부터 SQL 문, 데이터베이스 엔진 및 관련 스토리지 계층에 이르기까지 각 시스템 레벨에서 병목 현상이 있는지 점검을 수행한다.

9단계 : 통합 및 배포 (AWS DMS)

  • 통합 및 배포 단계는 새로운 데이터베이스 시스템으로 전환하는 프로세스이다. 여기에는 일반적으로 애플리케이션이 새 데이터베이스 시스템으로 전환되는 방법을 자세히 설명하는 일련의 단계가 포함된다.
    • 통합 : 처음에는 시스템이 원래 데이터베이스와 통신한다. AWS DMS를 사용하여 전체 로드 마이그레이션을 수행한 다음 지속적인 복제를 설정한다.
    • 배포 : 데이터가 제대로 전송되고 있는지 확인하고 새 데이터베이스로 애플리케이션을 테스트 했다고 가정하면 새 데이터베이스와 통신하도록 애플리케이션을 변경한다. 이 후 지속적인 복제가 중지된다.

교육 및 지원

10단계 : 교육 및 지식 전달

  • 이기종 마이그레이션을 수행하는 경우 팀원들이 이동하는 엔진에 익숙하지 않을 수 있다. 또한 클라우드 또는 AWS 기술에 익숙하지 않을 수도 있다.
  • 모두가 기술을 잘 알고 있더라도 마이그레이션 하는 과정 중 애플리케이션과 앞으로 작동 방식에 대한 유용한 정보를 발견할 가능성이 존재한다. 또한 마이그레이션 과정 중 테이블, 저장 프로시저 및 애플리케이션 코드를 약간 변경했을 수 있다. 이런 경우 변경 사항이 문서화되어있는지 파악하고 해당 지식을 팀원과 공유해야 한다.

11단계 : 버전 문서화 및 제어

  • 문서화는 시스템을 프로덕션에 투입하기 전에 해야할 가장 중요한 작업 중 하나이다.
  • AWS에서는 IaC를 지원하고 코드로 모든 클라우드 인프라를 관리하기 위한 서비스와 도구를 제공한다. 완전히 새로운 환경을 만들고 있기 때문에 모든 단계를 문서화할 수 있는 좋은 기회이다.
  • 또는 모든 아티팩트를 코드로 치리하는 것도 고려할 수 있다. 버전 관리 시스템을 사용하고 데이터베이스 또는 서버 인프라의 변경 사항에 대한 코드 검토도 필요하다.

12단계 : 프로덕션 후 지원 계획

  • 마이그레이션된 애플리케이션이 실행되면 몇 가지 지원이 필요하다. AWS를 사용하면 백업과 기타 지원 작업을 자동화 할수 있다.
profile
DevSecOps & Cloud Engineer를 꿈꾸는 엔지니어

0개의 댓글