슬라이드 1

Download Report

Transcript 슬라이드 1

전자정부 표준프레임워크
업그레이드 방안
SK C&C 임철홍 커미터
2010.12.15
dfdf
TABLE OF
CONTENTS
I.
표준프레임크 개요
II.
표준프레임워크 환경 분석
III.
표준프레임워크 업그레이드 원칙
IV.
표준프레임워크 업그레이드 방안
V.
향후 추진 계획
Page l
2
I. 표준프레임워크 개요
전자정부 개발프레임워크는 크게 실행환경, 개발환경, 관리환경, 운영환경으로 구성 되며, 실행환경 기반으로 공통 컴포넌
트가 구축되어 실행 되는 구조임
※ 실행환경, 개발환경 (1단계 사업)
관리환경(2단계 사업), 운영환경(3단계 사업),
공통컴포넌트 219종 개발
※ 경량화 버전, 모바일 공통 컴포넌트 (4단계 구축 예정)
전자정부 개발프레임워크 구성
구분
실행
환경
개발
환경
운영
환경
관리
환경
2007.1
사업 제안 타당성 검토
2008.1
ISP사업
2009.1
기능 및 역할
• 전자정부 사업에서 개발하는 업무 프로그램의
실행에 필요한 공통모듈 등
• 업무 프로그램 개발 시 화면,서버 프로그램,
데이터 개발을 표준화가 용이하도록 지원하는
응용프로그램 환경
• 전자정부 업무 프로그램의 개발에 필요한 환경
제공
• 화면개발도구, 컴포넌트개발도구,
데이터개발도구, 테스트자동화도구,
코드검사도구 등
• 실행환경에서 운영되는 서비스를 운영하기 위한
환경제공(모니터링, 설정, 커뮤니케이션 등)
• 개발프레임워크 및 공통서비스를 각 개발
프로젝트에 배포 및 관리하기 위한 모듈(배포,
관리시스템 등)
1단계 사업
2단계 사업
2010.1
3단계 사업
Page l
3
II. 표준프레임워크 현황 분석
표준프레임워크 구성 요소 중 모든 프로젝트에서 필수적으로 활용되며 주요 아키텍처 특성을 구성하는 요소는 Spring으
로 구성되고 있으며, 다수의 기타 영역은 오픈 소스 기반으로 선택적으로 활용되고 있음
표준프레임워크 아키텍처 모듈 뷰 구성
Presentation Layer
Business Logic Layer
Ajax Support
Internationalization
Web Flow
MVC
Spring 2.5.6
Security
Exception Handling
UI Adaptor
AOP
Spring 2.5.6
IoC Container
Spring 2.5.6
Server Security
Spring-security 2.0.4
File Upload/Download
FTP
Compress/Decompress
Mail
Marshalling/Unmarshalling
Object Pooling
String Util
XML Manipulation
Cache
Property
Encryption/Decryption
ID Generation
File Handling
Logging
Scheduling
Excel
Resource
Integration Layer
Data Access
TBD
iBatis 2.3.4.726
ORM
Hibernate 3.2
Message Service
DataSource
Transaction
Web Service
Implementation
Tool
Test Tool
 아키텍처에 영향을 미치는 핵심 영역은 Spring으로 구성
- IoC, MVC 등 프레임워크 아키텍처에 영향을 미치는 주요 영
역은 Spring으로 구성됨
- 영역의 숫자는 소수이나 모든 프로젝트에서 활용
Foundation Layer
Persistent Layer
표준프레임워크 아키텍처 모듈 뷰 특성
Naming Service
Deployment Tool
Conf. & Change
Mgt. Tool
주요핵심영역(라이브러리 배포되며, 필수 사용)
- 오픈 소스간 연결되는 코드들은 spring에서 제공 되는 코드
를 활용 (ORM, Integration 영역)
 프레임워크 업그레이드는 핵심영역에 우선 수행 해야 함
 라이브러리리 형태로 배포되거나 오픈 소스 그대로 활용됨
