ProFrame C 5.0

본 장에서는 ProFrame C 5.0 릴리스에서 추가된 새로운 기능에 대해 간략히 설명한다.

1. 신규 기능

1.1. Multi Project

ProFrame에서는 논리적인 구분을 위해 메타데이터의 프로젝트 구분자(PROJECT_ID)를 사용하여 동시에 여러 프로젝트를 개발할 수 있는 기능을 추가하였다.

  • 프로젝트별 Runtime 설정 기능

    프로젝트별로 Runtime을 설정하여 각 프로젝트별의 독립적인 실행환경을 제공한다.

  • 이기종 DB 지원 및 프로젝트별 DBMS 독립적 사용을 위한 멀티 커넥션 처리 기능

    Oracle과 Tibero DB를 지원하며, 프로젝트별로 DBMS 커넥션을 별도로 설정할 수 있는 기능을 제공한다.

  • WebAdmin의 Multi Project 지원 기능

    WebAdmin 시작 페이지에서 프로젝트 ID를 선택할 수 있으며, 프로젝트별로 WebAdmin 페이지를 별도로 제공한다.

  • 프로젝트별 리모트 소스 젠 및 컴파일 기능

    프로젝트별로 Logserver를 설정하여 원격으로 소스 생성과 컴파일을 하는 기능을 제공한다. 생성 된 소스와 컴파일 파일들은 Logserver가 있는 로컬의 설정한 디렉토리에 생성된다.

    <configField id="PRJ1" type="subConfigField" value="true" xmlns="" >
       <subConfigField id="LOG_IP" type="string" value="192.168.1.123"  xmlns="" />
       <subConfigField id="LOG_PORT" type="string" value="9998" xmlns="" />
    </configField>
    <configField id="PRJ2" type="subConfigField" value="true" xmlns="" >
       <subConfigField id="LOG_IP" type="string" value="192.168.1.124" xmlns="" />
       <subConfigField id="LOG_PORT" type="string" value="9999" xmlns="" />
    </configField>
  • SitePlug을 통해 커스터마이징 형상관리를 할 수 있는 기능

    사이트 커스터마이징 기능이 추가되었다.

    • REQUEST_PUBLISH 메시지 : 형상 관리 Agent에서 프로젝트별 리소스의 형상관리 파일 생성 요청

    • REQUEST_APPROVAL 메시지 : 형상 관리 Agent에서 가져 갈 수 있는 tar를 프로젝트별 로그서버에 생성 승인 요청

  • ServerCMDStream 멀티프로젝트 지원 기능

    기존 송신 프로그램의 별도 수정 없이 멀티프로젝트를 지원하는 서버에서 작성된 xml 리소스를 지원한다.

  • ServerCMDStream을 통한 메타 싱크 기능 추가

    ServerCMDStream을 이용해 메타를 전송할 경우 모든 프로젝트에 메타가 등록되는 기능을 제공한다.

    xml의 attribute로 projectId를 설정한다면 해당 프로젝트에만 등록이 되며, 해당 모드(C(최초 생성), U(업데이트), D(삭제))를 지원한다.

  • DBIO 사용 시 데이터소스 존재 여부에 따라 런타임으로 자동 Switching 되는 기능

    DBIO를 사용하는 경우 데이터소스가 존재 하지 않을 경우 런타임 데이터소스로 자동으로 스위칭 되는 기능을 제공한다.

  • 프로젝트별 Logging On/Off 기능

    통합 서버의 PfmDevSvr.xml의 USE_PROJECT_LOG 옵션을 이용하여 사용자가 필요한 프로젝트만 logging할 수 있는 기능을 제공한다.

    해당 기능을 사용하기 위해서는 <configField id="USE_PROJECT_LOG" value="TRUE" type="String" xmlns=""/>가 먼저 설정 되어 있어야만 사용 가능하다.

    <configField id="MULTI_PROJECT" value="TRUE" type="String" xmlns=""/>
    <configField id="PROJECT_ID" value="PRJ1:PRJ2" type="String" xmlns=""/>
    <configField id="USE_PROJECT_LOG" value="TRUE" type="String" xmlns=""/>
    <configField id="PRJ1" type="subConfigField" value="true" xmlns="" >
      <!-- Logging ON -->
      <subConfigField id="USE_PROJECT_LOG" type="string" value="TRUE" xmlns="" />
    </configField>
    <configField id="PRJ2" type="subConfigField" value="true" xmlns="" >
      <!-- Logging OFF -->
      <subConfigField id="USE_PROJECT_LOG" type="string" value="FALSE" xmlns="" />
    </configField>
  • 프로젝트를 선택하여 스튜디오에 로그인할 수 있는 기능

    스튜디오에 로그인하는 경우 프로젝트를 선택하여 로그인할 수 있는 기능을 제공한다.

