데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

데이터 마이그레이션(Migration)에 숨겨진 1분을 감소시켜라 - 1부

데이터 이야기
작성자
dataonair
작성일
2014-01-05 00:00
조회
9371


지금 이 순간에도 데이터 마이그레이션(Migration)을 수행하느라 작업에 열중인 사람들이 있을 것이다. 데이터 마이그레이션은 어떤 전략과 전술을 사용하는가에 따라 동일한 데이터 양에 대해 1시간이 소요될 수 도 있고 30시간이 소요될 수 도 있다. 이제 우리는 최적화된 데이터 마이그레션의 전략과 전술을 수립하여 최소의 시간으로 대용량의 데이터 마이그레이션을 수행할 준비를 해야 할 것이다.

데이터베이스 시스템을 운영하거나 또는 데이터베이스 시스템을 구축하는 프로젝트에서 가장 중요한 요소는 데이터이다. 하지만, 중요한 데이터에 대해 소홀히 여기고 있는 것이 사실인 것 같다. 데이터베이스 시스템을 재구축 하는 프로젝트를 수행하다 보면 시스템 오픈 시점에 기존 데이터에 대한 데이터 마이그레이션을 수행해야 한다. 시스템을 운영하는 과정에서도 크고 작은 프로젝트나 또는 현재 시스템의 디스크 등을 교체하기 위해 데이터 마이그레이션을 수행하게 된다. 이제는 과거와 달리 VLDB(Very Large Database)의 시대이다. 이러한 VLDB로 변하고 있는 시대를 살고 있는 우리로서는 데이터에 대한 작업에 많은 시간을 소요하게 된다. 그 중 데이터 마이그레이션 작업은 해당 시스템의 대부분의 데이터를 대상으로 작업을 수행하기 때문에 많은 시간과 비용이 발생하게 된다. 그러나 우리가 잊고 있는 것이 하나 있다. 그것이 바로 데이터 마이그레이션과 소요 시간의 상관 관계이다. 이제부터 데이터 마이그레이션과 소요 시간의 상관 관계를 분석하고 현재 우리가 당면해 있는 문제점을 확인해 보자.

데이터 마이그레이션 수행 시 두 가지에 집중해라.

데이터 마이그레이션을 수행하면서 가장 중요한 항목은 무엇인가 데이터 마이그레이션에서 우리의 목표를 모른다면 우리가 무엇을 준비해야 할지도 당연히 모를 것이다. 그렇다면 데이터 마이그레이션을 수행하면서 우리의 목표는 무엇인가

n 데이터의 정합성 유지

n 소요 시간의 최소화

데이터 마이그레이션을 수행하면서 우리의 목표는 데이터의 접합성을 유지하고 데이터 마이그레이션을 최대한 빠른 시간에 종료하는 것이다.

첫 번째로 데이터 마이그레이션에 대한 데이터의 정합성에 대해 확인해 보자. 데이터 마이그레이션을 수행한 후 기존 데이터와 비교하여 정보가 일치하지 않는다면 어떠한가 예를 들어, A 고객의 계좌 잔액이 기존에 100만원 이였지만 해당 시스템의 데이터를 마이그레이션 하고 1,000만원이 되었다면 어떠한가 반대의 경우가 발생한다면 어떠한가 이와 같이 기존 데이터와 마이그레이션이 수행된 데이터와 일치하지 않는다면 이는 데이터 마이그레이션 작업의 실패라고 봐야 할 것이다. 이와 같이 데이터의 정합성을 고려하지 않은 데이터 마이그레이션은 의미 없는 데이터 마이그레이션이 된다.

두 번째로 소요 시간을 확인해 보자. 데이터 마이그레이션 작업을 수행하는 시간은 일반 적으로 서비스 정지 시간과 비례하게 된다. 운영 중인 시스템이라면 서비스 정지가 발생할 가능 성이 높으며 프로젝트 중이라면 오픈 시간과 연관을 가지게 된다. 데이터 마이그레이션은 시간과의 싸움이라고도 한다. 그 만큼 데이터 마이그레이션의 소요 시간을 단축해야 하는 것은 VLDB로 변하고 있는 이 시대에 반드시 필요한 요소가 된다. 예를 들어, 10TB의 데이터베이스를 대상으로 데이터 마이그레이션을 수행하기 위한 소요 시간이 60시간이 산정되었다고 가정하자. 어떤 고객이 이를 수용하고 서비스를 60시간 정지시키고 작업을 할 수 있도록 승낙하겠는가

