SimpleIsBest.NET

유경상의 닷넷 블로그

필자의 2005년과 스마트 클라이언트

by 블로그쥔장 | 작성일자: 2005-12-26 오후 11:23:00
이 글은 오래된 전에 작성된 글입니다. 따라서 최신 버전의 기술에 알맞지 않거나 오류를 유발할 수 있습니다. 저자는 이 글에 대한 질문을 받지 않을 것입니다. 하지만 이 글이 리뉴얼 되면 이 글에 대한 질문을 하거나 토론을 할 수도 있습니다.
안녕하세요... 블로그 쥔장입니다... 뭐 이곳에 글 올리는 사람이 저밖에 없으니 이렇게 인사하는 것도 이상하네요... 2005년도 이제 다 갔군요. 항상 이맘때가 되면 빚진 사람 마냥 한 해를 정리해야 한다는 강박관념에 사로 잡히곤 합니다. 그래서 올해를 정리해보고자 합니다. 이래서 블로그는 좋은 것 같습니다. 기술 관련 사이트라면 이런 글이야 자유 게시판 정도로 밀려나겠습니만... 블로그이기 때문에 대문에 버젓이 걸리게 되네요... ^^

Year 2005... & Smart Client

2005년이 저물어 간다. 누구 궁금한 사람도 별로 없겠지만, 필자의 이야기를 담는 공간이니 만큼 필자가 2005년을 어떻게 보냈는지를 몇 자 적어보려고 한다. 누구 하나 관심 가질 일이 없는 이따위 이야기이지만 키보드 가는대로 손가락 가는대로 글을 쓸 수 있기 때문에 이 공간이 참 맘에 든다. ^^;

2005 & My Major Project Site

필자는 꼬박 1년을 넘게 P 건설사의 프로젝트를 컨설팅 했다. 그러니까 2004년 12월 말에 프로젝트에 투입되어 만 1년 동안 하나의 프로젝트에서 컨설팅을 한 것이다. 이 프로젝트는 닷넷 스마트 클라이언트 기반의 프로젝트이다. S 전기에서 시스템 일부를 성공적으로 스마트 클라이언트로 오픈 한 경우는 있었어도(이 프로젝트 역시 필자가 컨설팅에 참여 했었다), 이렇게 전사적인 규모로 스마트 클라이언트를 적용한 사이트는 국내에서 최초인 인듯 하다. 이 프로젝트는 1년여 동안 업무 재 설계, 시스템 설계를 수행했고 또 1년 동안 시스템 개발과 데이터 이행, 시스템 테스트를 수행한 프로젝트 였다. 개발/테스트 기간만 1년 인 10,000 본이 넘는 커다란 시스템인 것이다. (하드웨어까지 포함하면 수백억 규모의 프로젝트란다.)

원래 이 시스템은 ASP.NET 웹 폼으로 계획되었었다. 그런데 지난 11월 MS의 멋진(?) 영업의 성과로 갑자기 스마트 클라이언트로 전환되었고, 스마트 클라이언트 경험 있는 국내의 몇 안 되는(달랑 둘) 컨설팅 회사 중 필자의 회사가 낙점을 무르와... 필자가 투입된 것이다.

Smart Client

스마트 클라이언트라 함은 쉽게 말해 브라우저 상에서 닷넷 윈폼(WinForm)을 사용하는 것을 말한다. 웹 브라우저 내부에 윈폼 컨트롤을 표시하거나 브라우저의 링크(혹은 URL 바로가기)를 클릭하면 윈폼이 뜨는 것이다. 잘 이해가 안 가면 ActiveX 같은 것을 닷넷으로 만들어서 브라우저를 통해 사용한다고 생각하문 되겠다. 이래도 이해가 안 가면... 화면1 봐라... 그래도 잘 모르겠다면 더 이상 설명은 곤란타... 필자 탓은 아니다... 스스로의 머리에 대해 심각하게 고민해 보길... -_-;


화면1. 필자가 2005년 관여했던 스마트 클라이언트 화면 예제