- 주요 핵심 영역의 라이브러리들은 표준프레임워크 자체코드
와 함께 배포가 되며, 모든 프로젝트에서 필수적으로 활용
- 대다수 실행환경 영역은 아키텍처에 영향을 미치지 않고, 오
픈 소스 형태로 프로젝트 별 필요에 의해 선택 활용됨
 라이브러리 배포 여부에 따라서 업그레이드 방법이 다름
본 문서는 라이브러리 배포 영역에 한해 기술되었음
(배포의 경우 라이브러리 교체/패키징 작업 필요하지만, 오
픈 소스를 활용 경우 테스트 코드 및 가이드 작업만 필요)
Page l
4
II. 표준프레임워크 현황 분석
표준프레임워크는 라이브러리 구성이 필수 및 선택 요소 구분이 필요하고, 패키지 구조는 테스트 코드 영역이 포함되어
있어 라이브러리 영역 식별이 불가능했음
표준프레임워크 구성 특성
표준프레임워크 구성
오픈 소스 Dependency
(Spring aop, Spring core, Spring beans…)
POM구조
매우복잡
- 오픈 소스/표준프레임워크 라이브러리가 모두 기술되어 있음
표준프레임워크 Dependency
egovframework.rte.fdl.cmmn
 (라이브러리 구조) 라이브러리 설정 복잡하고 필수/선택 구분
어려움
라이브러리
충돌 위험
- 표준프레임워크 적용 여부에 대한 기준이 없음 (어떤 패키지
를 활용해야 하는가 등)
(Spring aop, Spring core…)
- 표준프레임워크 라이브러리와 오픈 소스 라이브러리 간의 중
복지정으로 인한 버전 충돌 위험
egovframework.rte.psl.dataaccess
 Spring 등 필수 라이브러리의 경우 표준프레임워크 라이브
러 지정으로 포함 되도록 조정 필요
오픈 소스 Dependency
오픈 소스 Dependency
 표준프레임워크 레이어 별 라이브러리 사용하면 표준프레
임워크 적용으로 판단 가능 (라이브러리 구조 조정 선행)
(Spring aop, Spring core…)
…
egovframework.rte.fdl.cmmn
표준프레임워크 라이브러리 소스
라이브러리
(배포/필수)
테스트 소스
egovframework.rte.fdl.resource
테스트 소스
테스트 코드
(배포안됨
/필수아님)
 (형상관리 디렉터리) 라이브러리 영역/테스트 코드 영역 혼재
- 디렉터리 구조만으로 라이브러리 배포 영역 식별 불가 하여
유지보수에 혼란
 배포 영역과 테스트 코드(오픈 소스 활용) 영역 구분 필요
Page l
5
II. 표준프레임워크 현황 분석
Spring 3.x 버전이 새롭게 출시되면서 SpEL, REST지원, Bean Validation 지원 등 새로운 기능들이 추가 되었음
 Spring Expression Language
- Literal expressions, Boolean and relation operators,
Regular expression, Method invocation 등 제공
- parser.parseExpression에 의해 실행
 General-purpose type conversion system and field
formatting system
- core.convert가 제공 되어, 편리하게 변환 기능 제공
 Object to XML mapping functionality (OXM) moved
from Spring Web Services project
 IoC enhancements/Java based bean metadata
- Java Configuration Project (프로젝트의 설정과 빈들의
생성을 일괄적으로 처리)
 Comprehensive REST support
- URI template을 활용한 server side 지원
- rest template을 활용한 client side 지원
 @MVC additions
- @RequestBody, @RequestHeader 등 추가
 Declarative model validation
- JSR 303(Bean Validation)
 Early support for Java EE 6
- JSF 2.0, JPA 2.0 지원
 Embedded database support
- HSQL, Derby 등 지원
Page l
6
III. 표준프레임워크 업그레이드 원칙
표준프레임워크는 기존 어플리케이션과의 상호운용성을 유지하면서, 안정성, 성능 등의 자체 품질을 향상 시키는 방향으
로 업그레이드 되어야 함
표준프레임워크 업그레이드 배경
업그레이드 원칙
 모바일 환경 급속 발전
