전자정부 표준프레임워크(eGovFrame) 소개(1)
Updated:
1. 프레임워크 개요
프레임워크를 직역하여 해석하면 제공받은 일정한 요소와 틀 규약을 가지고 무언가를 만드는 일 입니다. 이를 IT에 접목시키면 특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램 으로 Spring, Django, Ruby on Rails 등이 이에 속하며, 어플리케이션 틀과 구조를 프레임워크에서 제어하고, 프레임워크 위에서 개발자의 코드가 동작을 합니다.
그럼, 우리가 흔히 이야기하는 라이브러리는 뭘까요? 라이브러리는 소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구의 모음 이며, Java에서 Apache Common Library, C#에서는 STL 등이 이에 속합니다. (개발자 코드 안에서만 재사용됨)
정리하면, 프레임워크와 라이브러리는 프로그램을 쉽게 만들수 있게 하는 공통된 목적이 있지만 프레임워크는 정해진 규약을 지켜야하고 라이브러리는 정해진 규약이 없는 차이점이 있습니다.
2. 전자정부 프레임워크 란?
정확한 명칭은 전자정부 표준프레임워크(eGovFrame)이며, 행정안전부 산하기관인 한국정보화진흥원에서 만든 웹 기반 어플리케이션 프레임워크 입니다. 정부 및 공공기관, 공기업 등의 웹사이트에서 자주 쓰이는 공통 기능들을 Java의 Spring 프레임워크와 라이브러리(MyBatis, Jackson, Apache Common 등)를 가지고 미리 만들어 놓은 공통 컴포넌트와 이를 개발하는 개발환경, 실행환경, 운영환경, 관리환경으로 구성되어 있습니다. 즉, 대한민국 공공 부분 정보화 사업시 플랫폼별 표준화된 개발 프레임워크이며, Java 기반의 정보시스템 구축에 활용할 수 있는 개발, 운영 표준 환경을 제공합니다.
등장 배경
소프트웨어 패러다임은 변화하는 시대적 요구에 맞추어 빠르게 변화하여 왔고, 궁극적으로 그 변화의 방향은 재사용성 극대화 에 맞춰 등장을 하게 되었습니다.
특징
다음과 같이 크게 6가지의 특징이 있습니다.
- 국가적 표준화 지향: 민/관/학계로 구성된 자문협의회를 통해 국가적 차원의 표준화 수행
- 변화 유연성: 각 서비스의 모듈화로 교체가 용이하며 인터페이스 기반 연동으로 모듈간 변경 영향 최소화
- 편리하고 다양한 환경 제공: Eclipse 기반의 모델링(UML,ERD), 에디팅, 컴파일링, 디버깅환경 제공
- 개방형 표준 준수: 오픈소스 기반의 범용화되고 공개된 기술의 활용으로 특정 사업자에 대한 종속성 배제
- 상용 솔루션 연계: 상용 솔루션 연계가 가능한 표준으로 제시하여 상호운용성 보장
- 모바일 환경 지원: 모바일 웹(UX/UI) 및 하이브리드 앱 지원
표준프레임워크 기반 템플릿 프로그램을 통해 개발자는 오직 비즈니스 로직 개발에만 전념하여 개발 생산성이 향상되고, 템플릿 기반의 개발 표준화를 통한 품질보장 및 위험요소를 극소화 합니다. 또한 개발 및 운영 용이성 제공과 시스템 복잡도 감소, 재사용성 확대 등의 장점이 있습니다.
왜 이것을 사용할까?
먼저 이 전자정부프레임워크를 주로 사용하는 발주처가 정부기관이며 이러한 프로젝트를 수주하는 사업에는 필수 요구사항이라는게 있습니다. 주로 수주를 할때 해당 발주처에서 필요한 하드웨어는 어떠한 것을 사용하며 소프트웨어는 어떤걸 쓰겠다 라는 것이 다 기술 되어있습니다. 그래서 이러한 문서인 사업제안서는 이 요구사항을 기반으로 작성되어 있습니다.
전자정부프레임워크를 ‘왜 사용하나요?’ 라는 질문을 하면 고객이 요구했기 때문에 라고 답하는게 제일 정확한 답변입니다. 고객이 원하는 대로 시스템 및 프로그램을 개발해주는 것이 기본이기 때문 입니다.
그런데 고객이 왜 그걸 원하느냐 라는 의문이 여기서 발생합니다. Spring을 사용해보신분들은 아시겠지만 Spring의 장점은 확장성이 뛰어나며 JAVA로 이루어져 있습니다. 그런데 그 뛰어난 범용성과 확장성 만큼 플러그인들끼리의 층돌로 인한 오동작이 있을 수 있기에 개인 또는 프로젝트를 수주받은 개발사에서 플러그인을 자기들 편하대로 사용을 한다면 해당 웹사이트에는 어떤 코드가 들어 있는지 알 수가 없는 신뢰 할 수 없는 코드가 됩니다. 그렇기에 전자정부프레임워크 처럼 이런 프레임워크를 신뢰할 수 있고 책임질 수 있는 개인이나 단체가 한가지 형태로 통합해서 그걸 패키지로 배포하는 경우는 개인이나 개발사에서 중구난방으로 플러그인을 적용하고 이것저것 추가 하는 것 보다는 적어도 정상적으로 프로그램이 작동 됨과 동시에 코드에 문제가 없음을 알리는 신뢰성이 있는 즉, 검증된 코드가 됩니다. 마찬가지로 이러한 프레임워크를 관리를 하는 곳이 존재 하니 문제가 생기면 기술지원도 받을 수 있다는 것이 장점입니다.
하나의 공통된 프레임워크를 사용하면 특정 개발사에 종속되지 않고 여러 곳의 개발사에 그때그때 조건에 따라 발주가 가능하며 개발 했던 개발사가 유지보수를 하지 않더라도 다른 개발사에서 이어받아서 유지보수가 가능하게 됩니다. 즉, 정부기관에서 관리하는 검증된 오픈 소스로 구성된 무료 프레임워크 라는 점이 강점입니다.
실행 환경
표준프레임워크는 화면처리, 업무처리, 데이터처리, 연계처리, 공통기반, 배치처리 등 6개 레이어로 실행 환경을 구현 합니다.
3. eGov Framework vs Spring Framework
전자정부프레임워크가 스프링을 기반으로 만들어졌기 때문에 두 프레임워크가 같은 것으로 취급하기도 하는데 eGov에서 제공하고 있는 표준프레임워크 적용 가이드를 보면 둘의 차이점이 존재 합니다.
먼저, Spring Framework에 대해 짚고 가면 스프링은 java를 활용하여 프로젝트 시작시 뼈대를 제공해 줍니다. 이때 뼈대는 누구나 사용할 법한 것을 의미하며, 스프링의 뼈대를 이용하여 배민에서 쓰면서 배민만의 고유한 기능을 넣어서 이름을 붙히면 배민프레임워크가 되고, 네이버에서 쓰면서 네이버만의 고유한 기능을 넣어서 이름을 붙이면 네이버프레임워크가 된다고 볼수 있습니다.
이것처럼 전자정부프레임워크는 대한민국 정부에서 정부의 프로젝트들을 미리 Spring + 알파(Alpha: 기타 플러그인, 컴포넌트 등) 로 가공한 형태로 제공한 것으로 정리하면 스프링 기반의 대한민국 정부에서 만들어놓은 일종의 2차 가공 프레임워크가 되는 것입니다.
Spring Frmaework와 달리 전자정부 표준프레임워크를 사용하기 위해서는 DAO단에서 전자정부프레임워크에서 만들어 둔 DAO를 꼭 extends하여 구현해야 하며, 이게 적용되지 않으면 전자정부프레임워크 요건에 어긋나서 전자정부표준프레임워크 라고 할수 없는 것 입니다.
표준 프레임워크 적용 가이드에 명시된 둘의 차이점을 정리하면,
- /WEB-INF/lib 폴더 아래에 egovframework.rte로 시작하는 .jar파일 존재 여부
- import egovframework.rt 라는 구문이 검색되는 소스 코드가 있는지 확인
- MyBatis 나 iBatis를 사용한다면 DAO 클래스(@Repository)는 EgovAbstractDAO(iBatis) 또는 EgovAbstractMapper(MyBatis)를 상속하는 구문이 존재하는지 확인
- JPA 등의 ORM을 사용한다면 DAO에서 SessionFactory 또는 EntityManagerFactory 설정을 통해 HibernateTemplate/JpaTemplate를 활용하거나, HibernateDaoSupport/JpaDaoSupport를 상속하여 활용 등으로 볼수 있습니다.
이번 포스팅에서는 프레임워크와 라이브러리의 차이점 및 전자정부 표준프레임워크란 무엇이고, 주요 특징과 기본적인 실행환경은 어떻게 되는지와 마지막으로 전자정부 프레임워크와 스프링 프레임워크의 차이점에 대해서 알아 보았습니다.
다음에는 전자정부 프레임워크(eGovFrame)의 구성과 환경에 대해서 좀더 자세하게 알아 보도록 하겠습니다.