실행환경 아키텍쳐 구성(2.5)

2013. 8. 6. 09:25Java/Spring Framework

http://www.egovframe.go.kr/EgovEnvRun.jsp?menu=1&submenu=3&leftsub=1

무엇보다도 개념을 잡기위해서 해당 링크를 정리 해봤다.

 

 

 

 

1.     실행환경 아키텍쳐 구성(2.5)

 

A.     실행환경 경량화
하나의 파일로 일괄 배포 및 설치되던 실행환경을 필수적 부분과 선택적 부분으로 나누어 배포하여 각 사업에 적합한 최적의 실행환경을 구성

B.      실행환경 사용시 필수적인 서비스들과 타 서비스의 의존성이 높은 서비스들을 핵심 계층으로 제공

C.     실행환경 사용에 필수적이지 않는 서비스들은 선택 계층으로 분류 각 사업에서 선택적으로 설치할 수 있도록 제공

D.     핵심서비스는 기본적으로 설치 되며 이외 각 사업에서 필요한 서비스는 개발환경에서 선택적으로 설치 가능

E.      오픈 소스 업그레이드 : 실행환경 오픈 소스 업그레이드는 최신 버전 반영과 함께 표준 프레임워크 1.0 호환성을 최대한으로 검토 및 진행

                         i.         Core : Spring Framework (3.0.5)

                        ii.         Server Security : Spring Security(2.0.4)

                       iii.         Ajax Support : Ajax Tags(1.5.5)

                       iv.         Data Access : iBatis SQL Maps (2.3.4)

                        v.         ORM : Hibernate (3.4)

                       vi.         CaChe : EHCache (2.3.4)

                      vii.         Scheduling : Quatz(1.8.5)

                     viii.         Compress : Common Compress (1.1.)

                       ix.         Mail : Common Mail (1.2)

                        x.         XML Manipulation : Xerces 2(2.10.1) / JDOM (1.1.1)

                       xi.         FTP: Commons Net (3.0.1)

                      xii.         Process Control : Spring Web Flow (2.0.5)

                     xiii.         Excel : jXLS (0.9.9)

                     xiv.         Object Pooling : Common Pool (1.5.6)

F.      실행환경의 핵심인 스프링 버전 업그레이드에 따른 추가된 기능

                         i.         Restful 웹서비스 : REST 요청 및 응답을 프레임워크에서 처리할 수 있도록 지원

                        ii.         SPeL : Spring Expression Language 를 이용하여 화면상에서 Java 문법을 활용한 출력 형식 지정을 할수 있도록 지원

                       iii.         선언적 Validation : JSR-303 규격에 의한 bean 의 검증을 자동적으로 수행할 수 있도록 지원

                       iv.         표준 프레임워크 1.0 과 호환성을 위해 ibatis spring security 는 기존 버전을 유지

 

2.     구성

 

A.     전자정부 프레임워크 실행환경은 5개 서비스 그룹으로 구성되며, 34개의 서비스를 제공합니다.

3.     화면처리


화면처리 서비스 그룹은 업무처리 서비스와 사용자간의 인터페이스를 담당하는 서비스로 사용자 화면 구성 및 사용자 입력 정보 검증 등의 기능을 지원합니다.

                         i.         Ajax Support
Ajax
는 대화식 웹 어플리케이션의 제작을 위해 HTML CSS, DOM, Javascript, XML , XSLT 등과 같은 조합을 이용하는 웹 개발 기법으로 Ajax 기능 지원을 위한 Custom Tag Library를 제공

                        ii.         Internationalization
Internationalization
은 다양한 지역과 언어 환경을 지원할 수 있는 서비스로 , 서버 설정 및 클라이언트 브라우저 환경에 따라 자동화 된 다국어 기능을 제공

                       iii.         MVC
MVC
디자인 패턴을 적용하여 사용자 화면을 개발할 수 있도록 MVC 기반 구조를 제공

                       iv.         Security
웹 응용프로그램 작성 시 발생할 수 있는 웹 보안상의 취약점(XSS, SQL Injection )에 대응하기 위한 기능을 제공

                        v.         UI Adapter
화면 레이어의 구현 방식에 따라 업무로직 레이어가 변경되는 것을 막기 위해서, 업무처리 Layer에서 사용할 데이터 타입을 정의하고, 화면 레이어에서 사용하는 in/out parameter를 해당 구현 방식에 맞게 변환해 주는 기능 제공

4.     모바일 화면 처리


모바일 화면처리 서비스는 모바일 디바이스에 최적화 된 모바일 웹의 사용성과 편의성 증대를 위한 사용자 경험 기능을 제공합니다.

