데이터베이스 마이그레이션 방안
MS, 마이그레이션 자동화 도구 'SQL Server Migration Assistant' 제공, 기간 및 비용 절감 이점
이종인
㈜온디멘드 수석컨설턴트
어느 정도 규모를 갖춘 회사를 가보면 전산시스템이 마치 잡화상처럼 다양한 하드웨어와 운영체제, DBMS, 개발 환경 등이 어지럽게 구성되어 있는 현장을 만날 수 있을 것이다. 이러한 환경은 유지 보수가 어려울 뿐만 아니라 급격하게 변화하는 현업의 요구사항을 빠르게 지원할 수 없는 구조적인 한계를 안고 있다. 당연히 현업의 불만은 쌓여갈 것이며, 유지보수 및 개발을 위한 고비용 저효율 구조에 문제를 제기할 것이다. 이것은 전산 현장에서 근무하고 있는 IT 인원이라면 누구나 느끼고 있는 현실일 것이다.

데이터베이스 마이그레이션 : 왜 해야 할까?
하지만 이러한 상황을 극복하기 위해 IT 인프라를 통합하려고 해도 해결해야 할 과제가 적지 않아 쉽사리 문제를 제기하지 못하고 있다. 이를테면 현재 IT 장비와 인력 등 IT 인프라의 ROI(투자 대비 효과)를 분석해야 하고, 향후 IT 인프라를 통합했을 경우와 현재를 비교해 생산성의 향상 여부를 계수화하는 작업을 선행해야 하고, IT 인프라를 통합할 때 발생하는 비용과 위험요소 등을 분석 예측해야 하기 때문이다.
많은 회사들은 오라클, 사이베이스, 인포믹스, SQL 서버 등 다양한 DBMS 기종을 혼합해 사용하고 있다. 이 때문에 각 DBMS들이 서로 연동하는 인터페이스 부분이나 서로 다른 SQL 구문 및 응용 프로그램의 개발 언어로 불필요한 비용을 지출하고 있으며, 비효율적인 유지 보수의 구조를 안고 있다. 따라서 IT 인프라의 통합을 고려한다면 가장 먼저 데이터베이스 시스템의 통합을 검토해야 할 것이다. 당연히 오라클이나 사이베이스 어느 한 쪽으로의 통합이 개발의 용이성이나 유지 보수의 편리성에서 훨씬 경제적이기 때문이다.
그렇다면, 어떤 제품으로 통합할 것인가를 이제 고민해야 할 것이다. 어떤 제품으로의 통합이 개발 환경을 효율적이고 신속하게 제공하며, 유지 보수가 쉽고 비용이 저렴하여 ROI를 높일 수 있는 지를 판단해야 할 것이다.
고가의 유지 보수 비용을 지불하고 숙련된 데이터베이스 관리자가 필요한 오라클과 같은 DBMS와 사이베이스 서버가 혼합된 환경이라면 어떠한가? 운영체제가 같은 유닉스 기종이어서 관리 작업 및 JAVA를 이용한 개발 환경은 유사하지만 서로 다른 SQL 구문으로 오라클과 사이베이스에 대한 관리자와 개발자를 각각 별도로 유지하든지 두 기종에 모두 능숙한 직원 들을 채용해야 할 것이다. 이러한 경우에 오라클로 통합한다면 고비용의 부담이 더욱 커질 것이고, 사이베이스로 통합한다면 오라클과의 호환되지 않는 기능으로 통합 개발의 효율성 및 성능 문제로 부담을 갖게 될 것이다.
이와는 별도로 데이터베이스를 어느 하나로 통합하기 위한 마이그레이션 수행 프로젝트의 기간이나 비용의 부담과 위험성 등을 고민하지 않을 수 없을 것이다. 여기에서 우리는 마이크로소프트 SQL Server를 떠올리지 않을 수 없다. SQL Server 2005는 기존에 오라클과 호환되지 않았던 기능을 획기적으로 강화하였고, 사이베이스와는 동일한 태생으로 SQL 구문의 호환성이 가장 높을 뿐만 아니라 가용성과 보안성을 강화해 엔터프라이즈급에 손색없는 DBMS로 성장하였기 때문이다. 이미 많은 선진 IT 기업들이 IT 인프라의 통합 방안으로 DBMS의 통합을 시도하였는데 SQL Server 2005로 통합을 결정한 곳이 적지 않다. 또 다양한 DBMS를 SQL Server로 마이그레이션을 수행하거나 수행 중인 곳도 많다.
이 같은 현상은 SQL Server가 빠르게 개발할 수 있는 C#이나 ASP.NET 등 개발 환경과 가장 잘 통합되고 엔터프라이즈 급의 안전성과 보안성을 갖추고 있기 때문이다. 뿐만 아니라 오라클이나 사이베이스 등 이기종 DBMS로부터의 효율적인 마이그레이션이 가능한 것도 그 이유로 들 수 있다. 마이크로소프트는 오라클이나 사이베이스에서의 마이그레이션의 위험성과 기간, 비용 등을 크게 줄일 수 있도록 마이그레이션 자동화 도구인 SQL Server Migration Assistant(SSMA)를 제공하고 있다.
이 같이 다양한 DBMS를 SQL Server로 통합하게 되면 현재 많은 기업의 전산실이 겪고 있는 비효율적이고 고비용의 IT 인프라를 저비용의 효율적인 인프라로 변환할 수 있을 것이다.

