최근 몇년 사이 주목 받고 있는 IT 용어 중 하나로 X-인터넷(X-Internet)이 있다(X는 eXtended 또는 eXcutable의 의미를 갖는다). 요즘의 핵심 키워드인 Web2.0, Enterprize 2.0 등을 필두로 끊임없이 변화하고 있는 사용자의 인식과 패러다임에 발맞춰, 쉴틈 없이 새로운 기술과 이론들이 쏟아져나오고 또 사라져 가고 있는데, 혹자가 말하듯이 X-인터넷이 현재의 웹 클라이언트 환경을 대체할 만큼 충분한 파괴력 있는 개념이라고 할 수는 없을지라도 한 철 유행이라 치부할 수도 없는 것이, 최근 인트라넷 업무 시스템을 중심으로 기세를 넓혀가고 있는 것이 사실이다.
이미 X-인터넷 기반의 시스템을 도입한 곳이 적지 않고 모기업의 경우 현재 시범적으로 도입된 X-인터넷 기반 시스템을 구축하고 여타 시스템으로 확대 적용할 예정이라고 한다. 이들은 주로 X-인터넷 기반 제품(리치 클라이언트 솔루션)을 도입한 곳이 많은데, 그 제품들의 종류 또한 적지않다(그중 국산 제품이 입지가 높은 편이라 한다).
현재 진행중인 프로젝트 역시 X-인터넷 솔루션을 도입하기로 예정되어 있다. 그리고 이곳에 오기 직전 프로젝트에 대해 간단히 언급하고자 한다.
근간에 모 사이트의 프로젝트를 완료하였다. 시스템은 .Net Framework 2.0, C# 기반 하에 Smart Client와 XML Web Service, Reporting Service를 핵심 기술로 하여 구현되었다.
ASP.Net과 Classic ASP가 혼재되어 돌아가던 각각의 시스템들과 업무 개선을 위해 신규 추가되는 시스템들을 통합하여 구현하는 것이 목표였는데, S/W 아키텍처를 설계하고 기반 Framework을 구현 및 지원하는 것이 나의 역할이었다. 이전까지 스마트 클라이언트에 대한 경험이 전무한 상태였기에 초반 부담이 만만치 않았지만 결과적으로는 그럭저럭 괜찮은 시스템을 만들어 낼 수 있었던 것 같다.
기본적인 개발 환경은 다음과 같다.
- Windows 2003 Server
- Internet Information Service 6.0
- Microsoft SQL Server 2005
- Microsoft SQL Server 2005 Reporting Services (SSRS)
- Microsoft .NET Framework 2.0
IDE로 Visual Studio .Net 2005를 사용하여 개발하였다. 리포팅 툴로는 익숙하던 Crystal Reports를 버리고 모험적으로 Reporting Services를 선택했다. 써드파티 컴포넌트로는 FlexGrid(ComponentOne Studio.NET 2.0) 정도가 있다. 특이할만한 것은 초기 요구/분석, 설계 시점에 UML을 작성을 위한 모델링 도구로 스타유엠엘(StarUML v5.0.2.1570)을 사용한 것이다.
Smart Client 구현을 위한 Framework으로 초반에 Smart Client Composite UI Application Block 및 Smart Client Software Factory 또는 상용 프레임웍 도입을 고려하기도 하였으나, 결국은 위험 요소를 극복하고 자체 개발하였다. 프레임워크는 하부구조를 지원하는 Core Framework 부분과 Smart Client(Window Form)을 지원하는 PB(Project Base) Framework 부분으로 분리하여 구현하였다.
적용된 아키텍처의 간단한 모형이다.
사용자는 PC에서 설치된 메인 어플리케이션을 통해 모든 업무를 수행하게 된다. 기본적인 작업 단위는 모두 XML Web Service로 노출되어 있는데, 클라이언트는 ProxyWrapper와 리포트 뷰어를 통해 각각 웹서비스, 리포팅 서비스와 연동한다. 또한 웹서비스는 데이터 액세스 컴포넌트와 인터페이스하여 데이터를 조작하고 결과를 리턴 받는다.
메인 모듈을 제외하고 배포의 기본 단위는 몇개의 화면으로 묶여진 하나의 업무로 구성된 어셈블리이다(No-Touch Deployment). 마치 브라우저에서 자동으로 업데이트된 웹 페이지를 로드하는 것과 유사한 형태로 서버에 갱신된 버전이 있다면 클라이언트로 자동 다운로드 되어 보여진다(동일한 버전의 경우, 클라이언트는 Cache된 버전을 사용한다). 메인 모듈(메인 프로그램 및 프레임웍과 라이브러리 들)의 경우, Enterprise Library와 UAB(Updater Application Block)를 사용(Click Once를 사용하려 하였으나 몇가지 문제로 인하여 선회)하여 배포된다.
클라이언트(Smart Client)는 아래 그림과 같이 브라우저에 내장되는 방식이 아닌 독립 실행(Stand alone) 방식으로 구동된다.
개발 퍼포먼스도 좋았고 시스템도 그럭저럭 안정적으로 돌아간다. 물론 향후 업그레이드 해야할 몇가지 구조상의 문제도 있다(자세한 설명은 다음에 기회를 만들까 한다. ^^).
이번에 진행되는 프로젝트는 Java 기반이다. 이전 프로젝트와 상호 비교해볼 수 있는 좋은 계기가 될 듯 하다.
Posted by Mr.朴