A.     모바일 UX 컴포넌트(15)
Panel, Label/Text , Tabs, Form, Grid, Table/List , Icon , Button, Menu , Dialog, Date/Time Picker, Check/Radio, Selector/Switch , Internal/External Link , Processing Dialog/Bar

                         i.         Button
형태 : 둥근, 사각(2)
색상 : 검정,파랑,회색,흰색,노랑,빨강,초록(7
)
크기 : 가로 - 넓이에 맞춰서 제공, 세로 - normal & small

                        ii.         Panel
색상 : 검정,파랑,회색,흰색,노랑,빨강,초록(7)
Internal/External Link
Link(5
) : Link Internal, Link external, Email, Phone links, Error page

                       iii.         Label/Text
색상, 크기, 정렬, 폰트 지정

                       iv.         Tabs
모양 : Normal tab, Round tab(2)

                        v.         Form
요소 : Text, search inputs, Slider, form
색상 : 검정, 파랑, 회색, 흰색, 노랑, 빨강, 초록(7)

                       vi.         Menu
효과 : slide, slideup, slidedown, pop, fade, flip, turn, flow, slidefade(9)
형태 : Dialog, Grid, List, Collapsible(4)

                      vii.         Processing Dialog/Bar
Processing Dialog(1
)
Processing Bar(1
)

                     viii.         Dialog
형태 : Action, Sheet, Overlay, Alert, Prompt, Comfirm(5)
색상 : 검정, 파랑, 회색, 흰색, 노랑, 빨강, 초록(7)

                       ix.         Grid View
1/2, 1/3, 1/4, 1/5 Grid View
가변 Grid View

                        x.         Table/List View
Numbered list, Thumbnalis, Count bubble, Icon List, Split button list, Change Mode List

                       xi.         Date/Time Picker
Android/Popup/Flip Date Picker, Android(12/24h)/Flip Time Picker

                      xii.         Check/Radio
형태, 효과 : Normal, Group

                     xiii.         Icon
형태,색상 : 모영 별, 색상 별 아이콘 지원

                     xiv.         Selector/Switches
모양 : Normal, Group
효과 : 선택 색상 변경 효과, 팝업 효과 등

 

5.     업무 처리


업무처리 서비스는 업무 프로그램의 업무 로직을 담당하는 서비스로 업무 흐름제어, 트렌잭션 관리, 에러 처리 등의 기능을 제공합니다.

A.     Process Control
비즈니스 로직과 업무 흐름의 분리를 지원하며, XML 등의 외부 설정으로 업무흐름 구성을 제공하고, 미리 정의된 프로세스를 실행하는 기능을 제공

B.      Exception Handling
응용 프로그래밍의 수행과정에서 발생하는 예외 사항을 처리하기 위해 표준화된 방법을 제공

 

6.     데이터 처리


데이터처리 서비스는 업무 프로그램에서 사용할 수 있도록 데이터에 대한 CRUD 기능을 제공합니다.

A.     Data Access
다양한 데이터베이스 솔루션 및 데이터베이스 접근 기술에 대한 추상화된 접근 방식을 제공하여 업무 로직과 데이터 베이스 솔루션 및 접근 기술 간의 종족성을 배제하기 위한 기능을 제공

B.      Data Source
다양한 방식의 데이터베이스 연결을 제공하고, 이에 대한 추상화 계층을 제공함으로써, 업무 로직과 데이터베이스 연결 방식 간의 종족성을 배제하기 위한 기능을 제공

C.     ORM
객체 모델과 관계형 데이터베이스 간의 매핑 기능인 ORM(Object-Relational Mapping) 기능을 제공함으로써, SQL이 아닌 객체를 이용한 업무 로직의 작성이 가능하도록 지원

D.     Transaction
Database Transaction
를 처리하기 위한 서비스로서, Transaction 처리에 대한 추상화된 방법을 제공하여 일관성 있는 프로그래밍 모델을 제공

 

7.     배치처리


배치처리 서비스는 일괄 데이터 처리를 위한 설정 및 실행 기능을 제공합니다.

A.     Job Configuration : 배치 Job 설정 기능 제공

B.      Step Configuration : 배치 Step 설정 기능 제공

C.     itemReader/itemWriter : 리소스 유형에 따른 File/DB 처리 기능 제공

D.     Job Execution : Job Instance 의 수행 기능 제공

E.      Step Execution  : Step Instance 의 수행 기능 제공

F.      Tasklet : Job의 실행 중 배치 작업 외 단순처리가 필요한 작업(파일이동 등) 의 처리기능을 제공

G.     Job Repository : JobExecution, StepExecution 정보를 저장

H.     Job Runner : Scheduler, CommandLine (CronTab) , Http/WebService 방식 지원 인터페이스 제공

I.       Job Launcher : Job Repository 및 실행 방법 설정 기능 제공

J.       History Management : Job repository 와 이력관리 기능 제공

