서버/클라이언트 구조의 프로그램들을 만들고 있었다. 마침 파서(parser)를 만들고 있었는데 지나가던 선배가 무엇을 하는지 유심히 보기 시작했다. 그러더니 이것 저것 물어 보더니 결국에는 이렇게도 물었다. "왜 서버에 파서를 두는거지? 클라이언트에 두면 서버가 없어도 되잖아?" 어? 그러게. 내가 왜 이러고 있었지? 선배에게 고맙다고 말하고 설계를 수정하기 시작했다. 사실 큰 프로젝트도 아니고 심시해서 해 보는 것이라 마땅한 문서도 설계도 거의 없는 실정이라 끄적여 둔 것을 조금 고치는 수준이었다.
어떤 선배가 세미나 시간에 아키텍처와 관련된 내용을 다루면서 Rationale의 중요성에 대해 언급했다. 예를 하나 들었는데, 어떤 프로그래머가 다른 사람이 만든 시스템을 개선하는 작업을 하고 있었다고 한다. 근데 자기가 보기엔 간단한 구조로 만들 수 있는 것을 일부러 복잡한 구조로 만든 것처럼 보였다고 했다. 이상하게 여긴 그는 간단한 구조로 시스템을 다시 만들기 시작했는데, 갑자기 의문이 든 것이었다. 왜 이렇게 해 둔 것일까? 그런 고민을 하면서 여러 가지 사항들을 고려하다 보니 처음에 생각했던 것처럼 간단한 구조가 아니라, 원래 있었던 시스템처럼 복잡한 형태가 될 수 밖에 없었다고 한다. 처음부터 이 구조로 되어 있는 이유를 알았더라면 이런 작업을 하지 않았을 것이다.
불현듯 내가 왜 서버에 파서를 두었는지가 생각났다. 내 클라이언트는 한번 배포되면 수정되기 어려운 성질을 가지고 있다. 그런데 파싱 규칙은 상황에 따라 매일 바뀔 수도 있다. 따라서 바뀐 규칙에 따라 파서를 수정해야 하는데, 클라이언트에 두게 되면 재배포를 해야한다. 하지만 재배포를 하기가 쉽지 않다. 하지만 서버에 있는 프로그램은 언제든 수정이 가능하다. 요청이 오면 응답을 해 주는 구조만 유지한다면. 이 생각이 들면서 왜 서버 프로그램에 파서가 있어야 하는지에 대한 몇 가지 이유들이 더 생각났다. 아. 그랬구나!
받은 트랙백이 없고,
댓글이 없습니다.
글
댓글을 달아 주세요
댓글 RSS 주소 : http://www.reiden.net/blog/rss/comment/10댓글 ATOM 주소 : http://www.reiden.net/blog/atom/comment/10