축구를 졌습니다. 간만에 Martin Fowler(www.martinfowler.com)의 홈페이지에 방문했는데, 깔끔하게(?) 변경된 사이트에서도 그는 여전히 빛나는군요.
새 로 추가된 [Pramod's Database Refactoring Sildes]가 눈에 뜁니다. 작년 연말에 읽었던 [Evolutionary Database Design]의 후속작인 모양입니다. 이 작업(Database Refactoring)은 Martin Fowler가 아닌 Pramod Sadalage(이름이 인도틱하군요..)의 주도로 이루어지나 봅니다. 이 작업에서 Martin Fowler의 역할은 [Refactoring - Improving the design of existing code]의 저자로서의 명성을 Pramod Sadalage에게 빌려주는 것이 아닌가 하는 생각이 듭니다.(Martin Fowler 처럼 그도 [ThoughtWorks]에서 일하고 있으니까!)
SK(주) 의 eHR 프로젝트나 지금 왼쪽 발만 담구있는 EPM 모두 관계형 데이터베이스가 전체 시스템에서 차지하고 있는 비중이 크다는 것은 주지의 사실입니다. 대부분의 비즈니스 애플리케이션은 데이터베이스를 분리하고는 생각할 수 었습니다.
일반적으로 프로젝트는 E-R 다이어그램을 작성한 후 그 위에 애플리케이션을 입히는 방식으로 진행됩니다. 이런 환경에서 [Evolutionary Database Design]이라는 말은 낯설고 생소한게 사실이지만, 역설적으로 모든 프로젝트는 [Evolutionary Database Design] 방식을 취하고 있습니다. 정적인 데이터의 관계를 보여주는 E-R 다이어그램으로 복잡한 비즈니스 요구사항을 완전히 표현할 수 없기 때문에, 그런 요구사항이 구현되는 과정에서 테이블이 잔인한(?) 난도질을 당하는 것은 슬프지만 엄연한 사실입니다.
인도에서 넘 놀다와서 그런지 요즘 EPM 프로젝트를 진행하면서 애를 먹고 있습니다. EPM 전체 시스템에 대한 이해가 부족해서든, 요구사항의 추가나 변경이든 데이터베이스 테이블을 수정해야 하는 경우가 많은데 쉽지가 않습니다. 간단한 경우는 테이블의 컬럼 이름 또는 타입을 변경하거나 칼럼 자체의 삭제나 추가부터 테이블 자체의 삭제 또는 변경까지... 나름대로는 테스트 케이스를 작성했고 테이블을 접근하는 애플리케이션을 단일화하기도 했는데... 오늘 오전도 특정 칼럼의 Default 값을 변경한 결과 반나절을 디버깅하면서 보냈습니다.
[Pramod's Database Refactoring Sildes]는 이런 문제에 대한 해답 또는 시작을 제시하려는 시도입니다. Agile 방법론과 규율(Discipline)이 한 짝을 이루듯 Refactoring 작업은 애플리케이션을 개발하면서 늘상 하는 작업들에 규율을 제공합니다.
[Pramod's Database Refactoring Sildes]에서 제공하는 Refactoring은 다음과 같습니다.
- Add Nullable Column
- Add Default Value
- Remove Default Value
- Update Data
- Insert Data
- Make Column Non-Nullable
- Make Column Nullable
- Move Data
- Add Unique Index
- Drop Column
- Drop Table
- Add Foreign Key
- Remove Foreign Key
- Bulk Changes
- Rename Table
- Rename Column
- Split Table
- Split Column
- Merge Table
- Merge Column
- Add Database Code
- Remove/Change Database
- Add Index
이제까지는 Refactoring에 대한 관심이 애플리케이션 중심으로 이루어졌다면 앞으로의 Refactoring에 대한 관심은 Database를 중심으로 이루어지지 않을까하는 생각이 듭니다.(정확하게는 데이터베이스 스키마를 변경하려고 할 때, 애플리케이션 단에서 어떤 작업을 전후로 해야 하는가가 Database Refactoring입니다. 그리고 Database Refactoring의 별미는 운영중인 시스템의 시키마를 변경하는 순간일 것 같습니다.)
앞으로 Database Refactoring에 CBD에 대한 관심의 1/10 만 투자했으면 하는 작은 소망이 있습니다.
P.S. [Pramod's Database Refactoring Sildes]는 Martin Fowler의 [Refactoring]책과 같은 포맷을 가지고 있으며, 조만간 출판되지 않을까합니다.
P.S. 슬라이드에 나오는 코드를 보면 Martin Fowler가 [Patterns of Enterprise Application Architecture]에서 제시하고 있는 모든 내용들이 ThoughtWorks에서는 일상적으로 사용되는 것 같습니다. 부럽습니다.
No comments:
Post a Comment