K.     Scalability : Partitioning 기능 제공

L.      Sync / Async Processing : JobLuncher 설정을 통한 동기/비동기 처리 기능 제공

M.    Parallel Processing : Job 설정을 사용하여 병렬처리 기능 제공

N.     Pre/Post Processing : Listener 를 사용한 전처리/후처리 Event Handling 기능 제공

O.     Skip/Repeat/Retry : 건너뛰기 , 반복, 재시도 기능 제공

 

8.     연계 통합


연계 통합 레이어는 타 시스템의 연동 기능을 지원합니다.

A.     Naming Service
원격에 있는 모듈 및 자원 등을 찾아주는 기능을 제공

B.      Web Service
연계 등을 위하여 업무 서비스를 웹서비스의 형태로 어플리케이션 외부에 노출시켜 타 시스템이나 어플리케이션에서 서비스를 이용할 수 있도록 하는 기능을 제공

C.     Integration Service (Integration : 통합)
전자정부 시스템과의 연계를 위한 공통 인터페이스를 제공하여, 다양한 솔루션 연계 방식에 대한 표준 처리 방식을 제공

 

9.     공통 기반


공통 기반 서비스는 실행환경 서비스 간에 공통적으로 사용되는 기능을 제공합니다.

A.     AOP
관점지향 프로그래밍(Aspect Oriented Programming, AOP) 사상을 구현하고 지원

B.      Cache
빈번히 사용되는 컨텐츠에 대한 빠른 접근을 가능하게 하는 기능으로 잦은 접근을 통한 오버헤드나 시간을 단축시키는 역할을 함.

C.     Compress/Decompress
데이터를 압축 및 복원하는 기능을 제공한다.
데이터를 효율적으로 저장 및 전송하기 위해 원본 데이터를 압축하거나 압축된 데이터를 복원하여 원본 데이터를 구하는데 사용 될 수 있음.

D.     Encryption/Decryption
데이터에 대한 암호화 및 복호화 기능을 제공하며, 네트워크를 통한 데이터 송수신을 시 보안을 목적으로 사용될수 있음.

E.      Excel
엑셀 파일 포멧을 다룰수 있는 자바 라이브러리를 제공

F.      File handling
File
생성 및 접근, 변경을 위해 File Access 할 수 있는 기능을 제공

G.     File Upload/Download
화면 처리 서비스 그룹에서 사용되며, 파일을 업로드 및 다운로드 하기 위한 기능을 제공

H.     FTP
File Transfer protocol
을 이용하여 데이터을 주고 받기 위한 FTP Client 기능을 제공

I.       ID Generation
UUID(Univeral Unique Identifier)
표준에 따라 시스템에서 사용되는 ID(Identifier) 를 생성하는 기능을 제공

J.       IoC Container
프레임워크의 기본 기능인 IoC(Inversion of Control , inversion:도치,반전) 컨테이너 기능을 제공.

K.     Logging
System.out.println
문을 사용한 오버헤드를 줄이고, 간편한 설정을 통해 로그를 저장하고 통제할수 있는 기능을 제공

L.      Mail
SMTP
표준을 준수하며 이메일을 송신할 수 있도록 이메일 클라이언트 기능을 제공

M.    Marshalling / Unmarshalling
객체를 특정 데이터 형식으로 변환하고, 반대로 특정 데이터 형식으로 작성된 데이터를 객체로 변환하는 기능을 제공

N.     Object Pooling
Pool
에 사용 가능한 객체가 있을 경우 객체를 할당 받거나, 없을 경우 Pool 크기에 따라 새로운 객체 생성 및 할당하는 기능을 제공

O.     Property
외부 파일이나 환경 정보를 구성하는 키와 값의 쌍을 내부적으로 저장하고 있으며, 어플리케이션이 특정 키에 대한 값에 접근할 수 있도록 기능을 제공

P.      Resource
Internationalization(
국제화) localization(현지화)를 지원하기 위한 기능으로, 키값을 이용하여 국가 및 언어에 해당하는 메시지를 읽어 오는 기능 제공

Q.     Scheduling
어플리케이션 서버 내에서 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 기능으로서, 유닉스의 크론(Cron) 명령어와 유사한 기능을 제공

R.     Server Security
서버 함수 및 데이터 접근 시 보안 관리를 위해 사용자 인증 및 권한 관리 기능을 제공

S.      String Util
문자열을 다루기 위한 다양한 기능을 제공

T.      XML Manipulation (Manipulation , 조정하다, 다루다)
XML
을 생성하고, 읽고 , 쓰기 위한 기능을 제공

 

10.  실행환경 오픈소스 현황