데이터의 정합성은 업무와 데이터를 분석하여 치밀한 계획을 수립한다면 데이터 마이그레이션 후에도 데이터의 정합성을 유지할 수 있을 것이다. 데이터 마이그레이션의 소요 시간에 대한 치밀한 계획을 수립한다면 감소시킬 수 있는 시간이 증가하게 된다. 데이터 마이그레이션의 소요 시간을 감소시키기 위해서는 데이터베이스에서 제공하는 여러 아키텍쳐를 사용해야 하며 그러기 위해서는 어떤 요소들이 데이터 마이그레이션에 영향을 미치는지 이해해야 할 것이다.

이제부터라도 데이터 마이그레이션의 소요 시간을 감소시킬 수 있는 많은 방법들을 이해하고 실제 적용하는 노력이 필요할 것이다.

마이그레이션과 소요 시간의 상관 관계를 분석하자.

많은 사이트를 지원하면서 본인이 마이그레이션을 수행한 데이터의 전체 크기가 100TB는 넘는 것 같다. 100TB의 데이터를 마이그레이션 하면서 어떤 경우에는 작은 크기의 데이터를 10시간에 마이그레이션을 한적도 있고 어떤 경우에는 큰 크기의 데이터베이스를 10시간에>분명히 데이터 양에는 많은 차이가 있지만 소요 시간은 동일한 경우가 적지 않았다. 이러한 데이터 마이그레이션의 시간 차이는 여러 가지 이유에서 발생하게 된다. 그렇다면 동일한 데이터 양에 대해 마이그레이션을 수행할 경우 시간 차이가 발생하는 이유는 무엇일까 아래와 같은 이유에서 데이터 마이그레이션에 의한 소요 시간 차이가 발생할 수 있다.

n 하드웨어 및 기타 물리적 자원의 차이

n 마이그레이션 대상의 범위 차이

n 마이그레이션 전략의 차이

n 마이그레이션을 수행하는 DBA의 기술력 차이

첫 번째로 하드웨어 및 기타 물리적 자원의 차이에 의해 데이터 마이그레이션에 대한 소요 시간의 차이가 발생할 수 있다. 마이그레이션을 수행하는 모든 시스템이 모두 동일한 하드웨어에 동일한 자원을 보유하고 있을 수는 없다. 특히, 데이터 마이그레이션은 디스크 속도에 많이 좌우된다. 디스크 속도가 빠르다면 마이그레이션 속도의 향상은 당연한 사실이다.

많은 사람들이 CPU 개수가 많다면 마이그레이션 속도가 많이 향상되지 않는가에 대해 자주 질문을 한다. CPU 개수가 많다면 성능이 좋아지는 부분도 있겠지만 우리가 기대하는 만큼의 성능 향상을 기대할 수는 없다. 앞서 언급했듯이 마이그레이션 속도는 디스크 속도와 비례 관계가 있다. 하지만 CPU 개수가 많다면 이에 따라 우리가 얻을 수 있는 이득이 있다. 우리가 얻을 수 있는 이득은 동시에 여러 개의 마이그레이션 작업을 수행할 수 있다는 것이다. 예를 들어, 어느 사이트에 접속하여 영화를 다운로드 받는다고 가정하자. 다운로드 받아야 할 영화가 10개라고 가정할 경우 한번에 다운로드 받을 수 있는 개수는 몇 개인가 이는 네트워크 속도와 다운로드를 받는 사람의 PC의 사양등에 달려있다. 또한, CPU의 개수가 몇 개인지에 따라서도 좌우될 수 있다. 이와 같은 현상이 실제 데이터베이스에서 데이터 마이그레이션 수행할 경우에도 동일하게 적용되는 것이 현실이다.

이와 같이 데이터의 마이그레이션은 하드웨어 및 기타 물리적 자원의 차이에 의해 소요시간의 차이가 발생할 수 있다. 그 중에서도 가장 중요한 것은 디스크의 속도라는 것을 명심하길 바란다. 또한, CPU 개수가 여러 개이며 디스크 경합이 발생하지 않는다면 한번에 여러 개의 작업을 수행하여 소요 시간을 단축시킬 수 있을 것이다.

두 번째로 마이그레이션 대상에 따른 소요 시간 차이가 발생할 수 있다. 많은 사람들이 데이터 마이그레이션은 실제 데이터만 마이그레이션을 하면 종료라고 생각할 수 도 있다. 하지만 데이터만 마이그레이션을 수행해서 과연 어떻게 사용하겠는가 데이터만 마이그레이션한다면 이것만으로는 어플리케이션이 수행되는데 많은 어려움이 발생하거나 또는 많은 어플리케이션이 수행되지 못할 것이다. 이와 같은 현상이 발생한다면 데이터 마이그레이션이 무슨 의미가 있겠는가