- 스마트폰이 급격이 보급되어, 모바일 웹 또는 앱과 통신 하는
서버 시스템의 Open API 서비스 중요성이 커짐
- REST 서비스 기술 활용이 증가되었음
 오픈 소스 버전 업 등 기술 환경 변화
- Spring3 출시 되었으며, 표준프레임워크 구성 오픈 소스들이
기능이 추가되거나 구성이 변경되는 등 버전업 되었음
- 1차 사업(’09년05월)이후 실행환경 버전업 안되었음
표준프레임워크 원칙
 공공정보시스템 상호운용성 확보
- 표준프레임워크의 가장 큰 목적은 공공시스템의 기종 프레임
워크로 인한 상호운용성 문제 해결임
- SI 프레임워크는 프로젝트별로 제안/활용되나, 표준프레임워
크는 국가적 표준으로 지속 활용됨
 기존 S/W 시장 보호
 표준 프레임워크는 기존 어플리케이션과 상호운용성을
유지 하면서 업그레이드 되어야 함
- 적용 기관별로 표준 시스템으로 적용하고 있기 때문에
기존-신규 어플리케이션간 호환성이 매우 중요
- 호환성 확보가 어려운 경우 변경 영향성을 최소화 하도
록 해야 함 (가이드 및 기존 공통컴포넌트 변경 필요)
 기존 시스템과의 호환성을 유지하면서 업그레이드를
통해 신규 기능 등을 추가적으로 확보 (Add-On 방식)
 기술 트랜드 변화에 대응해야 하며, 안정성 등 품질 향상
- 변화 발전하는 기술 시장의 트랜드를 반영하여, 지속적
으로 발전해야 함
- 표준프레임워크 업그레이드에 의해서 정보시스템이 국
가적인 규모에서 용향을 받게 됨
 선구자적인 기술 수용 보다는 검증된 기술을 기반으
로 안정적인 향상을 추구해야 함
- 상용 솔루션 영역과 충돌되지 않도록 하여 침해 위험 제거
Page l
7
IV. 표준프레임워크 업그레이드 방안
표준프레임워크 업그레이드 영향도 분석 결과 MyBatis, Spring Security 3.x의 경우 내부 구조가 변경된 내역이 많아 업
그레이드를 진행할 경우 기존 어플리케이션에 대한 호환성 보장이 어려움
MyBatis 등 업그레이드 이슈
 MyBatis 3.x 업그레이드
- Spring 3.x에서 직접 지원을 하고 있지 않으며, MyBatis에
서 Spring연계 코드를 직접 제공하고 있음
Spring Security 3.x 업그레이드 이슈
 egovframework.rte.fdl.security (보안 – 인증, 접근제어)
- Spring 3.x에서 지원 예정이나 시점은 확정 되지 않았음
- Spring Security 3.x의 경우 class구조 변경 등의 리팩토링이
되어 호환성 보장이 어려움
- 기존 iBatis에서 MyBatis로 업그레이드 되면서 향상된 점
파악과 업그레이드 타당성 확정 필요
- 2.x에 대한 업그레이드를 동시에 진행 하였음 (계속 업그레이
드가 유지 될지는 명확하지 않음)
 egovframework.rte.fdl.logging (로깅)
- 현장에서 log4j를 직접 활용하는 형태이며, log4j 1.3 drop으
로 현행 코드 변경 필요
- logging기능 확인이 필요하며, 라이브러리 유지 여부에 대
한 판단이 필요함
 egovframework.rte.itil.* (연계 레이어)
- 연계 레이어 영역은 현장에서 CXF를 활용한 웹 서비스만
활용하고, 다른 기능 활용 사례 없음
- 라이브러리 유지 여부에 대한 판단이 필요함
 egovframework.rte.fdl.crypto (암호화)
- 테스트 코드 에러 발생, pom 파일 구조화 등 진행 중
 Sping3 New Feature 중 활용 범위 확정 필요