표준 프레임워크 실행환경의 서비스는 오픈소스 소프트웨어에 기반하여 재활용하거나 확장하여 제공됩니다.
일부 서비스는 선정 기준을 만족하는 오픈소스 소프트웨어가 선정되지 않았으며 자체 구현하였습니다
.

서비스
그룹

서비스

오픈소스
소프트웨어

실행환경 확장
및 자체 개발

비고

화면처리

Ajax Support

Ajax Tags 1.5

 

 

Internationalization

Apache Commons i18n

 

 

MVC

Spring MVC 3.0.5

Custom Tag 외 기능 확장

 

Security

Apache Commons Validator 1.3.1

 

 

UI Adaptor

선정되지 않음

 

UI Adaptor
연동 매뉴얼 제공

업무처리

Process Control

Spring Web Flow 2.0

 

 

Exception Handling

Spring 3.0.5

Exception 기능 확장

 

데이터처리

Data Access

iBatis SQL Maps 2.3

Spring-iBatis 기능 확장

 

DataSource

Spring 3.0.5

 

 

ORM

Hibernate 3.4

 

 

Transaction

Spring 3.0.5

 

 

연계통합

Naming Service Support

Spring 3.0.5

 

 

배치처리

Batch Core

Spring Batch 2.1.8

Configuration 외 기능 확장 및 데이터 처리 성능 향상

 

Integration Service

선정되지 않음

표준 인터페이스 처리 기능 개발

 

 

Web Service Interface

Apache CXF 2.3.3

Intergration Service 연계 기능 확장

 

 

공통기반

AOP

Spring 3.0.5

 

 

Cache

EHCache 2.4.1

 

 

Compress/Decompress

Apache Commons Compress 1.1

 

 

Encryption/Decryption

Java simplified encryption (jasypt) 1.7

암호화 기능 확장

 

Excel

Apache POI 3.2, jXLS 0.9.9

Excel 기능 확장

 

File Handling

Jakarta Commons VFS 1.0

File Access 기능 확장

 

File Upload/Download

Apache Commons FileUpload 1.2.2

 

 

FTP

Apache Commons Net 3.0.1

 

 

ID Generation

선정되지 않음

시스템 고유 ID 생성 기능 개발

 

IoC Container

Spring 3.0.5

 

 

Logging

Log4j 1.3

 

 

Mail

Apache Commons Email 1.1

 

 

Marshalling/Unmarshalling

Castor 1.2 Apache XML Beans 2.4

 

 

Object Pooling

Apache Commons Pool 1.5.6

 

 

Property

Spring 3.0.5

Property 기능 확장

 

Resource

Spring 3.0.5

 

 

Scheduling

Quartz 1.8.5

 

 

Server Security

Spring Security 2.0.4

인증, 권한 관리 기능 확장

 

String Util

Jakarta Regexp 1.5

문자열 처리 기능 확장

 

XML Manipulation

Apache Xerces2 2.9, JDOM 1.1

XML 처리 기능 확장

 

모바일 화면처리

모바일 UX 컴포넌트

jQuery Mobile

 

 

11.  이전 버전의 아키텍처 구성
eGovFramework.2.5.0
eGovFramework 1.0.0


 

 

*Marshalling
마샬링과 언마샬링에 대한 개념은 RPC(Remote Procedure Call) 에서 나온것으로 추축된다.
하드웨어, 운영체제, 프로그래밍 언어가 서로 다른 프로시저 간의 원격 호출을 위해 호출을 위한 정보(프로시저 이름, 파라미터 리스트, 그리고 호출을 위한 추가 정보 등과 같은)는 모두가 이해할 수 있는 스트림으로 변환해야 한다
.
이 변환된 스트림을 CDR(Common Data Representation)이라 하며 요즘 프로토콜은 XML을 이용하는 것이 대세다
.

CDR
을 만드는 작업은 여러가지 이슈를 포함한다
.
모두가 이해할 수 있는 데이터 타입을 정의하는 것과 바이트 순서(byte order: 프로세스가 다루는 바이트의 순서를 의미한다. 가령 Big Endian IBM 370 컴퓨터와 대부분의 RISC 기반의 프로세스나 모토롤라 프로세스들이며 이진 코드들을 순서적인 메모리로 할당한다. 반면 little Endian 은 인텔 프로세서나 DEC 의 알파 프로세스들이며 대부분 2 byte 를 기준으로 앞뒤를 바꿔서 표현하며 CPU 가 한번에 처리하는 용량에 준한다.) 를 호환시키는 것, 시스템마다 다르게 다루는 데이터 타입의 길이의 표준을 정하는 것등이 그것이다
.
이렇게 객체들을 CDR 로 변환하는 작업을 마샬링이라 하며, 역으로 CDR 을 프로시저가 이해할 수 있는 객체로 변환하는 작업을 언 마샬링이라고 한다.