데이터이야기

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

정리의 기술

데이터 이야기
작성자
dataonair
작성일
2014-11-07 00:00
조회
6780


정리의 기술

사람들은 살면서 누구나 한번쯤은 자신의 물건을 버려야 할 때, 버려야 할지 말지 고민에 빠집니다. 혹시, 나중에 사용할 수도 있겠다는 생각과 잘 사용하지 않지만, 막상 버려야 하니 아깝다는 생각이 들 때도 있습니다.
또한, 자신에게는 가치가 없어져 버려야 할 물건이지만 다른 사람에게는 정말 필요한 물건일 수도 있습니다.

데이터 또한 이러한 물건들과 크게 다르지 않은 것 같습니다.

이번 시간에는 최근에 필자가 'DB 규모 합리화를 통한 비용절감 TF' 에 6주간 참여하면서 느꼈던 부분을 이야기 하려고 합니다.

먼저 TF추진 전략은 아래와 같습니다.

1. 미사용 데이터 정리
2. ILM(Information Lifecycle Management)
3. DB 압축
4. 데이터 관리 프로세스

TF 에서 가장 먼저 수행했던 부분은 1단계로 미사용 데이터 정리를 위해 조사대상 DB 식별 및 테이블 대상 미사용/보관주기 조사였습니다.
필자가 근무하는 곳의 시스템의 DB개수만 수백개 이상이 되기 때문에, TF 투입 인력 및 기간에 대한 리소스 제약으로 인해 전체를 조사할 수 없었고,1TB 이상 할당된 DB 대상(약 60종)을 선정하였고, 대상DB의 전체 사이즈의 80%를 점유하거나 10GB 이상의 테이블에 대해서만
사용여부 확인 및 부관주기를 조사하는 작업을 진행 했었습니다.
인프라, AP 유관 부서들을 통해 자료를 수집하는데만 거의 3주가 소요 되었는데, 이때가 가장 힘들었던 시간이었던 것 같습니다.

시스템 별로 도입시기와 데이터 관리 수준 차이 등으로 인해 전체 테이블 대비 미사용 테이블 비율이 차이가 있었지만, 조사 대상 전체 DB에 대해서 미사용 테이블들이 식별되었고, 평균 10% 정도는 미사용 테이블이 존재 했었습니다.


시스템 규모도 크고, AP 담당자들이 자주 변동되기 때문에 AP 담당자 조사만으로는 미사용 테이블을 식별하는 것이 쉽지 않았기에 미사용 테이블을 식별하기 위해서 아래와 같은 3가지 방법을 병행 수행했었습니다.

1. AP 담당자 조사
2. 테이블명 패턴 분석
3. 오브젝트 모니터링

두번째 테이블명 패턴 분석 방법은 TEMP, TMP, BACK, BAK, _YYYYMMDD 등 임시성 키워드가 포함된 테이블명을 분석하는 것입니다. 거의 대부분의 시스템들에서 이러한 임시성으로 추정되는 미사용 테이블들이 존재하였고, 특정 시스템의 경우는 '테이블명_0323' 과 같은 패턴의 테이블들이 많이 발견되었고, AP담당자와 확인 결과 2013년 3월 23일에 특정 프로젝트로 인해 생성해 놓은 임시 테이블로 확인 되었고, 이러한 테이블들의 사이즈가 대략 2TB 정도 되었습니다.

세번째 오브젝트 모니터링 방법은 일정기간 SQL 수행 통계정보 기반으로 분석한 내용으로
DBMS별로 미사용 Object(테이블/인덱스)를 판단하기 위한 기능이나 관련 딕셔너리 뷰를 제공합니다.
가령, Oracle의 경우 FGA(Fine Grained Auditing)을 위해 DBMS에서 제공하는 DBMS_FGA 패키지를 활용하거나, 인덱스 사용 모니터링을 설정할 수 있으며, ora_rowscn, scn_to_timestamp 의 Psuedo 컬럼을 활용하여 미사용 오브젝트를 식별하기 위해 도움을 주며,
SQL Server의 경우 sys.dm_db_index_usage_stats 뷰의 최종접근일시,
Teradata의 경우 DBC.Tables, DBC.Columns, DBC.Indces 뷰들을 통해 각각 테이블, 컬럼, 인덱스에 대한 접근횟수, 최종접근일시 정보를 제공하여 미사용 Object 식별에 도움을 줍니다.