1.2. Release Image / Work Space

Release Image(RI)라는 운영영역과 Work Space(WS)라는 개발영역의 형상을 분리하여 관리할 수 있는 기능을 추가하였다. 체크인/체크아웃을 통해 개발과 운영 형상의 리소스를 이동할 수 있으며, 리소스의 생성 및 수정은 오직 WS 영역에서만 가능하다. RI/WS의 자세한 내용은 매뉴얼을 참고한다.

  • 체크인 기능

    리소스를 WS 영역에서 RI 영역으로 이동하는 기능을 제공한다. 체크인 기능을 사용할 때는 체크인 히스토리 내역을 입력해야 하며, 체크인 된 리소스를 WS 영역에서 삭제된다.

  • 체크아웃 기능

    리소스를 RI 영역에서 WS 영역으로 복사하는 기능을 제공한다.

  • 체크아웃 취소 기능

    리소스를 체크아웃하였으나 체크아웃된 WS 영역의 리소스를 RI로 반영하지 않고 체크아웃을 취소하는 기능을 제공한다. 체크아웃이 취소된 리소스를 WS 영역에서 삭제된다.

  • RI/WS 영역별 리소스 관리(리소스 열기, 삭제, 수정 등) 기능

    RI 영역과 WS 영역별로 리소스가 각각 존재하며 이를 각각 관리할 수 있는 기능을 제공한다. RI와 WS 영역의 리소스는 관리 기능에 차이가 있다.

    • RI 영역 : 열기, 삭제

    • WS 영역: 생성, 저장, 열기, 삭제, 수정

  • RI/WS 영역별 단위 테스트 기능

    RI 영역과 WS 영역의 리소스를 각각 단위 테스트할 수 있는 기능을 제공한다.

  • WS 영역의 EMB에서 피 호출 모듈의 타겟을 변경하여 소스 생성 및 단위 테스트할 수 있는 기능

    WS영역의 EMB에서 호출된 피 모듈의 타겟(RI/WS)을 변경하여 리소스를 생성할 수 있으며, 생성된 리소스로 단위 테스트할 수 있는 기능을 제공한다.

    호출된 모듈의 타겟 변경 방법은 해당 모듈의 특성창에서 변경할 수 있다.

    figure1 1
    모듈 타겟 변경 방법
  • RI/WS 기능 ON/OFF 기능

    통합 서버의 PfmDevSvr.xml의 USE_RIWS 옵션을 이용하여 RI/WS 기능을 ON/OFF 할 수 있는 기능을 제공한다.

    <!-- RI/WS의 ON/OFF 기능-->
    <configField id="USE_RIWS" value="TRUE" type="String" xmlns=""/>
  • 리소스 체크인할 때 WS의 히스토리 데이터 삭제 여부를 옵션으로 설정하는 기능

    리소스 체크인할 때 WS의 리소스 히스토리를 삭제하는 기능을 제공하며, 통합 서버의 PfmDevSvr.xml의 DELETE_WS_HISTORIES 옵션을 이용하여 ON/OFF할 수 있다.

    <!-- RI/WS의 check-in 시 WorkSpaceHistory 삭제 여부 -->
    <configField id="DELETE_WS_HISTORIES" value="TRUE" type="string" xmlns=""/>
  • RI, WS, Runtime, DBIO의 데이터소스를 각각 설정할 수 있는 기능

    RI, WS, Runtime, DBIO의 데이터 소스를 각각 설정할 수 있는 기능을 제공한다. 데이터 소스는 JEUSMain.xml에서 설정할 수 있다.

        <resource>
            <data-source>
            <database>
                <vendor>oracle</vendor>
                <export-name>[EXPORT_NAME]</export-name>
                <data-source-class-name>
                   oracle.jdbc.pool.OracleConnectionPoolDataSource
                </data-source-class-name>
                <data-source-type>ConnectionPoolDataSource</data-source-type>
                <database-name>orcl</database-name>
                <data-source-name>
                   oracle.jdbc.pool.OracleConnectionPoolDataSource
                </data-source-name>
                <port-number>[PORT]</port-number>
                <server-name>[IP]</server-name>
                <user>[USER]</user>
                <password>[PASSWORD]</password>
                <driver-type>thin</driver-type>
                <connection-pool>
                <pooling>
                    <min>10</min>
                    <max>20</max>
                    <step>2</step>
                    <period>600000</period>
                </pooling>
                </connection-pool>
            </database>
            <database>
                <vendor>tibero</vendor>
                <export-name>[EXPORT_NAME]</export-name>
                <data-source-class-name>
                   com.tmax.tibero.jdbc.ext.TbConnectionPoolDataSource
                </data-source-class-name>
                <data-source-type>ConnectionPoolDataSource</data-source-type>
                <database-name>tibero</database-name>
                <data-source-name>
                    com.tmax.tibero.jdbc.ext.TbConnectionPoolDataSource
                </data-source-name>
                <port-number>[PORT]</port-number>
                <server-name>[IP]</server-name>
                <user>[USER]</user>
                <password>[PASSWORD]</password>
                <driver-type>thin</driver-type>
                <connection-pool>
                <pooling>
                    <min>10</min>
                    <max>20</max>
                    <step>2</step>
                    <period>600000</period>
                </pooling>
                </connection-pool>
            </database>
            </data-source>
        </resource>
  • 단일 트랜잭션에서 다중의 커넥션을 Concurrency Problem 없이 처리 가능한 기능

    단일 트랜잭션에서 다중의 커넥션을 사용할 때 Concurrency Problem이 없이 처리 가능한 기능을 제공한다.

  • WS영역의 리소스 삭제 시 WS영역 소스 삭제 기능

    WS 영역의 리소스를 삭제할 때 해당 리소스의 소스, 헤더, xml 파일 등이 로컬에서 삭제되는 기능을 제공한다.

  • 배치 프로그램별 RI/WS 영역의 모듈 테스트 기능

    RI/WS CALL 옵션을 export하여 RI/WS 영역의 모듈을 각각 테스트 할 수 있는 기능을 제공한다.

    ### Release Image 영역에 있는 배치 모듈 Call할때
    export PFM_WS_DLCALL_YN=N
    
    ### Work Space 영역에 있는 배치 모듈 Call할때
    export PFM_WS_DLCALL_YN=Y

