엔코아 신승렬 이사


▲ 엔코아 신승렬 이사
[아이티데일리] 데이터 모델링 프로젝트 진행 시 가장 중요한 것 중 하나가 제한된 일정 내에 데이터 모델 설계를 완성 해야 하는 ‘납기 준수’라고 생각한다.

일정을 지연하게 하게 되면 테이블을 기다리고 있는 개발팀의 애플리케이션 개발 진척에 막대한 영향을 미치게 되기 때문에 프로젝트 초반에 데이터 모델링을 담당하는 팀 혹은 모델러는 야간 작업을 해야 함은 말할 수 없을 뿐만 아니라 주말 작업까지도 감내해야 하는 상황이 종종 발생한다. 이는 모델러에게 상당한 부담과 스트레스를 전달하게 되며, 때때로 품질과 일정 사이에서 심각한 고민을 하게 된다.

해당 프로젝트의 데이터 모델 품질도 향상시키며, 애타게 기다리는 테이블 생성 일정까지도 만족시키기 위해서는 모델링 책에서만 나오는 이론적인 지식 외에 무언가 다른 비법이 있어야 하는데 이에 대한 필자의 경험을 바탕으로 ‘모델링 빠름 신공 10’을 하나씩 정리해 보도록 한다. 본 비법은 필자만의 매우 주관적인 비법이라는 것을 미리 밝혀 둔다.

빠름 신공의 핵심은 데이터 모델링의 기술적인 부분 보다는 프로젝트 진행 시 ‘서로 다른 생각을 정리하고 협의하여 올바른 것을 선택하는 과정’을 얼마나 효율적으로 진행할 수 있을까?에 대한 노하우라고 볼 수 있다.

#1 그림 그리기

데이터 모델링은 그림을 그리는 것으로부터 시작한다.

1. ERD를 잘 그리자
데이터 모델은 ERD(Entiry Relationship Diagram)을 통하여 작성을 하게 된다. 일반적으로 Erwin이나 DA# 같은 툴을 사용하게 되는데 ERD를 작성한다는 것은 엑셀, 파워포인트, 워드 등으로 테이블 정의서와 같은 문서를 만든다는 것이 아니라, 데이터 구조를 하나의 이미지로 만들어 설계 및 관리하자는 것이라고 볼 수 있다. 테이블에 대한 설계도면이라고 할 수 있는데 ERD를 잘 배치할 수 있는 모델러는 이미 고급 수준이라고 할 수 있다. 잘 배치 되었다는 것은 어떤 엔티티가 중요하고 어떤 관계가 핵심 관계라는 것인지 파악 된 것이라고 볼 수 있다.

그리고 잘 설계된 ERD는 이미지 자체도 예쁘게 그려진다. 잘 그려진 ERD를 작성하거나 보는 것만으로도 수백 개의 엔티티에 대하여 머리 속에서 전체 구조와 특정 엔티티가 어디에 있는지 무엇을 하는 것인지 쉽게 알 수 가 있다.  왜냐하면 우리의 두뇌에서는 이미지화된 그림으로 엔티티(테이블)을 인식하기 때문이다.

2. PPT(파워포인트)로 개념도를 그리자
데이터 모델의 설계도인 ERD에 많은 정보를 기록 할 수 있지만, ERD만으로 데이터 구조와 활용에 대하여 프로젝트 관련자들과 다양한 의사소통과 협의를 하기에는 부족한 면이 있다.  중요하거나 복잡한 엔티티에 대해서는 PPT로 정리된 개념도를 그려 보길 권장한다.  현장의 각종 정보들은 결국엔 DB의 테이블에 저장된다.  물리적/논리적인 원천 소스를 바탕으로 엔티티와 테이블을 설계하게 된다.  이때 원천소스를 엔티티로 논리화 하기 전에 "데이터 개념도"를 만들어 본다. 거창하게 데이터 개념도라고 했지만 실상은 점, 선, 네모, 세모로 이루어진 PPT를 의미한다.  PPT를 너무 멋지게 작성해야 한다는 부담감을 갖지 않는 것이 중요하다. 
IT 엔지니어이기 때문에 멋진 디자인을 요구하는 것이 아니라 모델링에 관여한 여러 사람들이 이해 할 수 있는 그림을 만들면 된다. 

백 마디 말보다 1장의 그림이 낫다.  그림으로 회의를 진행한다. 말로써만 이야기를 한다면 저마다 개인적인 성향의 이미지를 만들기 때문에 공통적인 View를 제공하기 위해서라도 이미지를 만들어 보아야 한다. PPT로된 개념도를 만들면서 자신도 모르는 것을 깨닫거나, 실수한 것들을 밝혀 낼 수도 있고, 나중에 훌륭한 산출물로 응용 할 수도 있다. 당장에는 파워포인트 1장 그리는데 3시간을 낭비한 것 같지만 나중에 보면 3일을 절약 할 수 있는 비법이 되기도 한다.

