====== 공통컴포넌트 2.0.0 변경사항 ====== ===== 배경 ===== 전자정부 표준프레임워크가 2.0으로 업그레이드되면서 기존의 공통컴포넌트(1.0)에 비해 변경된 사항에 대해서 기술하고자 한다. ===== 주요변경 사항(What's New) ===== 경량화 작업을 통해 새로워진 사항은 다음과 같다. * **설정파일** : 각종 설정파일들을 개발자가 배포파일 설치시 수정사항을 최소화하였다. * **배포파일** : 각 배포파일은 패키지간의 종속성 및 업무적 연관성을 포함하여 개별 배포파일이 하나의 독립적인 업무단위로 실행되도록 하였다. * **보완사항** : 패키지 경량화, 웹표준 순수(웹접근성, 웹표준), 보안취약점 개선을 하였다. ===== 2.0.0 변경사항 ===== ==== 설정파일 ==== **1) global.properites**\\ ^변경사항^변경 전(1.0.0)^변경 후(2.0.0)^ |local에 별도 복사 불필요|egovProps 디렉토리를 local로 복사한 후 설정변경|별도 복사없이 배포파일에 포함된 egovProps 디렉토리 파일을 변경함으로써 설정이 가능| |DB관련 설정|**context-datasource.xml**에서 DB관련된 설정|**global.properies** 파일에서 DB관련된 설정| **2) 디렉토리 경로변경**\\ 모바일 공통컴포넌트와 충돌을 방지하기위해 디렉토리를 변경하였다. ^공통컴포넌트^모바일 공통컴포넌트^ |egovframework.**com**|egovframework.**mbl.com**| |egovframework.spring.**com**|egovframework.spring.**mbl**| |egovframework.sqlmap.**com**|egovframework.sqlmap.**mbl**| |egovframework.validator.**com**|egovframework.validator.**mbl**| |css.egovframework.**com**|css.egovframework.**mbl**| |images.egovframework.**com**|images.egovframework.**mbl**| |js.egovframework.**com**|js.egovframework.**mbl**| |jsp.egovframework.**com**|jsp.egovframework.**mbl**| **3) context-scheduling 분리**\\ 기존의 context-scheduling 파일을 여러 파일로 분리하여 각 배포파일별로 필요한 scheduling만을 사용하도록 하였다. ^파일명^관련 패키지^ |context-scheduling-cop-sms.xml|SMS(문자메시지)| |context-scheduling-sts-bst.xml|게시판 통계| |context-scheduling-sts-ust.xml|사용자 통계| |context-scheduling-sym-bat.xml|배치관리| |context-scheduling-sym-ccm-acr.xml|법정동/행정동 수신처리| |context-scheduling-sym-ccm-icr.xml|기관코드 수신| |context-scheduling-sym-log-lgm.xml|시스템 로그| |context-scheduling-sym-log-tlg.xml|송수신 로그| |context-scheduling-sym-log-ulg.xml|사용자 로그| |context-scheduling-sym-log-wlg.xml|웹로그| |context-scheduling-sym-sym-bak.xml|백업관리| |context-scheduling-utl-sys-dbm.xml|DB서비스 모니터링| |context-scheduling-utl-sys-fsm.xml|파일시스템 모니터링| |context-scheduling-utl-sys-htm.xml|HTTP서비스 모니터링| |context-scheduling-utl-sys-nsm.xml|네트워크서비스 모니터링| |context-scheduling-utl-sys-prm.xml|프로세스 모니터링| |context-scheduling-utl-sys-srm.xml|서버자원 모니터링| |context-scheduling-utl-sys-trm.xml|송수신 모니터링| **4) validator 분리**\\ 기존 validator-rules.xml파일에 포함되어있는 rule을 공통컴포넌트용 validator 파일(**com-rules.xml**)로 분리하여 공통컴포넌트용 rule을 추가하였다. ^파일명^rule^비고^ |validator-rules.xml|required, requiredif, validwhen, minlength, maxlength, mask\\ byte, short, integer, long, float, double\\ date, range, intRange, floatRange, creditCard, email\\ **ihidnum, korean**|Apache Commons validator\\ + **실행환경에서 포함한 rules**| |com-rules.xml|password1, password2, password3, password4, minInteger, english|공통컴포넌트 rules| **4) web.xml 추가**\\ 로그인 정책 컴포넌트용 필터는 1.0.0에서는 @RequestMapping 형태로 제공되었던 것을 **2.0.0에서는 필터**형태로 제공한다.\\ EgovSSO 필터는 SSO를 연동하여서 사용시에 필터로 제어할 수 있도록 interface형태로 패키지를 제공한다. ^filter name^내용^비고^ |LoginPolicyFilter|로그인 정책 컴포넌트용 필터|**2.0.0 신규추가**| |springSecurityFilterChain|Spring Security 필터|Spring Security 사용시 주석해제| |EgovSpringSecurityLogoutFilter\\ EgovSpringSecurityLoginFilter|Spring Security 로그아웃\\ Spring Security 로그인 필터|Spring Security 사용시 주석해제| |EgovSSOLogoutFilter\\ EgovSSOLoginFilter|EgovSSO 로그아웃\\ EgovSSO 로그인 필터|**2.0.0 신규추가**\\ SSO 사용시 주석해제| **5) conetxt-egovuserdetailshelper.xml 신규추가**\\ 사용자에 대한 접근제한을 3가지 형태로 분리하여서 제공한다. ^bean id^내용^비고^ |egovTestUserDetailsService|세션/시큐리티를 제외한 테스트위한 인증(더미)|자동로그인\\ 사용자명 : 더미사용자| |egovUserDetailsSessionService|세션을 이용한 인증|세션을 이용한 접근 제어를 위해서는\\ controller에서 로그인 확인유무 로직추가 필요| |egovUserDetailsSecurityService|스프링 시큐리티를 이용한 인증|권한관리 패키지 설치필요\\ web.xml에 스프링 시큐리티 관련 설정을 해야함| **6) bean id 변경**\\ 기존 1.0.0 배포파일을 설치하여서 사용하고 있고, 2.0.0 배포파일을 추가로 설치하는 경우에 bean id 충돌을 사전에 예방한다. ex) context-common.xml ^1.0.0 bean id^2.0.0 bean id^ |bean id="antPathMater"|bean id="**egov**.antPathMater"| ==== 배포파일 ==== **1) 경량화(배포파일 용량 감소)** ^구분^1.0.0^2.0.0^ |전체 용량|30.76Mb|114.5Mb| |개별용량평균| 3.48Mb| 1.03Mb| | | |-2.45Mb| **2) 각 패키지별 생성스크립트 탑재**\\ 기존 패키지는 DB 생성스크립트가 한개로 되어 있어서 사용하지 않는 테이블도 일괄 설치해야하는 불편함이 있었다.\\ 2.0.0에서는 각 패키지별 생성스크립트를 탑재하여서 불필요한 테이블을 생성하지 않도록 하였다.\\ 다만, 여러 개의 패키지를 설치할 때에 스크립트가 중복되어서 설치시에 오류가 발생하나, 설치하는 데에는 이상이 없다. **3) common 패키지의 최소화 및 통합화(각 개별 패키지에 포함됨)**\\ 기존 1.0.0에서의 common 패키지는 17개의 패키지를 포함하고 있어서, 사용자가 원하지 않는 패키지도 무조건 설치하여서 사용해야하는 불편함이 있었다.\\ 2.0.0에서는 17개의 패키지를 2개의 필수 패키지로 줄임으로써 경량화 및 코드이 가독성을 향상시켰다. **4) 패키지별 종속관계 및 업무적 연관성을 포함하여 한 개의 독립적 패키지로써 설치가 가능함**(별도의 피키지 설치없이 각 개 패키지로 실행이 가능함)\\ 기존 패키지 설치시에는 common패키지를 설치하고, 원하는 패키지를 설치하였으나,\\ 2.0.0에서는 한 개의 패키지만으로 독립적으로 설치가 가능하다. **5) 모든 컴포넌트를 테스트 할 수 있는 통합 배포본 제공**\\ 219종에 대한 모든 컴포넌트가 포함되어 있는 all-in-one 파일을 제공함으로써 사용자가 한 눈에 모든 컴포넌트를 테스트 할 수 있는 통합 배포본을 제공한다. **6) 공통적으로 사용되는 css, img 파일에 대한 중복을 최소화함**\\ 기본에 동일한 css, image 파일들이 다수 존재하여, 유지보수에 어려움이 있어 중복을 최소화하여 유지보수성을 향상시켰다. ==== 보완사항 ==== **1) 보안점검을 통한 취약점 최소화** * KISA에 의한 보안점검 및 각종 취약점 수정 **2) 웹표준 순수** * 웹접근성 준수(K-WAH 3.0) * 웹표준 준수(W3C-Validator) **3) 기존 컴포넌트 완성도 제고** * 각 개의 배포파일만으로 실행이 가능하도록 DB 생성 스크립트 및 패키지에 대한 종속성을 고려하여 제작함 **4) refactoring을 통한 패키지 경량화** * 게시판, 통계, 로그 컴포넌트 **5) DB컬럼명 변경** * 자료사전과 데이터모델 정합성 일치화(데이터 표준화 정제) **6) 테스트 페이지** * 요소기술 테스트 페이지만을 배포