2007년 11월초 약 3주간의 중국 출장이라는 명령을 받고 중국으로 가기전에 [SQL Server 2000/2005튜닝]이라는 책을 같은 팀에 소속된 중국 관리자가 인터넷으로 한국에 주문을 한 것을 보고 살까 말까 무척 망설이다가 애라 모르겠다 라는 생각에 질러버렸다.
첫페이지를 넘기고 이전에 정원혁씨가 집필했던 SQL 서버 2000 개발자/관리자 시리즈의 마지막 판인 튜닝에 대한 내용인 것을 알고 3주간 독파를 하리라는 욕심으로 읽기 시작했다. 개인의 약속대로 3주만에 독파를 했다. 결과는 무척 대 만족이었다.
지금까지 나도 회사내에서 튜잉에 대해서 한국 개발자들에게 자주 강의도 하고 중국개발자 에게도 개발시 주의해야할 부분과 튜닝은 아니지만 개발에서 중요하게 생각해야할 부분에 대해서 좀 더 알기 쉽게 강의를 해 왔었다. (중국어로 강의를 하는 것이 아니라 내가 한국어나 일본어로 이야기하면 이에 대해서 조선족이나 일본어가 가능한 중국어 개발자가 통역을 해 주었다.)
이 책을 보면서 아직도 공부해야할 부분이 산이구나 라고 다시금 채찍질을 하게 된다. 원래 튜닝이 100% 이렇다 라고 정답을 알려주는 것은 아니다. 하지만 튜닝을 하면서 느끼는 것을 필자의 강의나 책에서도 설명하고 있듯이 개발자의 실수나 경험부족이 대부분임을 알 수가 있다.
갑자기 이야기가 다른 곳을 튀는 듯한 느낌이 있지만 계속 적겠다.
원래 중국에서 오프쇼아라는 형태로 일본의 자금으로 일종의 기업내 전근형태로 1년간 일을 했었다. 이 때 주로 중국멤버들에게 데이터베이스의 중요성과 SP를 개발할 때 주의할 점에 대해서 집중적으로 관리를 했고 그 결과 많은 부분에서 성과를 볼 수가 있었다. 다른 거점보다는 SP를 이용해서 개발할 때 한번이라도 성능에 대해서 생각을 하게 되었던 것이다. 하지만 1년간의 노력이 수포가 된 것은 내가 관리하고 있던 개발자들 대부분이 회사를 그만두고 일본으로 취업을 해 버린 것이었다. 원래 일본회사다 보니 일본어로 주로 일을 진행시켜 나갔고 그 가운데 개발자에게 일본어를 가르치는 것도 하나의 업무 가운데 중요한 요소였다. 같은 한자문화를 가지고 있는 중국사원들에게는 개발에 필요한 설계서를 파악하는데는 그다지 문제가 없었고 조금이라도 회화가 되면 다니던 회사를 그만두고 현재 받는 월급의 수십배를 능가하는 일본으로 파견을 가는 것이다. 결국 이렇게 되다보니 현재 하고 있는 프로젝트는 당연히 갓 졸업한 새내기들을 데리고 프로젝트를 진행하게 되었고 이전처럼 체계적인 교육이 없다보니 당연히 SP를 작성할 때 생각하는 방법에서 많은 차이를 나타내게 되었다.
한가지 예로 아직 집합론적인 개념이 부족하다 보니 결국 SP에서 나타나는 코드들은 대부분이 while과 if의 연속이었다. 마치 일반적인 순차적 프로그래밍을 하는 것과 같은 생각과 개념으로 접근해 가는 것이었다. 그나마 조금 괜찮은 사람은 temp테이블을 작성하는데 이것도 결국 나중에 커서로 이어진다. 코드를 보고 있으면 마치 순차적 프로그램을 보고 있는 듯한 착각에 어디서부터 수정을 해야할지 막막해 진다. 그것도 짧으면 괜찮은 편이다. 스압에 마우스의 휠 버튼이 부러질 정도로 작성된 것도 많다. 결국 깊이있게 분석을 해 보면 몇 개의 쿼리만을로도 지금 수행되는 속도의 수백배 빠른 결과를 낼 수 있는데도 말이다. 이 책에서 언급한 것처럼 짱똘을 굴리기가 힘들것도 원인지만 체계적으로 관리해 주는 전문 개발자가 없는 것도 큰 원인 가운데 하나였다.
또 다른 것은 어디서 들었는지 JOIN을 사용하면 속도가 느려서 사용안한다는 것이다. 그래서 내가 실행계획으로 비교를 해 보았냐고 반문을 하니까 그건 모르겠고 결과만 나오면 다라고 답변을 해 온다. 할 말이 없다. 결국 이러한 코드들은 현장에서 문제가 나오기 시작하고 데드락의 온상지가 될 것은 불을 보듯 뻔하다. 모든 쿼리가 병목현상으로 대기 상태의 연속이 될 것이다.
일단 현재는 주의와 수정을 요구하는 차원에서 계속 진행되고 있지만 어디서 부터 손을 대야할 지 아직도 막막한 상황이다.
갑자기 SQL서버 2000/2005 튜잉에 대한 이야기를 하다가 여기까지 왔냐면, 현재 한국에서도 이러한 생각과 마인드를 가지고 개발에 임하는 개발자들이 무지 많을 것이라고 생각한다. 나 또한 3년전만해도 나의 실력 부족보다는 타인의 잘못으로 자신의 잘못을 감추려는 어리석은 생각들로 가득했었다.
회사에서 전체 시스템의 튜닝을 담당하는 관리자의 경우는 매일 늘어만 가는 트랜잭션을 관리하고 문제점을 찾아내고 결과 및 해결방안에 대해서 알려주지만 정작 이러한 부분을 해결할 개발자의 인식이 부족하다면 앞으로 나아가지 못하고 정체된 기간 시스템들이 되어 버릴 것이다.
이 책을 통해서 최근에 있었던 중국 개발자들에 대한 능력 향상과 그리고 한국 개발자들도 조금더 자신이 개발하고 있는 DB서버에 대한 아키텍쳐 부분에 조금이라도 더 관심을 가지고 폭넓은 사고를 가질 수 있도록 다시금 교육을 해야 겠다는 생각을 해 본다.
끝으로 SQL 서버 2005의 칼렌 패밀리들의 영문책을 보면서 매일 놀라움의 연속이다. 아직 시작이지만 끝까지 독파하리라는 다짐을 해 본다.
'개발 이런저런 야그들' 카테고리의 다른 글
재미난 이야기 (0) | 2007.10.16 |
---|---|
프로젝트를 진행하면서(요구사항 추적) (0) | 2006.05.29 |
관리자로 성장하면서... (0) | 2006.01.20 |
문서파일의 버전 정보 (0) | 2006.01.05 |
설계자가 여러명일 경우(테이블을 사용하는 프로그램 정보 저장소 구축) (0) | 2006.01.05 |