개발 구성요소
본 장에서는 ProFrame를 이용하여 서비스 또는 업무 단위의 모듈을 개발할 때 필요한 리소스와 Property에 대해 설명한다. 추가적으로 스튜디오에 내장된 대표 프로바이더 즉, ProMapper, DBIO, EMB Designer에 대해 설명한다.
1. 리소스
ProFrame은 개발되는 모든 리소스를 메타 관리를 통해 강력한 통합 개발환경 관리 기능을 제공한다.
ProFrame의 모든 리소스 정보는 기본적으로 XML 메타 방식으로 표현하여 이를 관리하는 통합 서버의 데이터베이스에 저장되어 관리된다. 또한 XML 메타를 기반으로 템플릿 기반의 소스 생성 방식을 채택하여 특정 플랫폼에 종속되지 않고 관리할 수 있다. 템플릿 선택에 따라(C 또는 Java, 기타) 특정 플랫폼에 최적화된 소스를 생성하고 이를 통합 서버에 XML 메타와 함께 저장하는 구조이다. 또한, 선택적으로 배포 및 형상 관리를 위해 빌드된 바이너리도 함께 저장할 수 있는 구조를 제공한다.
효율적인 관리를 위해 XML에 표현된 기본 정보를 데이터베이스의 특정 테이블에 별도로 관리하여 영향도 분석, 의존성 검사, 버전 관리, 배포 관리, 형상 관리 등을 최적으로 수행할 수 있는 기능을 제공한다.
ProFrame에서 소스 생성 및 컴파일, 빌드는 통합 개발환경에서 처리할 수 있으며 통합 서버의 별도 명령어를 통해 XML 메타를 기반으로 템플릿 엔진을 이용하여 소스를 일괄 생성, 컴파일, 빌드, 배포할 수 있다. 즉, 모든 소스 및 분석, 설계 단계의 리소스를 통합 서버를 통해 관리하고 버전 및 이력 관리는 기본 기능으로 제공한다.
2. Property
ProFrame에서는 IT 용어, 업무 용어, 데이터베이스 명칭, 컬럼 명칭 등 다양한 형태의 용어들을 데이터 사전으로 등록하고 관리하여 애플리케이션 프로그램을 개발할 때 사용할 수 있다. 이를 Property라고 한다. Property는 RI/WS 동일하게 사용한다.
Property는 다음과 같은 역할을 수행한다.
-
코드 기반 모델링
소스를 생성할 때에는 코드 값으로 Generation한다.
-
데이터 통합 관리
데이터 설계자, 분석가, 개발자, 품질 담당자 등의 협의 체계를 기반으로 전사 차원의 통합 관리를 한다.
-
일관된 뷰 제공
메타 데이터를 통합하여 전사적으로 공유하고 일관된 뷰를 제공받는다.
3. EMB
EMB는 서비스 처리 흐름을 가시화하고 업무 모듈 간의 의존성을 최소화하는 아키텍처이다. EMB는 SOA 아키텍처를 기반으로 하여 Loosely-Coupled 애플리케이션 모듈 간의 조합을 편리하게 하기 위해 개발되었다.
EMB는 소프트웨어 구축 단계 중 설계 단계에서 설계 툴로서의 역할을 수행하며 개발할 때는 코딩 툴로서의 기능을 수행한다.
다음은 EMB를 설계 관점과 개발 관점으로 나누어 설명한다.
-
설계적 관점
-
큰 단위의 업무 플로우가 보인다.
-
트리 형태의 구조로 영향도 분석이 쉽다.
-
GUI 기반에서 마우스로 드래그 앤드 드롭 형식으로 작성이 가능하다.
-
-
개발적 관점
-
기본적인 업무 플로우만으로 소스 생성이 가능하다.
-
입출력 매핑을 할 때 ProMapper의 Smart Mapping 기능을 이용하여 자동으로 완성할 수 있다.
-
설계 측에 변경이 필요하면 변경할 때 설계서에 실시간으로 반영된다.
-
또한 EMB 기반 시스템에서는 다음과 같은 차별화 기능을 제공한다.
-
비즈니스 로직을 자산화
-
업무 서비스 플로우의 자산화
-
Module Pool, Property Pool 기능을 통해 업무 로직을 재사용한다.
-
Meta Repository 기반의 업무, 데이터, 인터페이스를 표준화한다.
-
-
유연한 Composite 서비스 개발
-
업무 서비스의 분해와 조립이 쉬운 아키텍처를 지원한다.
-
스튜디오를 이용하여 서비스 연동을 작성한다.
-
Module Pool 기반의 업무 로직 기능을 블록화한다.
-
-
성능을 고려한 아키텍처
-
Source Generation을 이용하여 서비스를 생성하므로 ProFrame 시스템의 성능 부하를 최소화한다.
-
Dynamic Call 기반의 호출 구조로 2PC 최소화 아키텍처를 제공한다.
-
CommBuff를 이용하여 업무 모듈 간의 데이터 공유로 디스크 IO를 최소화한다.
Dynamic Call은 시스템 운영 중에 동적으로 라이브러리를 교체하기 위해 ProFrame에서 제공하는 인터페이스 모듈이다.
CommBuff는 업무 모듈 간의 데이터 공유를 하기 위해 ProFrame에서 제공하는 인터페이스 모듈이다. 메모리 전달 및 관리를 수행한다.
-
4. ProMapper
ProMapper는 Channel Tier에서 전문 변환 및 모듈 간의 인터페이스 변환을 하기 위해 개발되었다.
개발자가 스튜디오에 내장된 ProMapper 편집기를 사용하여 개발중인 서비스에서 사용할 입출력 전문을 정의하면, ProMapper는 해당 전문을 C 언어로 표현할 수 있는 C 구조체와 C 소스를 작성하여 변환을 해준다. 그리고, 다양한 채널을 통해서 해당 서비스를 호출하면 ProMapper에 의해서 해당 채널의 전문은 서비스의 입력 구조체로 변환이 되며, 서비스에서 출력 구조체에 출력 값을 넣어주면 ProMapper에 의해서 출력 전문이 작성되어 해당 채널로 반환하게 된다.
ProMapper는 서비스의 입출력, 모듈의 입출력 정의에 필요한 구조체의 생성 및 구조체와 구조체, 구조체와 전문 간의 변환 정의에 대한 정보를 관리하고 소스 생성을 지원한다. ProMapper에서 지원하는 전문 타입에는 FDL, FML, Delimiter이 있다.
| 전문 타입 | 설명 |
|---|---|
FLD (Fixed-Length-Data) |
|
FDL/FML(Field Definition Language) |
|
Delimiter |
|
5. DBIO
데이터 처리에 대한 개발 생산성을 높이기 위해 데이터베이스 접근에 대한 독립성과 성능을 보장해주는 계층이 필요하다. ProFrame은 데이터베이스 접근 통합을 위한 DBIO 모듈과 연계 시스템과의 데이터 전달을 위한 DWIO 모듈을 제공하여 데이터베이스 관리시스템과 독립적인 업무를 개발한다.
DBIO는 데이터베이스 접근방식을 표준화하여 관리함으로써 중복된 SQL 프로그래밍을 방지하고, 데이터베이스 접근을 공통화하여 처리함으로써 개발 생산성 및 유지보수의 편의성을 제공하기 위한 목적으로 개발되었다.
다음은 DBIO 편집기의 주요 기능에 대한 설명이다.
| 기능 | 설명 |
|---|---|
SQL 관리 |
개발된 모든 SQL의 변경 내용을 저장하여 형상 관리를 한다. |
Runtime 권한 관리 |
개발된 SQL은 DBA의 승인 절차 없이 Runtime 시 시스템에 적용되지 못하도록 관리한다. |
SQL동작 예측 |
개발된 SQL의 실행 계획 정보를 모니터링한다. |
CRUD 모니터링 생성 |
프로그램 대 테이블 접근을 CRUD별로 모니터링한다. |
개발자 권한 관리 |
개발된 SQL 편집을 그룹별로 권한을 관리한다. 조인 및 서브 쿼리 등은 DBA의 승인 관리를 한다. SQL을 다른 개발자에게 이관할 때 승인 관리를 한다. |
개발자는 DBIO 편집기를 통해 데이터베이스 접근 로직을 정의하고 ProFrame에서 소스를 자동 생성해 줌으로써 개발 생산성을 향상 시킨다.
즉, DBIO 편집기에서 작성된 SQL은 Source Generator에 의해 간단한 Exec SQL 소스로 생성되고 컴파일 및 배포까지 개발자의 간단한 명령어 실행으로도 가능하다.
DBIO는 테이블 정보 또는 데이터베이스 접근 로직이 변경되는 경우 서비스 중단 없이 변경사항을 즉시 반영하기 위한 방안으로 ProFrame은 Runtime에 변경된 DBIO 모듈을 동적으로 반영할 수 있는 Hot Deploy 구조를 제공한다.
ProFrame의 DBIO는 여러 유형의 SQL을 테이블과 컬럼 정보를 선택하여 생성하거나 입력하여 모듈의 메타 데이터를 생성하고 이를 이용하여 DBIO 모듈을 생성한다. 개발자는 품질이 검증된 기존에 개발된 SQL Query Pool을 바탕으로 개별 쿼리 설계 및 구현할 때 참조할 수 있으며 담당업무 모듈에 적용하기 전 SQL 쿼리를 시뮬레이션하여 실행 계획 정보 등을 참조하여 Runtime에 발생하는 문제점들을 미연에 예측하고 방지할 수 있다.
또한 SQL의 테스트 및 실행 플랜보기 등의 SQL 작성 및 테스트에 필요한 기능들을 지원하고, Repository를 기반으로 권한 관리, 버전 관리, 영향도 분석 등의 통합 개발환경과 통합된 기능들을 지원한다.