3. 모델링 낙서장을 만든다.
본인은 프로젝트를 처음 진행하게 되면 ‘DA 수행 노트’라는 PPT 문서를 작성하는 것으로 시작한다. 이 문서에는 일정, 범위, 방법, 조직, 해야 될 일, 이슈, 참조 자료 등등 무작위로 정리되어 있다. 내가 해야 될 일들에 대하여 어떤 방식으로 작업할 것인가? 에 대하여 기술을 한다.  모델링 중간 중간 회의 때마다 나왔던 내용들도 간단하게 정리해 둔다.  처음은 낙서장이지만 프로젝트 종료 시에는 특정 내용만을 뽑아서 ‘모델 설명서’, ‘모델 방안서’등의 산출물로 대체 할 수 있다. 보통 데이터 모델의 산출물로서 ERD, 테이블 정의서만 작성하게 되는데 모델이 만들어 진 과정이나 특징을 설명하기 위해서 파워포인트로 된 ‘모델 설명서’를 작성해 보기를 권장한다.

 

#2 그룹핑 분류
데이터를 다루고 있는 데이터 모델이나 SQL은 집합적인 사고를 많이 필요로 한다. 개별적으로 흩어진 정보들 중에서 일정한 규칙을 발견하고 유사성을 검토하여 분류하는 작업을 많이 한다. 그룹핑하고 분류한다는 것은 우리의 일상 속에서 항상 발생하는 현상일 것이다.

1. 테이블의 분류
수백~수천 개의 테이블을 리버스를 통하여 현행화 작업을 하거나, ASIS 분석을 할 때 그룹핑된 영역을 만들어야 한다. 많은 테이블을 처음 접하게 되면 어디서부터 손댈지 몰라서 우왕좌왕 하기 쉽다. 먼저 테이블의 명명 규칙을 살펴보고 테이블명 앞자리를 잘라서 분류해 본다. 잘 운영되고 있는 시스템에서는 테이블 명칭에 접두어를 붙여서 일관된 테이블명을 부여하기 때문이다. 
2차적으로는 해당 시스템의 업무 영역이나 주제 영역을 참조하여 테이블과 어떤 연관이 있는지 매칭을 해본다. 업무 영역이나 주제 영역이 없다면 메뉴/기능 구성도를 참조 할 수 있겠다. 분류가 끝나고 나면 500개의 테이블이 10개 정도의 큰 그룹으로 묶여질 것이다. 테이블의 양이 많다고 지레 겁먹을 필요가 없다. 10개로 그룹핑된 것들을 하나씩 차근히 분석해 나가면 된다.

 2. 속성의 그룹핑
엔티티나 테이블의 그룹핑처럼 속성들도 유사한 것들끼리 그룹핑하는 습관을 들이자.  1개 테이블에 200여개의 컬럼이 있으면 속성을 정리하는 것도 만만치 않는 작업이다.  먼저 코드, 여부, 일자, 명칭, 숫자, 주소 등 도메인으로 그룹을 나눌 수 있다.  또 다른 방법은 신청, 승인, 메일, 제한, 규칙, 기본정보 등 프로세스에서 사용하는 속성들을 그룹하여 정리하는 것이다.  200여개의 속성들 하나 하나의 쓰임새를 분석하는 것이 아니라 엔티티에 구성된 속성의 성향으로 그룹핑하면 엔티티의 분석 혹은 정의가 가능하기 때문에 빠른 분석이 가능하다. 

3. 생각을 단순하게
특정 요구사항을 만족하는 모델은 1개가 아니라 여러 개의 모형이 존재한다. 이중에 1개를 선택하고자 할 때 모델러는 1안, 2안, 3안 여러 방안 중에서 1개를 선택해야만 한다. 나는 보통 2~3개 까지의 대안을 제시하곤 한다. 이때 주로 사용하는 그룹핑 사고 방식은 Tree방식을 선호한다.  즉 이분법적인 사고를 계속 확장해 나가는 것이다.

예를 들어 지구의 구성을 모델링 한다면 지구의 서브타입은 하늘, 바다, 육지 3개로 나뉠 수 있다. 그러나 이분법적 사고로서는 지구 = 하늘 + 땅으로 구성되어 있다.  땅 = 바다 + 육지로 나뉜다로 정의한다.  단순하게 생각하기 위해서 모델링시 모든 사물이나 정보를 2개의 그룹으로 묶는 연습을 해 본다.

그 밖에 모델링시 그룹핑 및 분류를 해야 하는 상황을 몇 가지 살펴보면,
- 테이블 및 속성의 분류
- 테이블 접두어 / 접미어 설정
- 엔티티 통합시 동질성에 의한 그룹핑
- 서브타입 구성: oo구분코드
- 속성의 도메인 구성
- 논리적 / 물리적인 개체 집합의 통합 및 분리
- 주제영역 정의
- 모델 관리 폴더 정리
- 데이터 구성의 분석 (Group By)
- 각종 데이터 관련 엑셀 자료 정리 시
- 분류코드 및 공통코드 구성
- 기타

많은 정보들을 기억하고 이해하기 쉽게 만들기 위해서는 그림을 그리고 그룹핑하는 작업을 하는 것이 제일 좋은 방법 인 것 같다. 데이터 모델링 프로젝트에서 납기를 준수하기 위해서 빠른 모델링을 작성해야 할 때 이 2가지는 반드시 필요한 기법이라고 볼 수 있다.

 

저작권자 © 아이티데일리 무단전재 및 재배포 금지