생성된 데이터는 시간이 지날수록 가치가 떨어지기 때문에, 모든 데이터를 고비용의 스토리지에 보관하는 것은 비용에 대한 낭비가 발생합니다.
그렇기 때문에, 기업에서는 데이터 보관 주기를 정의하고, 자주 활용되지 않는 오래된 데이터에 대해서는 저가의 스토리지로 이관하여 저장하는 ILM 을 수행하게 됩니다.

TF에서 ILM 관련하여 진행했던 내용으로
조사 대상 테이블들에 대해 데이터 보관 주기를 조사했지만, 데이터 보관 주기가 정의되어 있지 않은 테이블들이 많았고, 데이터 보관 주기가 정의되어 있어도 실제로 Archive & Purge 작업을 수행하지 못하는 경우도 존재 했었습니다.
스토리지 증가량 추이 및 월증가량을 분석하여, 선형적인 증가 추이와 향후 12개월 이내 스토리지 부족이 예상되는 시스템들에 대해서ILM 확대 적용 대상 시스템들을 선정하는 작업을 진행하였고, 비용 절감 효과를 분석하는 것도 중요한 부분이였습니다.

필자가 느끼기에 성공적인 ILM 수행을 위해서는 ILM 솔루션 도입보다도 법률 검토 및 사업부서 협의를 통해 데이터 보관 정책을 수립하는 것이 가장 중요하며, 우선되어야 한다고 생각합니다.

3단계로 진행한 DB 압축은 TF 수행 기간이 길지 않았기에 DB 압축 솔루션에 대한 기술 검토와 대상 DB에 대한 압축 적용 현황을 정리 했었습니다.
보통, DW 시스템들의 경우는 대용량 테이블들이 많이 존재하기 때문에 거의 대부분이 구축 당시 부터 테이블 파티션 설계와 압축이 적용되어 있었고, OLTP 시스템의 경우는 압축이 적용되어 있는 테이블들이 많지는 않았습니다.
OLTP 시스템이라고 무조건적으로 압축 대상에서 배제하는 것 보다는 대용량 파티션 테이블들에 대해서 과거 데이터에 대한 업데이트가 거의 발생하지 않는 성격의 실적정보, 월별 집계 정보, 로그성 정보 등에 대해서는 압축을 고려하는 것이 효과적일 수 있습니다.
참고로, Oracle 11g 이상부터는 OLTP에서도 압축으로 인한 성능 부하가 3% 정도로 적은 ACO(Advanced compress option) 기능을 제공합니다.
별도 라이선스가 필요하지만, 투자 대비 압축으로 인한 효과가 좋다면 검토해 봐도 좋을 것 같습니다. ACO가 이전 버축 해제 후 압축 수행 시 block 단위로 수행하기 때문이라고 합니다.

미사용 테이블을 식별해서 정리하고, 자주 사용하지 않는 데이터는 ILM 저장소로 이관 및 압축하는 작업들과 관련하여 데이터 관리 프로세스가 존재하지 않았기에, 데이터 관리 프로세스를 수립하였습니다.

정리의 기술의 핵심은 '잘 버리는 것' 이라고 생각합니다.
간단한 말이지만, 말 처럼 쉽지는 않습니다.
필자의 경험상 미사용 테이블로 판단하여 삭제했지만,
시스템에 문제가 발생해 확인해보니, 다른 시스템에서 참조하거나, 1년에 한번 작업하는 테이블 등과 같이 실제로 사용하는 테이블일 수도 있습니다.
이러한 상황이 AP 담당자들이 미사용 테이블로 판단은 되지만, 정리 작업을 꺼려하게 만듭니다.

하지만, 미사용 테이블을 식별할 수 있는 많은 기술적인 방안들을 병행해서 검토하고, 미사용 테이블로 판단 되더라도 즉각적인 삭제가 아닌 테이블명 변경 후에 일정 기간 모니터링 후 시스템에 특이사항이 없다면 정리하고, 문제가 발생 시에는 빠르게 테이블명을 원복하도록 하여 대비를 하면 어느 정도 위험을 줄일 수 있습니다.

이번 TF 과제를 수행하면서 미사용 테이블 정리 및 ILM 확대 적용 등을 통해 수억원 ~ 수십억원 정도의 비용 절감 효과를기대할 수있었습니다.

마지막으로, 데이터 관리 프로세스도 중요하지만, 무엇보다도 중요한 것은 힘들게 미사용 테이블을 식별하고, 잘 정리하여 비용절감 성과를 이룬 것에 대해서 적절한 보상이 있어야 시스템 장애라는 어느 정도 위험이있음에도 불구하고, 잘 정리하기 위한동기 부여가 될 수 있습니다.