스마트 클라이언트라는 용어 자체에 대해서 할말이 있지만 다음 기회에 하기로 하고... 이 스마트 클라이언트 환경에서 구동되는 커다란 시스템에 매달려 필자는 1년이라는 시간을 보냈다. 1년 내내 P 건설사의 스마트 클라이언트 프로젝트만 한 것은 아니지만 다른 SI 업체 컨설팅도 모두 스마트 클라이언트에 대한 내용 이였다. 필자의 2005년은 스마트 클라이언트로 얼룩진 한 해로 보면 되겠다.

Smart Client Episodes

스마트 클라이언트는 매력적인 능력을 갖고 있다. HTML 기반의 웹 UI는 그 한계가 뚜렷하기 때문에, 역동적이고 대화형 사용자 UI를 가능하게 해주는 스마트 클라이언트의 능력 때문인지 여러 사이트에서 스마트 클라이언트를 고려하고 있고 또, 실제 프로젝트가 스마트 클라이언트 기반으로 수행 중인 것으로 알고 있다.

스마트 클라이언트는 보기에는 아주 그럴 듯하다. 스마트 클라이언트의 예제를 작성하기는 어렵지 않다. 그리고 별다른 문제 없이 작동하곤 한다. 하지만... 실제 프로젝트에 적용하려고 보면 여러 가지 문제들에 부딛히곤 했다. 스마트 클라이언트를 위한 DLL을 다운로드 하는 규칙, DLL을 다운로드 할 때 발생하는 다수의 HTTP 404 NOT FOUND 오류, 탭키 작동 오류, 써드 파티 컨트롤 사용시 라이센스 문제 등등...

이러한 다양한 문제들을 해결하느라고 필자는 2005년 초반에 많은 스트레스를 받았었다. 이들 문제는 닷넷 프레임워크의 일반적인 작동 규칙인 경우도 있었으며(보통의 닷넷 프로그램의 시나리오라면 문제가 없을 것들이 스마트 클라이언트 환경이기 때문에 문제를 유발하는 것 들이었다), 닷넷 프레임워크의 버그인 것도 있었다. 따라서 어떤 문제는 근본적으로 해결할 수 없기 때문에 다양한 꽁수들을 사용해야만 했었고, 이러한 꽁수를 부리기 위해 닷넷 프레임워크의 많은 코드를 까봐야 했었다. 2005년에는 그 어느 때보다 닷넷 프레임워크의 코드를 디컴파일러(decompiler)를 통해 디비 보며 시간을 보낸 것 같다.

Other Episodes

또 한가지 2005년 필자를 괴롭힌 건 P 건설 프로젝트 자체의 문제점 이였다. 프로젝트의 기간이나 규모에 비해 개발 준비가 너무나 안되 있었기 때문이다. 수천 본의 프로그램(화면)을 작성해야 했지만 공통 모듈의 스펙은 고사하고 목록 조차 제대로 나와있지 않았으며, 준비되어 있는 코딩 규칙, 소스 세이프 사용 규칙 등도 필자의 기준으로 보아 모두 정상이 아니었기 때문이다. 엎친 데 덮친 격으로 개발 기간마저 줄어들었으니 더 이상 할 말이 없을 지경이 되었다. 필자가 직접적으로 관여된 프로젝트 중 실패한 프로젝트는 아직 없었는데, 올해 처음으로 프로젝트가 실패하지 않을까 걱정되어 잠도 제대로 이루지 못한 때가 많을 정도였으니 말이다. 한마디로 졸라 시껍해서 꽁꼬에 졸라 힘을 줘야 했던 프로젝트였던 것이다.

개발자들이 열심히 노력한 덕에 (필자는 개발 프레임워크 개발과 개발 컨설팅만을 담당한다. 직접 개발에 참여하지는 않는다.) 프로젝트가 어느 정도 정상 궤도에 올라서자 기간에 맞추어 개발생산성이 나기 시작했고, 개발 기간 내에 프로젝트 개발이 끝났다(적어도 본수는 채웠다). 그런데 이제 성능에 대해 이러쿵 저러쿵 이야기를 하는 것 이였다. 건설사의 특성상 개발 현장에서는 느린 네트워크(1~1.5Mbps)를 수십, 수백명이 동시에 사용하기 마련인데, 이런 느린 네트워크 대역폭에서 수천, 수만 건의 데이터를 조회하려고 하는데 성능이 안 나온다며 불평을 늘어 놓는 것이다. 물에 빠진 사람 살려줬더니 보따리가 2개 였느니 3개 였느니 소리 듣는 것과 다를 바 없는 허탈한 소리... 이런 이야기 들으면 정말 힘이 쑤욱 빠진다(물론 조뺑이 쳐서 어느 정도 성능을 내 주었다... -_-;).