마이그레이션 수행 방안
IT 인프라의 통합을 위한 첫 번째 단계로 SQL Server 2005로 데이터베이스 마이그레이션을 수행하기로 결정했다면 이를 구현하는 효율적인 방안은 무엇일까? 성공적인 마이그레이션을 수행하기 위해서는 미리 분석해야 하는 사항들이 많다. 마이그레이션 프로젝트를 어느 부분까지 할 것인지 범위를 지정해야 하며, 해당 마이그레이션에 어떠한 위험요소가 도사리고 있는지도 분석해야 한다. 또한 오라클이나 사이베이스 등 이기종의 DBMS가 제공하는 기능과 동일한 기능이 SQL Server에 있는지 여부도 점검해야 한다.
이 같은 분석을 통해서 적절한 전략을 수립해야 하며 수립된 전략의 절차에 따라 마이그레이션을 수행해야 한다. 여기에다 위험 요소를 최소화할 수 있는 방법을 고려하고, SQL Server Migration Assistant와 같은 자동화 도구를 사용해서 기간이나 비용을 줄일 수 있는 지도 고려해야 한다. 마이그레이션 프로젝트를 수행하는 단계는 다음과 같다.

1. 마이그레이션 요구 사항 분석 및 마이그레이션 범위 결정
2. 기존 환경 진단 및 분석에 따른 마이그레이션 평가 및 평가
리포트 생성
3. 마이그레이션 위험 요소 및 기술 분석
4. 마이그레이션 방안 상세 설계를 통한 전략 수립
5. 스키마 개체 마이그레이션
6. 데이터 마이그레이션
7. SQL 구문 등 비즈니스 로직 마이그레이션
8. 응용 프로그램 마이그레이션
9. 마이그레이션 점검
10. 최적화 작업

1. 마이그레이션 요구 사항 분석 및 마이그레이션 범위 결정
먼저, 마이그레이션 프로젝트의 요구 사항을 분석해야 한다. 마이그레이션의 목적과 예산, 프로젝트 기간 등의 요구 사항에 따라서 마이그레이션의 범위가 결정된다. 마이그레이션 프로젝트의 범위는 다음처럼 구분할 수 있다.
① DBMS만 마이그레이션 하는 경우
② 웹 서버 등 응용 프로그램만 마이그레이션 하는 경우
③ 웹 서버 등 응용 프로그램과 DBMS를 마이그레이션 하는 경우
④ 웹 서버 등 응용 프로그램 및 미들웨어(TP Monitor),
DBMS 모두 마이그레이션 하는 경우
⑤ 웹 서버 등 응용 프로그램을 .NET으로 새로 개발하며
DBMS를 마이그레이션하는 경우
⑥ 마이그레이션과 함께 추가 기능의 모듈을 개발하는 경우 등

