블로그 질 재개? 구차한 서론은 때려치우고 바로 본론으로...
DataSet에 대하여…
시작하기 전에, 이실직고부터 하겠다. 필자는 엔티티 기반의 프로젝트를 한번 해봤다. 1998년 동양시멘트 프로젝트를 약 1년여 동안 일반 개발자로서 약 100여 개의 화면을 Forte라는 도구를 사용하여 개발해 본 경험이 전부다. 그 외엔 Entity Framework로 다건의 데이터를 조회/추가/수정/삭제하는 WinForm/WPF 예제를 만들어 봤을 뿐이다. 따라서 여기서 이야기 하는 엔티티에 대한 내용은 상당히 주관적일 수도 있음을 밝히는 바이다. 기술적인 이야기를 주저리 주저리 나열하진 않겠다. 공연히 흥분한 내 마음이 차분해 질 수 있으니깐 말이쥐…
대안: 엔티티?
DataSet은 엔티티에 비해 꿇리는 점이 많은 데이터 컨테이너이다. 성능 면에서나 네트워크 상에서 데이터를 주고 받는데 사용하는 DTO(Data Transfer Object) 관점에서나 등등… 이러한 부분에 대해 여기서 주저리 주저리 논하지 않을 것이며 DataSet의 단점을 부인하지도 않겠다. ERP 패키지를 개발하거나 SharePoint와 같은 패키지를 개발할 때 엔티티 기반의 어플리케이션 아키텍처를 채용하는 것은 상당히 자연스럽고 권장할 만하다.
하지만 국내 SI 프로젝트에서라면 엔티티는 좀 아니다라는 것이 필자의 생각이다. 기업용 어플리케이션은 작게는 수 십 개, 많게는 수백 수천 개의 데이터베이스 테이블을 사용한다. 테이블 당 한 개의 엔티티 타입으로 어플리케이션을 개발할 수 있다고 생각하는 대한민국 개발자는 없으리라 생각한다. 단순 등록에서나 하나의 테이블에 하나의 엔티티 타입을 매핑 할 수 있을 뿐 다양한 테이블을 조인하여 결과를 뽑아내거나 업무 프로세스 상에서 단계적으로 엔티티의 속성을 채워나가는 경우 등등을 생각해 보면 데이터베이스 테이블보다 훨씬 더 많은 엔티티가 필요하게 된다. 적어도 필자가 14년 전에 개발할 당시에는 그랬으며, 현재의 SI 프로젝트 진행 행태를 보면 지금도 크게 다르지 않을 것으로 본다. 비록 지금은 다양한 개발도구들 덕택에 엔티티를 생성하기 쉬워졌지만 여전히 많은 엔티티 타입을 필요로 한다는 것은 변함이 없을 것 같다.
이렇게 많은 엔티티 타입들을 어떻게 관리 할 것이며, 개발자들 사이에서 어떻게 공유할 것인가를 생각해 보면 간단하게 해결될 문제는 아님은 분명하다. 첨엔 이 문제에 대해 다큐 모드로 졸라 글을 썼는데… 재미가 없어서 날려 버렸다. 대충 요약하자면, 엔티티를 사용하고자 한다면 데이터베이스 설계 뿐만 아니라 엔티티 자체에 대한 설계에도 충분한 고려를 해야 한다는 것이다. 결국은 시간, 다시 말해 돈이 필요하다는 얘기가 되는 것이다. SI 프로젝트에서 시간은 돈 아닌가?
SI 개발자에겐 “축복”인 DataSet
엔티티가 더 나쁘다거나 DataSet이 더 우수하다고 이야기하는 것은 결코 아니다. 엔티티는 좋다. –끝-
하지만… 국내 SI 환경을 생각해 보자. 번개불에 콩 볶아 쳐먹을 시간 조차 없는 분석/설계 기간, 야근은 필수 주말 출근은 기본으로 해도 부족한 개발 기간, 책에서나 나오는 유닛 테스트/부하 테스트… 이러한 환경에서 DataSet은 상당한 장점을 가진다. 엔티티를 설계하거나 작성할 필요 없이 적당한 쿼리의 결과를 DataSet에 담기만 하면 되기 때문이다. 다시 말해 개발 생산성이 좋다는 것이다. SI 개발자에게 그나마 10시 정도에 퇴근할 수 있도록 조금이나마 도와주는 것이 DataSet이라고 필자는 생각한다. 단순히 과거의 기술이라고 DataSet을 무시할 것이 아니라는 것이며 최근의 기술이라고 엔티티에 열광할 것이 아니라는 것이 되겠다.
졸라 빠른 결론
결론이 뭐냐고? 1주일 동안 업무 화면 7개를 만들어 보지 않았다면 DataSet에 침을 뱉으라는 얘기지 뭐… 좀 더 직관적으로 말하자면 우리나라 SI 프로젝트에선 아직까지는 엔티티보다는 DataSet이 갑이란 얘기야.
적어도 난 그렇게 생각해. 철 지난 기술을 아직도 만지작거린다는 쿠사리를 먹어가며 내가 여전히 DataSet을 기반으로 하는 구닥다리(?) 프레임워크를 만지작거리며 밤을 새우는 이유이기도 하구… 개발자는 소중하니깐…
경고 : 이 글을 무단으로 복제/스크랩하여 타 게시판, 블로그에 게시하는 것은 허용하지 않습니다.
1a86bb3e-a814-4490-98a3-29e88cbbd9ac|14|4.2