Good Bye 2005...

스마트 클라이언트로 얼룩진 필자의 2005년은 그렇게 갔다. 이 프로젝트는 2006년 1월 2일이 오픈 예정이며, 현재까지는 아무런 문제 없이 오픈 준비가 되고 있다. 참으로 다행스럽다 아니할 수 없다. 오픈이 성공적으로 진행된다면 필자는 아무도 알아주지 않지만, 그래도 프로젝트 하나를 성공시켰다는 자만심에 뿌듯해 할 듯 싶다. 대개, 프로젝트가 성공하면 PM 이 잘했다는 소리를 듣지, 시스템 아키텍처를 설계한 사람이나 직접 코딩을 하며 개발한 사람에게 공이 돌아가진 않더라... 적어도 필자의 경험은 그렇다...

2006년에 필자는 닷넷 프레임워크 2.0과 Windows Vista에 많은 관심을 가질려고 한다. 비주얼 스튜디오 2005의 Team Foundation Server 역시 간과할 수는 없지만 웬지 많은 시간을 투자하고 싶지 않은 건 왜일까... 그리고 이 블로그에도 가능한 한 여러 글을 남기고자 한다. 특히 2006년 초반에는 스마트 클라이언트에 대한 글을 많이 쓰고자 한다. 1년 동안 볼륨이 쫌 되는 프로젝트를 했으니 쓸 이야기 거리도 많다. 사실 인터넷을 돌아다니다 보면 스마트 클라이언트에 대한 근거 없는 이야기들도 종종 볼 수 있기도 하기 때문에 글을 쓰고 싶은 마음이 솟구치기도 한다. 하지만 천성이 게으른지라... 얼마나 자주 그리고 얼마나 자세히 글을 쓸지는 장담 못하겠다...

2005년에도 특별난 칭찬도 못 받으면서 조뺑이 치면서 까만 밤 하얗게 지새운 많은 개발자 동지들... 올해도 정말 수고 많았다... 여러분의 삽질 없이는 우리나라의 IT 발전이 어디 있었겠는가? 정통부 장관을 대신하여 우리나라의 모든 개발자들에게 심심한 격려의 말을 전하며 2005년 필자의 블로그를 마감한다... (오오... 쪼매 거창한걸? 조까 !!!)

새해에는 졸라 큰 삽을 들고 다시 만나기로 하자.... Happy New Year !!!



Comments (read-only)
#re: 필자의 2005년과 스마트 클라이언트 / 정준명 / 2005-12-27 오전 8:40:00
크리스마스 즐겁게 보내셨나요? 올해는 왠일인지 하느님이 수많은 커플을 위해 따뜻한 날씨로 배려해주더군요.

현재 윈폼기반의 스마트클라이언트로 프로젝트를 진행중입니다. 요건 꺼꾸로 개발자가 C/S 경험이 없어 어렵네요.
뭐 컨트롤 사용법이야 금방 익히는거니까... 스마트클라이언트 관련해서 좋은 글 많이많이 부탁드립니다.~
#re: 필자의 2005년과 스마트 클라이언트 / 위시 / 2005-12-27 오전 10:49:00
좋은글 벌써부터 기대되고 있습니다^^
크리스마스 잘 보내셨나요?
#re: 필자의 2005년과 스마트 클라이언트 / 나~ 그네 / 2005-12-27 오후 1:46:00
스마트 클라이언트.. 아직 주어서 들은 이론들만 잔뜩있고 , 개발을 전혀 해 본적 없는 허접이 입니다.
글 잘 읽어 보았고요. 필자님의 강좌..~~ 너무 현실감이 있어서 매우 좋아요..^^