2. 기존 환경 진단 및 분석에 따른 마이그레이션 평가 및 평가 리포트 생성
마이그레이션의 요구 사항을 분석하고 이에 따른 범위가 결정되었다면 기존 시스템의 환경을 철저히 분석해야 한다. 응용 프로그램은 어떤 개발 언어로 작성되었는지, 해당 응용 프로그램을 마이그레이션 하기 위해서 필요한 기술은 무엇인지, 현재 운영중인 DBMS에서 해당 DBMS만 제공하는 기능 등을 사용하고 있는지 여부와 마이그레이션 해야 하는 데이터베이스 스키마 개체의 개수나 복잡성, 저장 프로시저 등 구문의 행 수나 복잡성 등을 평가해야 한다. 또한 각 운영체제나 DBMS의 환경 설정 사항도 면밀히 분석해야 한다. 그리고 이렇게 평가한 내용을 리포트로 작성해서 위험 요소를 분석하고 대응 방안을 마련하며, 프로젝트에 소요되는 인원과 기간을 산정하기 위한 자료로써 활용해야 한다.
이 같은 분석 및 평가 단계에서 마이그레이션 프로젝트의 복잡성과 소요 기간, 비용 등을 산출하여 주는 SQL Server Migration Assistant라는 도구를 활용하면 분석 작업과 평가 작업을 훨씬 효율적으로 수행할 수 있다.

3. 마이그레이션 위험 요소 및 기술 분석
마이그레이션 평가 리포트가 작성되었으면 해당 리포트를 근거로 해당 마이그레이션 프로젝트의 위험 요소를 분석해야 한다. 위험 요소는 다음과 같은 사항을 점검하고, 대응 방안을 수립해야 한다.
① 데이터베이스 디자인 변경
② 마이그레이션 대상 시스템의 동일 기능 지원 여부
③ 데이터 변환 시 한글 지원 문제
④ 기존 데이터의 정합성 검토
⑤ 업무 프로세스 변경
⑥ 새로운 기술의 도입
⑦ 대용량 데이터 마이그레이션 방법 및 오류 발생
⑧ 고가용성 기능 선택
⑨ 작업 소요 기간 초과
⑩ 프로젝트 수행 인원 교체 등

4. 마이그레이션 방안 상세 설계에 따른 전략 수립
마이그레이션의 범위도 결정되었고, 마이그레이션 대상 시스템의 분석도 완료되었다. 또한, 마이그레이션 작업 시의 위험요소도 분석하고 그에 대한 대응 방안도 수립하였다. 그렇다면 이제부터는 마이그레이션 프로젝트를 세부 단계로 분류하고, 담당자를 지정하며, 각 단계 업무 항목마다 작성되어야 할 표준화된 산출물을 지정해야 한다. 또한 각 작업 항목의 순서도 결정해야 한다. 이 같은 상세 설계와 전략의 수립은 정형화되고 표준화되어야 한다.
앞에서 살펴본 ▲마이그레이션 요구 사항 분석 및 마이그레이션 범위 결정 ▲기존 환경 진단 및 분석에 따른 마이그레이션 평가 및 평가 리포트 생성 ▲마이그레이션 위험 요소 및 기술 분석 등 세 단계를 유기적으로 수행해 빈틈없는 전략을 수립할 수 있도록 한다.

5. 스키마 개체 마이그레이션
오라클이나 사이베이스 등 이기종의 테이블, 뷰, 인덱스와 같은 개체는 SQL Server로 쉽게 마이그레이션 할 수 있다. 또한, SQL Server 2005는 테이블과 인덱스의 범위 기반 분할을 지원하므로 오라클에서 파티션된 대용량의 테이블을 마이그레이션 할 수 있다.

