ProObject 소개
본 장에서는 ProObject의 특징 및 아키텍처 및 구성요소에 대해 설명한다.
1. 개요
ProObject는 차세대 업무시스템이 요구하는 유연성과 재사용성을 극대화하는 아키텍처 기반 틀을 제공하는 애플리케이션 프레임워크(Application Framework)이다. 즉, 온라인 서비스 및 배치 서비스 등을 구현할 수 있는 프레임워크를 제공하므로써 공통적인 구조와 개발 구현으로 빠른 시간에 고객의 요구사항 변화에 맞는 유연하고 기능 확장이 뛰어난 결과를 이끌어 낸다. 이와 같이 ProObject를 사용하여 개발된 서비스는 시스템의 안정적인 성능을 보장하고 유지보수를 쉽게 할 수 있도록 지원한다.
2. 아키텍처
개발자는 온라인 업무 처리 영역과 배치 업무 처리 영역만 개발하고 나머지는 시스템에서 제공한다.
ProObject는 크게 10개 영역 구조가 유기적으로 연결되어 있다.
-
온라인 입출력 처리 영역
다양한 입력 채널로부터 요청되는 입력 데이터를 업무 처리 영역에서 사용할 DO로 변환 하거나 업무 처리 영역에서 처리된 결과를 채널로 전달할 출력 데이터로 변환 및 매핑을 담당한다.
-
온라인 거래 제어 영역
운영 환경에서 발생할 수 있는 다양한 서비스별 거래 제어 요건을 수용 및 지원하여 탄력적인 운영환경 제공한다.
-
배치 입력 처리 영역
배치 입력 처리 영역은 다양한 프로토콜 및 전문 형식을 지원한다.
-
온라인 업무처리 영역
온라인 거래 처리 흐름 제어 환경 및 프레임 제공하며, 객체 LifeCycle 관리 및 DI(Dependency Injection)를 통해 최적의 온라인 서비스 환경을 제공한다.
-
배치 업무처리 영역
대량의 업무 처리를 효과적으로 처리하기 위한 환경을 제공한다.
ProObject의 배치는, Flow관리를 위한 Block과 실제 처리를 하는 Task로 나눠진다. Block에는 Condition Block, Step Block, Partitioner Block이 있으며, 실제 업무 처리를 하는 Task에는 ETL Task, Online Task, Normal Task가있다.
-
데이터 처리 영역
Function base 데이터 처리 방식 지양 하고 OOP 극대화하는 Entity 가능 처리 구조이다. DO Optimizer의 성능 최적화 기술을 통해 바람직하지 않게 구현된 애플리케이션의 수행 시간을 단축 처리할 수 있다.
-
후행 처리 영역
ProObject는 메인 업무 서비스에 대한 빠른 회신을 위해 메인 서비스와 분리할 수 있는 업무를 메인 업무 서비스 응답 이후 처리할 수 있는 아키텍처를 제공한다.
-
Cache 영역
ProObject는 Cache 인프라를 제공하며, DB IO를 최소화하여 DB 서버 부하량을 감소시키며, 애플리케이션의 성능 극대화 환경을 제공한다. 자세한 내용은 ProObject 런타임 엔진 개발자 안내서의 데이터 오브젝트 캐시를 참고한다.
-
연동 영역
연동 아키텍처를 통해 다양한 연동 상황에 대한 서비스간 연동을 지원한다. 개발자는 연동 API를 통해 손쉽게 애플리케이션을 구현할 수 있다. 자세한 설명은 ProObject 런타임 엔진 개발자 안내서의 서비스 개발을 참고한다.
-
시스템 처리 영역
ProObject의 객체 Pooling, 캐시, 메시지, 연동 프레임, 트랜잭션, 예외처리, Logging을 AOP(관점 지향 프로그래밍 : Aspect-Oriented Programming) 관점에서 처리하여 한 애플리케이션 내의 다양한 모듈에서 공통적으로 이용되는 기능을 분리시켜 핵심 기능 외의 기능을 응집되지 않도록 성능, 안정성 및 장애처리를 위해 제공되는 영역이다.
3. 특징
ProObject는 기존의 강점인 시스템 소프트웨어 기반의 기능과 성능은 더욱 강화하고 다른 프레임워크의 장점을 수용한 아키텍처적으로 최적화한 고성능 애플리케이션 플랫폼이다.
다음은 ProObject의 주요 특장점에 대한 설명이다.
-
획기적인 고성능 아키텍처
-
데이터 오브젝트 캐시는 데이터베이스 시스템의 IO를 획기적으로 줄이며, 고성능 애플리케이션 처리를 보장하는 기술이다. 캐시 사용율 증가 및 DB 서버의 IO 발생의 최소화 지원을 통해 애플리케이션의 성능을 향상시킬 수 있다.
다음은 데이터 오브젝트 캐시의 주요 특징이다.
-
DB 부하량 감소
-
애플리 케이션 처리 속도 향상
-
-
Dynamic DataSource는 트랜잭션 상황에 따른 최적의 데이터소스를 동적으로 판단하여 사용하는 트랜잭션 최적화 기술이다. 서비스가 호출되면 AP에 트랜잭션을 분석해서 XA 데이터소스와 NON-XA 데이터소스로 동적으로 선택한 두 DB 영역에 접근한다. 이 기능은 불필요한 XA 데이터소스의 사용을 방지하여 빠른 트랜잭선을 처리하여 최적화된 관리환경을 제공한다.
-
ProObject는 강력한 미들웨어 기반의 배치 엔진을 구성하여 다양한 유형의 대용량 배치를 처리한다. Task Object 및 ETL을 병렬로 처리할 수 있다.
-
-
데이터 프레임워크 포함
-
Data Object(DO)는 DB 또는 File의 데이터를 객체화(Entity)하여 물리적으로 떨어진 데이터를 애플리케이션 서버 영역에 캐시하는 기능을 제공한다. 이 기능은 비즈니스에서는 데이터의 저장소가 DB나 File로 저장되어 있든지 플랫폼에서 데이터 처리를 표준화해서 제공하기 때문에 그에 따른 처리를 하지 않아도 된다.
-
DO Optimizer는 비효율적으로 구현된 애플리케이션을 보다 빠른 속도로 처리 할 수 있는 기능을 제공한다. DO Optimizer는 컴파일러 기술을 활용하여 업부 비즈니스 처리의 효율성을 극대화할 수 있는 환경을 제공한다. 또한 비효율적인 애플리케이션의 관리를 Smart하게 처리하여 DB 부하를 감소시킬수 있다.
-
-
JVM 메모리 안정성 극대화
-
메모리는 시스템 안정성과 밀접한 관계가 있는데, ProObject는 객체 라이프 사이클 관리(Object Pooling)를 제공하여 안정적인 JVM의 메모리 사용 환경을 제공한다. 따라서 런타임 객체를 생성하는데 오베헤드를 최소화할 수 있다. ProObject에서 IoC(Inversion of Control) / DI(Dependency Injection) 기술을 직접 구현하여 JVM GC의 최적화를 가능하도록 한다. 또한 ProObject에서는 업무 서비스 객체에 대한 최대 메모리 사용량 제약 기능 제공을 통해 잠재적인 메모리 장애 상황을 차단할 수 있다. 따라서 안정적인 시스템 운영기반을 마련하고 개발자의 실수로 인한 시스템 메모리 장애가 발생하는 문제를 방지할 수 있다.
-
ProObject는 업무 서비스 단위 클래스를 Class Loader를 사용해서 배포할 수 있다. Hot-Deploy 기능은 서비스 단위 동적 반영 구조 지원을 통해 안정적인 시스템 무중단 운영 환경을 제공한다.
-
-
최적화된 개발 유연성
-
ProObject는 Service, Business, Data Tier 별 고도화된 기능을 제공하며, 업무 서비스 실행에 최적화된 애플리케이션 아키텍처를 지원한다.
구분 설명 Service Tier
EMB(Enterprise Module bus) 방식으로 기존의 기존 EMB 기반의 개발 환경을 제공한다. Service Object (이하 SO) 단위의 객체 관리를 통해 객체 관리의 효율화를 극대화시키고 SO에서 참조하는 모든 BO, DO의 객체 관리 또한 가능하게 한다.
SO를 통해 비즈니스 로직과 프로그램 Flow의 분리를 통한 유연한 개발환경 제공하여 비즈니스 변화의 대응에 용이하고, 비즈니스 흐름을 가시적으로 표현할 수 있다.
Business Tier
EMB 방식, POJO(Plain Old Java Object) 방식으로 EMB 모델 중심의 소스 생성 방식을 제공하므로, 개발에 용이하고 변경에 유연하게 적용이 가능하다.
Data Tier
DO Editor를 제공한다. Data Entity 객체 개념의 도입하여 DB/File 등의 I/O 접근의 일원화하고, DO가 중심이 되어 모듈간 데이터를 전달한다.
-
ProObject는 데이터 전달에 레퍼런스 참조 구조를 제공한다. 레퍼런스 참조 구조는 처리에 필요한 데이터는 객체의 래퍼런스 참조를 통해 사용하도록 하는 구조로 객체를 재사용하도록 하여 업무 구현의 유연성을 증대시킬 수 있다. 객체의 재사용성으로 불필요한 객체의 생성을 방지하고 매핑에 대한 오버헤드를 줄일 수 있다.
-