-> Spring Dependency가 너무 커지는 우려가 있음
- 업그레이드 타당성 확정 필요
[Migration to Spring Security3 by Peter Mularien]
* The addition of Spring Expression Language (SpEL) support for
access declarations
* Additional fine-grained configuration around authentication and
accessing successes and failures.
* Enhanced capabilities of method access declaration, including
annotationbased pre/post-invocation access checks
* Fine-grained management of session access and concurrency
control using the security namespace.
* Noteworthy revisions to the ACL module, with the removal of the
legacy ACL code in o.s.s.acl and some important issues with the
ACL framework are addressed.
* Support for OpenID Attribute Exchange, and other general
improvements to the robustness of OpenID.
* New Kerberos and SAML single sign-on support through the
Spring Security Extensions project.
Page l
8
IV. 표준프레임워크 업그레이드 방안
표준프레임워크 업그레이드를 위하여 Spring3.0.5기반의 필수 라이브러리 업그레이드를 수행하였고, 데이터베이스 및 보
안 영역은 마이너 업그레이드를 통해 기존 어플리케이션에 대한 호환성을 유지 하고자 함
Spring 3 업그레이드
공통라이브러리 업그레이드
 egovframework.rte.fdl.cmmn (공통라이브러리)
- spring-aop, spring-asm, spring-beans, spring-core,
spring-context, spring-expression, spring-context-support,
spring-jdbc, spring-tx, spring-tx, spring-orm, spring-test,
spring-web, spring-webmvc (2.5.6 -> 3.0.5.RELEASE)
- 기존 2.5.6에서 3.0.5.RELEASE로 업그레이드
 egovframework.rte.fdl.security (보안 – 인증,접근제어)
- spring-security-core, spring-security-acl, spring-securitytaglibs, spring-security-core-tiger (2.0.4 -> 2.0.6)
- 3.x 버전의 경우 class refactoring 등이 진행 되어, 하위 호
환이 어려움 (현재 2.x도 동시에 업그레이드 되었음)
 egovframework.rte.psl.dataaccess (데이터베이스)
- iBatis 2.3.4.726으로 업그레이드 (Spring 3.0.5.RELEASE에서
iBatis 3.0버전인 MyBatis를 지원하고 있지 않음)
 egovframework.rte.fdl.cmmn (공통라이브러리)
- junit 4.4 적용 시에 blockjunit4classrunner가 발생되고, 4.8.2
적용 시에 surefire plug-in과 문제 발생되어, 4.5를 적용
- log4j 1.3 drop되어 1.2.16 (2010.3.30일 현재 최종버전) 적용
 egovframework.rte.fdl.xml
- jdom 1.1, jaxen 1.1.1로 업그레이드
 현행유지
- egovframework.rte.fdl.excel 및 filehandling, idgnr, property,
string, crypto은 현행 유지 (버전만 변경)
- MyBatis에서 역으로 Spring 연동 라이브러리를 제공하고
있으나, Spring에서는 3.1지원 예정이었다가 연기 되었음
 egovframework.rte.fdl.mvc (화면처리)
- spring-web, spring-webmvc (2.5.6 -> 3.0.5.RELEASE)
Page l
9
V. 향후 계획
표준프레임워크 업그레이드는 필수 라이브러리 영역을 우선으로 오픈 커뮤니티 및 표준화위원회 검토를 통해 확정 예정
이며, 이후 선택 라이브러리 영역, 개발환경, 공통컴포넌트 업그레이드 진행 예정임
구분
항목
기간
 Dependency 영향도 분석(Spring3.0 등)
 라이브러리 업그레이드 및 테스트
 라이브러리 패키징
필수 라이브러리
(배포 영역)
2010.11.1~2010.12.31
 라이브러리 1차 배포 및 개정 버전 가이드
 오픈 커뮤니티 검토 (커미터 및 일반회원 대상 오픈 베타 운영)
 표준화위원회 개최 및 최종 확정