6. 데이터 마이그레이션
데이터 마이그레이션은 테이블의 개수와 데이터 양을 고려해서 그 방법을 결정해야 한다. 오류의 확률을 줄이기 위해서 가능한 동일한 방법으로 모든 테이블의 데이터를 마이그레이션하는 것이 효율적이다. ETL 도구를 사용한다면 ETL 도구를 사용하고, 복제를 사용한다면 복제라는 방법으로 모든 테이블의 데이터를 마이그레이션 해야 작업 수행 절차를 간소화하고 수행하기 용이하기 때문이다.
다만 일부 몇 개의 테이블이 대용량이거나 데이터의 정제 또는 변환이 필요할 경우에는 해당 성격 별로 구분하여 처리하는 것을 고려해야 한다. SQL Server는 SQL Server Integration Service라는 ETL 도구를 기본으로 제공하고 있다. 또한 마이그레이션 대상이 오라클인 경우에는 SQL Server 2005가 제공하는 오라클 게시자 복제를 통해 일정 기간 동안 변경되는 사항을 지속적으로 마이그레이션 할 수도 있다. 뿐만 아니라, 대용량 데이터인 경우에는 BCP 유틸리티나 BULK INSERT 구문 등을 통해 처리할 수도 있다.

7. SQL 구문 등 비즈니스 로직 마이그레이션
PL/SQL 구문을 마이그레이션하기 위해서는 오라클 마이그레이션 경우, PL/SQL과 SQL Server의 T-SQL에 모두 익숙한 전문가가 필요하다. 또한 PL/SQL로 작성된 패키지나 프로시저, 함수 등이 많은 경우에는 SSMA와 같은 마이그레이션 전문 도구를 사용할 수 있다.
소프트웨어 전문 업체가 제공하는 도구에 따라서 구문의 변환율 등이 다르지만 기본적인 변환은 마이그레이션 도구를 통해서 자동화하고, 마이그레이션 도구가 변환하지 못하는 부분을 전문 개발자가 수동으로 변환하면 작업 시간을 상당히 단축할 수 있다.

8. 응용 프로그램 마이그레이션
데이터베이스와 더불어 응용 프로그램을 마이그레이션하는 경우에는 다음과 같이 다양하게구분할 수 있다.
① 기존 응용 프로그램 환경을 그대로 사용하고 연결 설정 부분만 변경하는 경우
② 유닉스용 응용 프로그램을 Microsoft Windows Subsystem for UNIX-based Applications(SUA)와 Services For UNIX(SFU) 등을 통해 그대로 사용하는 경우
③ 응용 프로그램을 Win32API로 재 작성하는 경우
④ 응용 프로그램을 .NET으로 새로 작성하는 경우
웹 서버나 응용 프로그램을 마이그레이션 하는 경우에는 응용 프로그램 환경을 면밀하게 검토해야 한다. 웹 서버나 클라이언트 응용 프로그램이 유닉스 환경인 경우에는 연결 계층의 구성 부분도 면밀히 살펴봐야 한다. 응용 프로그램이 작성된 개발 언어에 따라서 마이그레이션 시의 위험 요소를 검토해야 한다.

9. 마이그레이션 점검 및 테스트
마이그레이션은 그 범위에 따라서 다음과 같은 사항을 수행해야 한다.
① 데이터베이스 스키마 개체 개수 점검
② 데이터 행수 및 정합성 점검
③ 프로시저 및 함수, 트리거 등 동일한 결과값 반환 여부 점검
④ 응용 프로그램의 오류 여부 점검
⑤ 백업 및 보안 정책 정합성 점검
⑥ 신규 시스템 환경 설정 점검

10. 최적화 작업
전문가의 손길이 각별히 필요한 단계이다. 오라클은 오라클이고, 사이베이스는 사이베이스이며, SQL Server는 SQL Server이다. 오라클의 PL/SQL로 작성된 구문을 동일한 결과가 반환되거나 동일하게 처리하도록 T-SQL로 작성했다고 해서 마이그레이션이 완료된 것은 아니다. 더욱 더 SQL Server에 맞게 T-SQL 구문을 효율적으로 작성하는 등 SQL Server의 상황에 맞게 최적화 작업을 수행해야 한다.