힘내시고.. 행복한 새해를 보내시기 바랍니다. (한국말을 애용해야징 ~~ ㅋ)
#re: 필자의 2005년과 스마트 클라이언트 / 블로그쥔장 / 2005-12-28 오전 12:11:00
크리스마스는 가족과 함께 보냈습니다. 킹콩 영화도 보구요...
여러분도 즐거운 크리스마스 보내셨나요?

성원 감사드립니다. 기대를 져버리지 않도록 스마트 클라이언트 관련 글을 잘~ 써보도록 노력하겠습니다.
감사합니다...
#re: 필자의 2005년과 스마트 클라이언트 / 정성균[차칸아이] / 2005-12-28 오후 3:23:00
쥔장님 안녕하신지요...^^ 올한해 잘 마무리 되어가신다니 축하를 드려야 겠네여... 덕분에 저도 이래 저래 문제를 해결해 나갈수 있어서 좋았습니다.
그점 감사를 드립니다. 몇일전 글 남겼던 .... 오라클 커넥션 부분의 문제.... 역시나 예상이 맞았던것 같습니다. Dispose 열심히 해줬더니...정상궤도로 진입했다는 ...^^
아직 스마트클라이언트 .... 아주 초 간단 소스를 맹기러 보고는 .... "나도 이거 해봤다 " 하고 접어놓았습니다. 그쪽 관련해서는 불러주질 않아서리..ㅋㅋㅋ
암튼 내년에 무척 기대를 해봅니다. 새해 복 많이 받으시고, 수고하세요.

(P.S: 조뺑이 --> PJT 막판에 왕창 밟은듯 해서리.. 이 넘 참으로 가슴에.... 와 닿네여....)
#re: 필자의 2005년과 스마트 클라이언트 / 강북왕자 / 2005-12-30 오전 11:23:00
쥔장님 올 한해 많은 도움 받고 갑니다..
새해 복많이 받으시구요..
내년 스마트클라이언트 관련 글 기대 됩니다..
예전부터 관심만 가지고 전혀 준비없이 지낸 부분이라...
다시 한번 새해 복많이 받으세요..
#re: 필자의 2005년과 스마트 클라이언트 / 숨은 관객 / 2006-03-08 오전 2:26:00
예제 그림에 있는 트리뷰와 리스트뷰의 짬뽕~ 형식의 컨트롤은 어떤 컨트롤인가요~?
#re: 필자의 2005년과 스마트 클라이언트 / 블로그쥔장 / 2006-03-08 오전 10:00:00
화면1의 왼쪽 그리드를 말씀하시는 것 같군요.
그 녀석은 상용 그리드 컨트롤 입니다. FlexGrid 란 녀석이죠.
많은 상용 그리드들이 비슷한 기능들을 제공합니다만...
다른 그리드에 비해 이 녀석의 가장 두드러진 특징은 단일 데이터를 트리로 보여줄 수 있는 능력입니다.
대부분의 그리드 컨트롤이 트리 데이터를 보여주기 위해 마스터-디테일 관계의 두 테이블을 요구하지만
이 녀석은 하나의 테이블에 부모/자식 관계가 있는 경우를 위와 같이 보여줄 수 잇는 능력을 갖고 있습니다.

이 컨트롤의 기능에 대한 상세한 정보는 www.componentone.com (아마 맞을 겁니다) 사이트를 참조 하십시요.
#re: 필자의 2005년과 스마트 클라이언트 / 돌도끼~ / 2006-10-11 오후 9:59:00
포스코 건설 화면이네요. 저도 올2월 경에 저런 UI로 포스코 건설에서 스마트클라이언트로 개발했었는데요.
#re: 필자의 2005년과 스마트 클라이언트 / 컴맹 / 2006-12-14 오전 10:54:00
님의 엄청난 내공의 원인이 바로 여기에 있었군요..ㅎㅎ
고생 정말 많으셨겠어요.
저도 제손에 큰삽을 들고 있습니다. 회사에서 쥐어주더군요.
스마트 클라이언트때문에 엄청삽질할것같은 느낌이.-_-;
암튼 많이 배우고 가겠습니다.^^
#re: 필자의 2005년과 스마트 클라이언트 / kral oyun / 2007-12-19 오후 6:55:00
예제 그림에 있는 트리뷰와 리스트뷰의 짬뽕~ 형식의 컨트롤은 어떤 컨트롤인가요~?