1.3. TCache

  • Backup 기능

    공유 메모리에 Load된 TCache Item 내역을 Backup하는 기능을 제공한다.

    • 사용법

      $ pfmtcachebackup -t [ALL | ITEM_NAME | PFM_*]
      옵션 설명

      -t ALL

      Item 내역 전체를 Backup한다.

      -t [ITEM_NAME]

      특정 Item 내역을 Backup한다.

      -t PFM_*

      시작 글자를 기준으로 와일드카드('*'만 제공) 문자에 맞는 Item 내역을 Backup한다.

  • Restore 기능

    Backup한 파일을 TCache Item 내역에 Load하는 기능을 제공한다.

    • 사용법

      $ pfmtcacherestore -d [Date : YYYYMMDD] -t [ALL | ITEM_NAME | PFM_*]
      옵션 설명

      -d [Date : YYYYMMDD]

      Load 할 Backup 파일의 일자를 설정한다.

      -t ALL

      Backup 파일 Item 내역 전체를 Load한다.

      -t [ITEM_NAME]

      Backup 파일 중 특정 Item 내역을 Load한다.

      -t PFM_*

      Backup 파일 중 시작 글자를 기준으로 와일드카드('*'만제공) 문자에 맞는 Item 내역을 Load한다.

  • Avg List에 의한 튜닝 기능

    적절한 TCache 성능 보장을 위해 Avg List 값을 확인할 수 있는 기능을 제공한다.

    Avg List 값은 pfmtcacheadmin -s를 이용하여 확인할 수 있으며, SIZE_HASH 값으로 조절할 수 있다. SIZE_HASH와 Avg List는 반비례 관계이다.

  • pfmTCacheItem 기능 추가

    ProFrame 전용 API인 pfmTCacheItem을 제공한다. pfmTCacheItem은 pfmTCacheGet과 pfmTCachePut이 하나의 기능으로 구현된 부분이다.

    pfmTCacheItem은 $TCACHECONF의 CALLBACK_NAME에 설정된 BusinessModule의 DB 커넥션을 사용한다. "CALLBACK_NAME=GET_PFM_BM"인 경우를 예를 든다면, pfmTCacheGet했을 때 찾지 못했을 경우 GET_PFM_BM에서에서 데이터를 가져와 pfmTCachePut하는 로직을 처리한다. 이때 DlCall되는 라이브러리는 libGET_PFM_BMC.so.*가 호출된다. BM은 "_WS"가 붙지 않은 라이브러리인 RI 영역의 BM 라이브러리만 Dlcall된다. 따라서 WS/RI 환경일 때에는 RI 영역의 BM만 호출된다.

    BM은 내부적인 처리 구조로 인해 IN/OUT을 가지는 ProFrame C의 BusinessModule로 제한한다. 해당 BM의 Input 구조체의 size는 SIZE_KEY와 대응되며, Output 구조체의 size는 SIZE_REC와 대응된다. CALLBACK_NAME은 BM의 물리명인 "CALLBACK_NAME=GET_PFM_BM"로 설정한다.

    • pfmtcache.cfg 설정 예

      # cache for PFM_SVC
      CACHE_NAME=PFM_SVC
      SIZE_MEM=6553                # the total cache memory size in kilo-bytes
      SIZE_HASH=1024               # the number of hash key (MAX=6553)
      SIZE_KEY=30                  # the number of digits of the index column
      SIZE_REC=2048                # the size of a single record in bytes
      INV_TIMEOUT=10               # invalidation timeout in sec
      CALLBACK_NAME=GET_SVC_BM     # libGET_SVC_BM.so

