ISIS 기반의 엔터프라이즈 어플리케이션 개발방법
조은환, 이민수, 장영철, 이 봉동부CNI
Development Methodology of Enterprise Applications based
on the ISIS
Eun Hwan Jo, Jong Kook Lee, Min Soo Lee, Chang Young Chul, Bong Lee
Dongbu CNI
E-mail: joeh, jklee690, mslee422, ycchangyc, [email protected]
요
약
오늘날의 엔터프라이즈 IT 환경은 비즈니스 요구사항이 빠르게 변하면서 기존 시스템들의 민첩 한 대응이 어렵고, 비즈니스 프로세스가 점점 복잡해지면서 시스템 개발 및 제어가 힘든 상황이 다. 이 때문에 관리비용은 점점 증가하고 시스템의 수명주기가 단축되면서 전체적인 개발생산성 이 낮아지고 있다. 최근 이와 같은 소프트웨어 개발문제를 극복하기 위해서 XP(eXtreme Programming) 와 SCRUM 같은 애자일(agile) 방법론이 등장하게 되었고, 점차 대규모의 엔터프 라이즈 어플리케이션 개발에 적용할 필요성이 대두되고 있다. 따라서 본 논문에서는 엔터프라이 즈 어플리케이션의 개발생산성을 향상시키고 수명주기를 연장시키는데 효과적인 ISIS(Integrated System of Independent Sub-systems) 개발방법을 제안하고자 한다.
1. 서론
지난 수십 년간 기업의 IT 조직은 발전된 기술 과 많은 리소스를 투입하여 효율적인 업무지원을 위한 시스템을 개발 및 구축해왔다. 그러나 필요 에 따라 개별적으로 개발된 시스템들은 엔터프라 이즈 IT 환경을 점점 더 복잡하게 만들었고[1], 비 즈니스 요구가 빠르게 변하면서 상대적으로 소프 트웨어 개발은 더욱 어려워지고 수명주기는 짧아 지고 있다. 따라서 IT 부서들은 효율성과 유연성 을 높여서 급변하는 요구에 대처할 수 있고 개발 생산성을 향상시킬 수 있는 혁신적 방법을 필요로 하게 되었으며, ESB(Enterprise Service Bus), SOA(Service Oriented Architecture) 그리고 애자일 방법론 등이 이와 같은 문제를 해결할 기술로 등 장하게 되었다. 이와 관련하여 본 논문에서는 엔 터프라이즈 어플리케이션 개발을 위한 ISIS 개발 방법을 제안하고자 한다. ISIS 개발방법은 복잡도 높은 엔터프라이즈 어플리케이션을 소규모 비즈니 스 트랜잭션 단위인 서브시스템으로 분해하고 이 를 독립적이고 점진적으로 개발하는 방식이다. 본논문의 내용을 간단히 살펴보면 다음과 같다. 우 선 2장에서는 관련연구인 ISIS와 애자일 방법론에 대해서 살펴보고 3장에서는 ISIS 개발방법의 특성 및 프로세스에 대해서 설명한다. 그리고 4장에서 는 ISIS 개발방법의 적용사례를 간단히 소개한다. 마지막으로 5장에서는 본 논문의 결론과 향후 과 제를 기술한다.
2. 관련연구
2.1 ISIS 아키텍처 모델[2] ISIS는 표준 인터페이스 기술과 분산 메시징 방 식을 사용하여 복잡도 높은 엔터프라이즈 어플리 케이션을 소규모 비즈니스 트랜잭션 단위인 서브 시스템으로 분해하고 이를 독립적이고 점진적으로 구현 및 결합하는 방식의 IT 아키텍처 모델이자 개발철학이다. 이와 같은 ISIS의 주요 개념은 다 음 두 가지로 요약할 수 있다. z Sub-system Oriented: 비즈니스 프로세스를 서브시스템 단위로 개발하고 점진적으로 하나 씩 통합하는 개발방식 z Independent Development: 자체 DB를 가진 독립 시스템 성격의 서브시스템을 개별적으로 설계 및 구현하는 방식 (그림 1) ISIS 어플리케이션 개념도 ISIS에서 서브시스템이란 ISIS 어플리케이션을 구성하는 기본구성 요소로서 독립적인 비즈니스 처리 및 개발단위이다. 즉, 하나 이상의 비즈니스 프로세스를 자체적으로 처리할 수 있는 소규모의 독립된 시스템으로서 전체 시스템 설계를 최소화 하면서 서브시스템 별로 독자적인 설계, 구현 그 리고 실행이 가능하다. 이를 위해서 서브시스템은 자신이 처리하는 비즈니스 프로세스의 관련 데이 터를 모두 로컬 DB에 가지고 있어야만 한다. 그 리고 이질적인 분산 환경에 위치한 각 서브시스템 들이 상호 연동되기 위해서는 표준 인터페이스를 제공해야 한다. (그림 2) ISIS 서브시스템 메타 모델 (그림 2)는 이와 같은 ISIS 서브시스템의 메타 모델을 보여주고 있다. ISIS 서브시스템 모델에 의하면 서브시스템은 기본적으로 처리해야 할 비즈니스 트랜잭션을 포 함하고, 해당 비즈니스 트랜잭션은 다수의 객체 컴포넌트로 구성된다. 그리고 서브시스템은 sender 와 receiver에 연결된 Message EndPoint를 통해서 타 서브시스템들에게 가공되지 않은 원천 메시지 를 비동기적으로 송수신한다. 이때, 각 서브시스템 은 자신의 비즈니스 트랜잭션 데이터를 ISIS 지원 미들웨어를 통해서 관련 서브시스템에게 push하게 된다. ISIS Support Middleware는 기본적으로 ISIS를 구성하는 각 서브시스템들 간에 큐 기반의 비동기 메시지 전송이 가능해야 한다. 이를 위해서 ISIS Support Middleware는 최근 각광을 받고 있는 엔터 프라이즈 어플리케이션 통합 기능과 SOA 지원 기 능을 포함하는 ESB 미들웨어 제품을 기반으로 구축하였다. ISIS Support Middleware는 ISIS의 각 서 브시스템간에 데이터 전송뿐만이 아니라 기존 레 거시 시스템간의 연동도 지원하도록 설계되었으며, 웹 서비스 및 개방형 표준 인터페이스 기술을 사 용한다. 또한 HTTP, SOAP, JMS 이외에도 다양한 프로토콜을 지원한다. 그리고 SAP의 경우에는 RFC를 자체적으로 구현한 어댑터를 사용하고, DB 및 특정 패키지 어플리케이션인 경우에는 해당 어 댑터를 추가적으로 구입 또는 개발하여 사용한다. ISIS는 개발자들이 전체 시스템에 대한 이해를 최소화하도록 하여 담당하는 서브시스템 개발에 집중하게 함으로써 전체적인 개발생산성 및 품질 을 향상시킬 수 있다. 그러나 금융 비즈니스와 같 은 실시간 시스템 분야 개발에는 적용이 어렵다는 제약사항과 데이터 중복, 데이터 정합성 그리고 장애처리에 대한 문제는 지속적으로 개선되어야 과제로 남아있다. 2.2 애자일 방법론 최근 소프트웨어 개발 환경 변화에 따른 기존 방법론의 한계에 따라 애자일 방법론이 등장하게 되었다[3]. 애자일 방법론은 프로세스나 도구보다 의사소통을 강조함으로써 요구사항 변경에 적극적 으로 대처할 수 있도록 하는 개발 방법론이다. 즉, 애자일 방법론은 계획을 바탕으로 하는 프로세스 라기보다는 경험이 중요한 프로세스이다. 그래서 계획에 따른 성실한 수행보다는 변경사항에 대응 하는 능력을 성공의 척도로 생각하다. 최근 대중 성과 효율성이 향상된 애자일 방법론으로써 XP(eXtreme Programming)와 SCRUM이 대표적이며, RUP의 애자일 버전인 애자일 UP, OpenUP 그리고 RUP 프러그인 등이 계속해서 진화하고 있다. 애자일 방법론의 공통적인 특성은 다음과 같다 [4]. z 프로세스 중심이 아닌 사람 중심 z Adaptive한 방법론 z 고객과의 협력을 중요 z 개발과 테스트를 지속적으로 반복 (그림 3)은 이와 같은 애자일 방법론 중에서 SCRUM의 프로세스 모델을 보여주고 있다. (그림 3) SCRUM 프로세스 모델[5] SCRUM은 작은 개발팀, 짧은 개발주기, 팀의 집 중력과 생산성을 유지시켜 점진적으로 소프트웨어 를 산출하는 방법론으로서, 스프린트(sprint)라는 4~6주 정도의 기간을 주기로 반복개발하고 매일 15분 정도의 스크럼 미팅을 통해서 개발진행사항 을 확인하게 된다. SCRUM을 소프트웨어 공학 프 로세스라고 이야기할 수는 없지만, XP가 적절한 개발 프로세스가 될 수 있다고 생각하고 XP를 스 크럼의 동료 프로세스로 사용하기도 한다. 애자일 방법론은 문서화된 계획보다는 단위 모 듈 개발 결과와 신속한 요구사항 반영, 그리고 테 스트에 중점을 두고 있기 때문에 변화에 유연하게 대처할 수 있는 장점이 있다. 그러나 적용 프로세 스 정립이 부족하여 대규모 또는 대외 프로젝트처 럼 범위 변경이 자유롭지 않고 계획에 따른 실행 을 중요시하는 경우에는 아직까지 적용이 쉽지 않 다.
3. ISIS 개발 방법
3.1 개념 및 특징 엔터프라이즈 어플리케이션 규모가 점점 더 커 지고 새로운 요구사항들이 늘어나게 되면서 개발 생산성 및 품질 저하에 대해서 우려하고 있다. 그 리고 시스템 규모와 복잡도는 시스템 개발 실패라 는 문제를 야기한다. 따라서, 이러한 문제를 해결 하기 위해서 ISIS 아키텍처가 연구개발 되었고 본논문에서는 ISIS 어플리케이션 개발을 위한 방법 을 제안하고 있다. 즉, ISIS 개발방법이란 ISIS 아 키텍처 기반의 엔터프라이즈 어플리케이션 개발을 위한 소프트웨어공학적 프로세스로 정의할 수 있 다. ISIS의 기본개념은 복잡도 높은 엔터프라이 즈 어플리케이션을 서브시스템으로 분해한 후에 독자적으로 개발 및 결합함으로써 개발생산성 향 상 및 소프트웨어 수명주기를 연장시키는 것이다. 특히, ISIS 개발방법은 신규개발뿐만 아니라 추 가개발 모두를 지원할 수 있도록 고려하였다. 그 이유는 ISIS 어플리케이션이 다음과 같이 크게 2 가지 개발유형을 가지고 있기 때문이다. z Inter-system composition: 신규 엔터프라이 즈 어플리케이션을 개발할 때 처음부터 ISIS 기반으로 개발하거나 확장해 나가는 유형 z Intra-system composition: 기존 레거시 시스 템에서 필요로 하는 신규 요구기능을 ISIS 서 브시스템으로 개발하여 연동하는 유형 기본적으로 ISIS 개발방법론은 ISIS 개발철학을 만족시키고 민첩하고 유연한 개발이 가능할 수 있 도록 하기 위해서 애자일 방법론을 근간으로 하고 있다. 그리고 애자일 방법론의 엔터프라이즈급 어 플리케이션 개발상의 제약사항을 보완하기 위해서 전통적인 방법의 개발 프로세스도 함께 수용하였 다. ISIS 개발방법의 특성을 정리하면 다음과 같다. z ISIS 아키텍처 중심 z 초기 개발 노력 최소화 z 서브시스템 독립적 개발 z 반복적이고 점진적인 개발 z S/W 자원 활용도구 사용 애자일 방법론과 달리 ISIS 개발방법의 가장 큰 차별적 특징은 ISIS 아키텍처 중심이며 S/W 자원 활용도구를 사용한다는 것이다. 우선, ISIS 개발방 법은 범용적인 방법론이라기 보다는 ISIS 아키텍 처에 특화된 개발방법이기 때문에 이 같은 조건에 부합하는 엔터프라이즈 어플리케이션 개발에 유리 하다. 그리고 ISIS 개발방법에서는 엔터프라이즈 어플리케이션의 서브시스템 개발 팀들간에 많은 협동을 요구하지 않고 독립된 형태의 어플리케이 션 개발을 지원하기 위해서 ISIS Repository라는 구 체적인 도구를 제시하고 있는 것이 특징이다. 3.2 개발 프로세스 모델 (그림 4) ISIS 개발 프로세스 개념도 (그림 4)은 ISIS 개발 프로세스 모델을 보여주고 있다. ISIS 개발 프로세스 모델은 크게 ISIS Envisioning 단계와 ISIS Development 단계로 구성 된다[6].
ISIS 개발 프로세스의 1단계는 ISIS Envisioning 단계로써 ISIS 어플리케이션의 전체적인 개발계획 및 요구사항을 수립하고 서로 독립된 서브시스템 개발팀들 사이의 원활한 기술적 의사소통 및 관리 를 준비하는 단계이다. 다시 말해서 각 서브시스 템 개발팀들이 공통의 목적과 요구사항을 이해하 면서 일관성 있는 개발이 가능하도록 하기 위해서 필요한 산출물을 만들어내는 과정이다. Initial Planning에서 프로젝트의 계획을 수립하고 Initial
Modeling에서는 전체 ISIS 어플리케이션의 초기 모델링을 하는 과정으로 서브시스템 팀들간의 기 술적 의사소통과 독립적인 개발을 가능하게 하는 산출물을 만들어 낸다. 구체적으로 1단계의 핵심 과정인 Initial Modeling에서는 업무 프로세스 모델 링, 데이터 모델링 그리고 서브시스템을 식별하게 된다. ISIS의 성공적인 개발은 서브시스템 식별 및 설계가 잘 되었을 경우를 전제로 하기 때문에 이 에 대해서는 3.3절에서 좀 더 자세하게 다룬다. ISIS Envisioning 단계의 주요 산출물로는 프로젝 트 수행계획서, 요구사항 정의서, 초기 비즈니스 프로세스 정의서, 초기 데이터 모델 정의서 그리 고 서브시스템 명세서 등이 있다.
ISIS 개발 프로세스의 2단계는 ISIS Development 단계로써 애자일 개발방법론의 기본요소인 반복 패턴을 기반으로 한다. 즉, 모든 서브시스템은 반 복적으로 분석, 설계, 구현 그리고 테스트를 통해 서 점진적으로 개발이 이루어진다. 특히 팀 단위 의 분산개발환경에서 생산성 및 요구사항 대응력 을 높이기 위해서는 각 서브시스템 개발 팀들의 통합테스트 시점을 일치시키고 앞당길 필요가 있 다. 대상 어플리케이션 규모에 따라 차이는 있지 만 가능하면 하나의 서브시스템 개발 반복주기를 1~2개월로 하는 것이 적당하다. 단, 서브시스템의 규모가 너무 클 경우에는 서브시스템 개발 팀 내 에 하위 팀을 두어 반복을 할 수도 있다. 그리고 릴리즈 시점과 횟수는 프로젝트 규모 및 계획에 따라 유동적으로 가져갈 수 있다. ISIS 개발은 1단계의 초기 프로젝트 팀과 2단계 의 서브시스템 개발팀들에 의해서 수행된다. 초기 프로젝트 팀은 기본적으로 프로젝트 관리 전문가, 전문아키텍트, 업무 분석설계 전문가 그리 고 데이터모델링 전문가 등으로 구성되어 본격적 인 개발에 필요한 공통적인 뷰(view)를 제공해야 한다. 서브시스템 개발팀은 일정에 따라 반복을 시작하고 실제로 동작하는 코드의 단위테스트를 거쳐서 타 팀들이 개발한 코드와 통합 테스트하여 개발을 완수하는 책임을 갖는다. 따라서 서브시스 템 개발팀은 시스템을 구축하기 위해 필요한 모든 일을 수행하는 다기능 복합 팀이어야 한다. 분산된 팀들이 독립적으로 하나의 시스템을 개 발할 때 가장 큰 문제는 의사소통이다. 따라서, ISIS 개발방법에서는 각 팀들이 의사소통은 원활 히 하면서 기술적인 종속은 배제될 수 있도록 하 기 위해서 1단계의 산출물을 서로 공유 및 피드백 반영을 할 수 있도록 하고 있으며, ISIS Repository 참고 및 등록과정을 통해서 이와 같은 문제를 최 소화하고자 한다. 3.3 주요 활동 ISIS 개발의 성공적인 수행을 위해서는 복잡도 를 최소화하고 독자적인 개발이 가능한 단위의 서 브시스템 식별이 필수적이다. 이 작업은 (그림 5) 와 같은 순서로 진행된다. (그림 5) 서브시스템 식별 순서 우선 업무 프로세스는 특정 목표의 업무를 처리 하는 활동들의 집합으로써 업무 분류정의, 현행 프로세스 이해, 목표 프로세스 정의 그리고 자동 화 대상 선정 순으로 모델링 한다. 데이터 모델링 은 통합 데이터 모델링과 서브시스템 데이터 모델 링으로 나뉘는데 통합 데이터 모델링은 전체 시스 템에 대한 개념 모델링 차원에서 논리 ERD을 설 계한다. 그리고 서브시스템을 식별하기 위해서는 업무 트랜잭션 식별이 필요하다. ISIS에서 정의하 는 트랜잭션이란 사용자 이벤트 또는 입력을 받아 서 처리하는 단위로써 데이터의 CRUD와 함께 rollback이 가능해야 한다. ISIS서브시스템 식별의 마지막 과정은 (그림 6) 과 같은 식별조건에 따라 서브시스템을 정의한다. 우선 (그림 6)의 [조건1]에서처럼 하나의 서브시 스템은 다수의 트랜잭션을 포함할 수 있고 각 서
브시스템들은 서로 다른 데이터 모델을 가져야 한 다. 그렇지 않다면 하나의 서브시스템으로 통합되 어야 한다. 다음으로 [조건2]처럼 서로 다른 서브 시스템에 포함된 트랜잭션들이 비즈니스 로직으로 결합되면 안 된다. 만약 그렇다면 하나의 서브시 스템에 해당 트랜잭션들이 위치해야 한다. 이와 같은 조건을 모두 만족할 때 하나의 서브시스템으 로 식별될 수 있다. (그림 6) 서브시스템 식별 조건 ISIS 개발방법은 기존 다른 방법론과 달리 기존 의 IT 자산을 최대한 활용하고 독자적인 서브시스 템 개발을 지원하기 위해서 ISIS Repository을 제공 한다. ISIS Repository란 ISIS 어플리케이션 개발을 위해서 필요한 조직 내의 흩어져 있는 각종 IT 자 원 정보로써 서로 공유할 수 있는 정보의 저장소 이다. ISIS Repository는 다음과 같은 4개의 dictionary로 구성되어 있다. z Data dictionary: 기존의 업무시스템이 사용하 는 원시입력 데이터 정보
z Transaction dictionary: 데이터의 CRUD 책임
을 가진 단위 업무 처리모듈 정보
z Sub-system dictionary: 하나 이상의 트랜잭
션을 포함하고 있는 ISIS 서브시스템 정보
z ISIS message dictionary: 기존 시스템들이
ISIS Hub을 통해서 송수신하는 메시지 정보 (그림 7)은 D사의 전표관리시스템인 e-BillS의 data dictionary 예를 보여주고 있다. 각 dictionary는 ISIS 어플리케이션 초기 모델링 단계에 재사용 가능한 데이터, 트랜잭션 그리고 서브시스템 자원정보를 제공하게 되며, 서브시스 템 개발 단계에서는 필요한 데이터 및 메시지 정 보를 참고하거나 관련 신규 정보를 등록하여 타 팀들이 참고할 수 있도록 함으로써 독자적인 시스 템 개발을 가능하게 한다. (그림 7) Data dictionary 샘플
4. 적용사례
본 논문에서는 ISIS 개발방법 적용사례로써 D사 의 ITSM 개발사례를 간단히 소개하고자 한다. ITSM 시스템은 ITIL 기반으로 IT 서비스 운영관 리를 자동화 및 지원하는 시스템을 말한다. D사의 이전 ITSM은 H사의 외산 제품으로써 국내사용 환경에 맞도록 커스터마이징하는데 상당한 노력과 비용이 투자되었으나 지속적으로 운영 및 유지보 수 하는데 어려움이 있었다. 따라서, D사는 유연성 이 높은 고객 맞춤형의 ITSM을 자체 SM(System Management) 인력만으로 개발하고자 하였고, ISIS 아키텍처와 개발방법을 적용하여 ITSM 개발에 성 공하였다. 개발 분석결과에 따르면, 새로운 기술습득을 위 한 학습곡선(learning curve)을 감안하더라도 개발용 이성 및 개발생산성이 향상되었다. 그 이유는 서 브시스템 독자 개발로 인해서 상대적으로 개발이 용이하였고 분할업무에 집중할 수 있었기 때문이 다. 즉, ISIS 개발방법은 전문개발자가 아니더라도 복잡도 높은 ITSM을 단기간에 최소비용으로 개발 이 가능하도록 하였다.현재는 D사의 솔루션 재고수익관리시스템 개발 에 ISIS를 적용하여 개발 중이며 이를 통해서 ISIS 개발방법을 고도화하고 있다.
5. 결론
본 논문에서 소개한 ISIS 개발방법은 ISIS 아키 텍처 기반의 엔터프라이즈 어플리케이션 개발을 위한 개발방법 또는 프로세스로써 전통적인 개발 방식의 ISIS Envisioning 단계와 애자일 방식의 ISIS Development 단계로 구성된다. ISIS 개발방법 은 엔터프라이즈 어플리케이션의 개발생산성을 향 상시키고 수명주기를 연장시킬 수 있는 개발방법 으로 효과적이지만, 아직까지는 엔터프라이즈급 조직이나 어플리케이션 개발에 성공적으로 적용하 기 위해서는 해결해야 될 과제들이 남아있다. 우 선 ISIS 아키텍처 사상과 원칙에서 발생하는 기술 적인 문제와 제약사항들이다. 다음으로는 새로운 방법론의 적용을 부담스러워하는 내부 요소들일 것이다. 따라서, 향후에는 이와 같은 문제해결에 필요한 과제대상으로 연구를 계속 진행할 계획이 다.[참고문헌]
[1] Eric Pulier, Hugh Taylor, “Understanding Enterprise SOA”, MANNING, 2005
[2] 조은환, 이갑훈, 이민수, 이봉, “복잡한 엔터프 라이즈 응용 개발을 위한 ISIS 아키텍처”, 정보 과학회논문지, April 2010
[3] Mikko Kontio, “Adopting agile development, Part 1”, IBM, Mar 8, 2008
[4] Khursheed Abdi, “The Agile Advantage”, Sonata Software, Jan 9, 2009
[5] Dean Leffingwell, “Scaling Software Agility: Best Practices for Large Enterprises”, Mar. 8, 2007
[6] Scott Ambler, “Agile Modeling: Effective Practices for eXtreme Programming and the Unified Process”, Nov 23, 2009