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