오라클과 사이베이스 마이그레이션 도구
마이크로소프트가 제공하는 SQL Server Migration Assistant (SSMA)의 주요 기능은 마이그레이션의 복잡성과 작업 시간을 산출하여 보고서를 작성하는 기능 뿐만 아니라 테이블 및 뷰와 같은 스키마 개체, 데이터, 그리고 오라클의 PL/SQL 코드 또는 사이베이스 T-SQL로 작성된 저장 프로시저와 트리거, 함수 및 동적 SQL 구문도 마이그레이션 할 수 있다.
SSMA를 사용하면 마이그레이션 프로젝트가 갖는 위험성과 작업 시간 및 비용을 크게 줄일 수 있다. SQL Server Migration Assistant For Oracle v2.0은 오라클 대부분의 버전(7,8,8i, 9i,10g)에서, SSMA For Sybase v1.0은 사이베이스 11.9.2 버전 이상부터 SQL Server로 마이그레이션을 지원한다.
SSMA가 제공하는 첫 번째 기능은 수행하고자 하는 마이그레이션 프로젝트의 복잡성 및 소요 시간, 비용을 평가하는 것이다. SSMA는 원본 데이터베이스를 분석하여 마이그레이션 대상의 개체 수와 복잡성, 소요 시간 등을 산출하여 평가 리포트를 제공한다.
또한 테이블, 뷰, 인덱스 등 스키마 개체를 자동으로 즉시 변환하거나 스크립트로 추출해서 분석하거나 적용할 수 있는 기능을 제공한다. 저장 프로시저나 함수와 같이 복잡하게 비즈니스 로직을 처리하는 구문의 경우에도 자동 변환을 수행하며, 일대일 매핑이 어려운 함수나 기능의 경우에는 SSMA 확장 팩을 통해 에뮬레이션하는 기능을 제공한다. 뿐만 아니라, 테스트 마법사(Test Wizard)를 제공해 마이그레이션된 데이터의 행수가 일치하는지 여부와 저장 프로시저나 함수가 각각 동일한 처리나 실행결과를 반환하는지 여부 등을 확인할 수 있다. 그리고 테스트 결과 리포트를 통해 결과를 검증할 수 있다.
물론 마이그레이션된 데이터의 정합성을 검증하는 작업은 계수인 경우에는 부분합과 전체합을 비교하는 등의 추가의 검증을 해야 하고, 대량의 데이터인 경우에는 트랜잭션의 크기를 조정해서 처리하거나 데이터의 변형이 필요한 경우에는 SQL Server Integration Service의 사용을 고려해야 한다. 또한 SSMA가 모든 비즈니즈 로직 구문을 변경할 수 없기 때문에 수작업으로 변경해야 하는 작업이 필요하지만 데이터베이스 마이그레이션이 갖는 위험 요소나 마이그레이션 소요 기간과 비용을 상당히 줄일 수 있으므로 마이그레이션을 고려하고 있는 사이트에게 사용을 적극 추천하고 싶다.
마이크로소프트에서는 이러한 DB 마이그레이션을 위해서 SSMA를 활용한 사전 진단 컨설팅서비스를 무상으로 제공하고 있다. SSMA가 지원하는 마이그레이션 자동화율을 파악하고, 수작업이 필요한 부분 및 응용 프로그램에 들어 있는 SQL 구문들을 수정하는데 걸리는 시간 등을 예측해 마이그레이션에 소요되는 전체 공수 및 비용을 산정한다. 그리고 기존 타 DB와 SQL Server로의 마이그레이션에 따른 전체 TCO 비교 등을 포함한 리포트를 제공한다.
저작권자 © 컴퓨터월드 무단전재 및 재배포 금지