1.4. Runtime 환경 변수 추가

  • $ENVHOME/profile.proframe

    export PROJECT_ID=[PRJECT_ID]  # Project ID
    export PFMRELDIR=$PRJROOT/release
    export PFMRELDIR_WS=$PRJROOT/ws/release
    export PFMWSPOSTFIX=_WS
  • $ENVHOME/profile.[OS Vender]

    export OS_SO_SUFFIX=.so  # Os suffix

1.5. Tomcat 지원 기능

Tomcat AP서버를 지원 기능 추가되었다.

1.6. DBIO Tibero 실행계획 보기 기능

기존에 Oracle만 지원하던 DBIO의 실행계획을 Tibero 환경에서도 지원 가능하도록 기능이 추가되었다.

2. 수정 기능

2.1. 스튜디오

  • FileIO가 PlugIn으로 변경

    FileIO가 기본 리소스 타입에서 제외되고, PlugIn 형태로 추가할 수 있도록 변경되었다.

  • Server가 PlugIn으로 변경

    Server가 기본 리소스 타입에서 제외되고, PlugIn 형태로 추가할 수 있도록 변경되었다.

  • DBIO JAVA 소스젠 타입에서 strcpy 함수 사용가 strncpy로 변경

    DBIO JAVA 소스젠 타입에서 문자열 타입의 데이터를 복사할 때 strcpy를 strncpy로 변경되었다.

2.2. 통합 서버

  • ServerCMD를 별도 스레드로 수행가능하도록 기능 개선

    별도 스레드로 생성 할 경우 내부 통신 객체인 SimpleBuffer에서 필요한 정보가 모두 포함되어 통신할 때 사용하도록 변경되었다.

  • ServerCMDStream 멀티프로젝트 지원 기능

    기존 송신 프로그램의 별도 수정 없이 프로젝트 정보가 포함된 HTTP 통신을 이용하여 멀티프로젝트를 지원하는 서버에서 작성된 xml 리소스를 지원하도록 기능 개선되었다.

  • Server가 PlugIn으로 변경

    Server가 기본 리소스 타입에서 제외되고, PlugIn 형태로 추가할 수 있도록 변경되었다.

  • 리소스 형상관리 다중 요청 처리 기능 개선

    형상관리의 다중 요청이 처리될 수 있도록 기능이 개선되었다.

3. 삭제 기능

3.1. 스튜디오

  • 구조체 Tansformation 기능 삭제

    EMB 모듈에서 구조체간의 필드 항목이 다르거나 개발자가 직접 매핑하고자 할 때 사용하는 Tnasformation 기능이 삭제되었다.

  • DBIO C 소스젠 삭제

    DBIO 소스젠 방식 중 하나인 C 소스젠이 삭제되었다. 5.0에서는 Java 소스젠 방식만을 사용한다.

4. 버그패치

4.1. 스튜디오

  • 기본 쿼리를 체크인/아웃할 때 오류 발생하는 현상

    기본 쿼리를 체크인/아웃할 때 관련된 DBIO 전부와 관련 구조체가 같이 체크인/아웃되도록 기능이 수정되었다.

  • Persist DBIO 체크인 중 멈추는 현상

    Persist DBIO 체크인 중 아무런 메시지 없이 동작이 멈추는 현상이 수정되었다.

  • DBIO 기본 쿼리 생성 중 신규 생성 마법사의 테이블명, 그룹명이 반영 안되는 현상

    DBIO 기본 쿼리를 생성하는 중 오류가 발생하여 신규 생성 마법사가 닫히지 않은 상태에서 다른 테이블 또는 다른 그룹으로 변경하여 재생성을 시도할 때 변경된 테이블명, 그룹명이 반영 안되는 버그가 수정되었다.

4.2. 통합 서버

  • DEV_HISTORY 테이블에 클라이언트 IP가 누락되는 현상

    History 테이블에 클라이언트 IP가 누락되는 현상이 수정되었다.

  • 크기가 큰 리소스 저장 시 로그 서버에서 에러가 나는 현상

    일정 크기 이상의 리소스 파일을 로그 서버를 통해 넘기려 할 때 분할하여 여러 번에 나누어 전송가능하도록 수정되었다.