그렇다면 데이터 마이그레이션의 대상으로 선정될 수 있는 것에는 무엇이 있겠는가 데이터를 제외한 마이그레이션 대상은 바로 오브젝트이다. 오브젝트라는 것이 무엇인가 데이터베이스에는 함수, 트리거 및 시퀀스 등 어플리케이션에 필요한 모든 것을 오브젝트로 구성하게 된다. 이와 같은 테이블을 제외한 오브젝트는 데이터를 포함하고 있지 않기 때문에 데이터 마이그레이션의 주요 대상으로 제외될 수 있다. 하지만 이와 같은 오브젝트를 제외한다면 해당 오브젝트를 사용하는 어플리케이션에는 장애가 발생할 것이다.

데이터를 저장하는 테이블을 제외한 오브젝트의 마이그레이션은 수 작업이 많이 동반되기 때문에 데이터 마이그레이션의 소요 시간을 증가 시킬 수 있다. 또한, 오브젝트 중 인덱스는 실제 물리적인 공간을 사용하므로 인덱스의 마이그레이션은 데이터의 마이그레이션 만큼 소유 시간이 발생하게 된다. 따라서, 마이그레이션 전략에는 반드시 오브젝트에 대한 마이그레이션 전략을 포함하고 있어야 할 것이다.

세 번째로 마이그레이션 전략에 의해 마이그레이션 소요 시간의 차이가 발생할 수 있다. 데이터 마이그레이션을 수행하기 위해서는 많은 방법이 존재한다. 데이터베이스에서 제공하는 마이그레이션 방법을 사용할 수 있다. 또한, 데이터 마이그레이션을 위한 전용 툴(Tool)을 이용하여 데이터를 마이그레이션 할 수도 있다. 또 한가지의 방법은 디스크 업체에서 제공하는 디스크 복제(CPOPY) 솔루션을 이용할 수 있다. 이 중에서 데이터 마이그레이션 전용 툴과 디스크 업체에서 제공하는 디스크 복제 솔루션을 이용하는 것은 일반적으로 비용이 추가된다. 또한, 디스크 복제 솔루션을 사용한다면 1:1 데이터 마이그레이션만을 지원하므로 제한적인 데이터 마이그레이션만 가능하다. 그렇기 때문에 많은 경우에 데이터베이스에서 제공하는 기능을 이용하여 데이터 마이그레이션을 수행하게 될 것이다.

데이터베이스에서 제공하는 기능을 이용할 경우에는 어떻게 전략을 수립하고 그에 맞는 최적화된 아키텍쳐를 어떻게 구성하는가에 따라 데이터 마이그레이션 소요 시간의 차이가 발생하게 된다.

네 번째로 데이터 마이그레이션의 소요 시간은 데이터 마이그레이션을 수행하는 DBA의 기술력에 의해 엄청난 차이가 발생하게 된다. 아마도 해당 항목이 데이터 마이그레이션의 소요 시간 차이를 가장 많이 발생시키는 항목일 것이다. 어느 사이트를 지원 했을 때 해당 데이터베이스는 5TB 정의의 크기였다. 해당 데이터베이스를 다른 시스템으로 마이그레이션을 수행하는 과정에서 해당 DBA는 데이터베이스에서 기본적으로 제공하는 유틸리티인 익스포트/임포트를 이용하여 대용량의 데이터베이스인 해당 데이터베이스를 마이그레이션을 수행하는 것을 보았다. 이와 같이 수행하여 작업 시간은 몇 일이 소요된 적이 있었다. 많은 DBA들이 사용하는 방법이 익스포트/임포트를 이용한 데이터 마이그레이션이다. 하지만 해당 마이그레이션 방법은 데이터 마이그레이션 방법 중 속도가 가장 느린 방법 중 하나이다. 만약, DBA의 기술력이 높고 많은 경험이 있었다면 데이터 마이그레이션 방법 중 가장 느린 익스포트/임포트 방법을 선택하였겠는가 물론, 익스포트/임포트 방법은 매우 단순하고 명령어 몇 개로만 데이터 마이그레이션을 종료할 수 있기 때문에 선택했을 수도 있을 것이다. 하지만, 5TB의 데이터를 직접 로딩(Direct Loading) 등의 아키텍쳐를 사용하여 데이터 마이그레이션을 수행한다면 소요 시간은 1/10 이상으로 감소하게 될 것이다. 데이터 마이그레이션을 담당하는 DBA의 기술력에 의해 데이터 마이그레이션 속도는 동일 양의 데이터에 대해 1시간이 소요될 수 도 있고 10시간이 소요될 수 도 있다.

데이터 마이그레이션은 위와 같이 4가지 이유로 동일 양의 데이터에 대해 마이그레이션을 수행하여도 천차만별의 소요 시간 차이를 보이게 된다. 결국, 데이터 마이그레이션과 소요 시간과의 상관 관계는 데이터의 양, 하드웨어와 디스크 등의 자원 및 CPU 개수에 의한 관계도 중요하지만 가장 중요한 것은 실제 마이그레이션을 수행하는 DBA의 기술력이라고 생각한다.