2011.1.1~2011.1.31
 라이브러리 정식 배포배포
 교육교재 및 교육용 LAB 수정
2011.2.1~2011.2.26
 라이브러리 업그레이드 확인 및 영향도 분석
선택 라이브러리
(가이드 영역)
 테스트 코드 수정 및 기존 코드 업그레이드 방안 작성
 egovframe 포탈 가이드 전체 영역 업데이트
2011.3.2~
(필수 라이브러리 영역 포함)
개발환경
공통컴포넌트
 Eclipse, CI 서버 등 오픈 소스 버전업
 DBIO, Codegen 등 plug-in 업데이트
 업그레이드 영향도 분석 및 소스 변경
2011.3.2~
2011.3.2~
Page l
10
V. 향후 계획
라이브러리 업그레이드 소스를 오픈 커뮤니티 SVN을 통해 공개하여 오픈베타를 진행하고, 토론 게시판을 활용하여 개선
사항, 건의사항에 대한 정보 교환 예정
프로젝트->실행환경->코드 check out
egovframework.rte.*  maven install
(nexus에 신규 라이브러리가 등록 되어
있지 않기 때문에 local repo.에 먼저 등록)
template, template-security 빌드, 실행
egovframe2에 라이브러리와 테스트 프로젝트 등록됨
[자유토론->표준화 토론 활용하여
의견, 건의사항 등록 부탁 드립니다]
Page l
11
실행환경 오픈 소스 SW
레이어
화면처리
업무처리
데이터처리
연계통합
서비스 명
오픈소스 SW
확장 및 개발
Ajax Support
Ajax Tags 1.5
Internationalization
Spring 2.5
MVC
Spring 2.5
Security
Apache Commons Validator 1.3
UI Adaptor
선정하지 않음
Process Control
Web Flow 2.0
Exception Handling
Spring 2.5
Exception 기능 확장
Data Access
iBatis SQL Maps 2.3
Spring-iBatis 기능 확장
DataSource
Spring 2.5
ORM
Hibernate 3.2
Transaction
Spring 2.5
Naming Service Support
Spring 2.5
Integration Service
선정하지 않음
표준 인터페이스 처리 기능 개발
Web Service Interface
Apache CXF 2.2
표준 인터페이스를 준수하도록 웹서
비스를 확장
Custom Tag 외 기능 확장
UI Adaptor 연동 가이드
Page l
12
실행환경 오픈 소스 SW
레이어
공통기반
(이어짐)
서비스 명
오픈소스 SW
확장 및 개발
AOP
Spring 2.5
Cache
EHCache 1.6
Compress/Decompress
Apache Commons Compress 1.0
Encryption/Decryption
Java simplified encryption (jasypt)
1.5
암호화 기능 확장
Excel
Apache POI 3.0
Excel 기능 확장
File Handling
Jakarta Commons VFS 1.0
File Access 기능 확장
File Upload/Download
Apache Commons FileUpload 1.2
FTP
Apache Commons Net 2.0
ID Generation
선정하지 않음
IoC Container
Spring 2.5
Logging
Log4j 1.3
Mail
Apache Commons Email 1.1
Marshalling/
Unmarshalling
Castor 1.2
Apache XML Beans 2.4
UUID 생성 기능 개발
Page l
13
실행환경 오픈 소스 SW
레이어
공통기반
(계속)
서비스 명
오픈소스 SW
확장 및 개발
Object Pooling
Apache Commons Pool 1.4
Property
Spring 2.5
Resource
Spring 2.5
Scheduling
Quartz 1.6
Server Security
Spring Security 2.0
인증, 권한 관리 기능 확장
String Util
Jakarta Regexp 1.5
문자열 처리 기능 확장
XML Manipulation
Apache Xerces2 2.9
JDOM 1.0
XML 처리 기능 확장
Property 기능 확장
Page l
14
[화면]
(중략)
[형상관리 디렉터리 구조]
[현재 POM.XML]
[개선 POM.XML]
Page l
15