Front-end
- 화면 구성 및 재사용성
- Views
- Router 사용 여부, URL에 따라 업무별 페이지 분류
- Page ↔ API URL 일치성 여부 + 오류 추적 가능
- Components
- 한번 만든 구성요소는 화면에 관계없이 재사용 가능한지
- Modal, Popup 인자 전달
- Store, Session, Cookie 등 사용 여부
ex) 사용자 정보, 지점 정보, 권한 정보 등 전역에 걸쳐 유지되어야 할 부분들.
- Views
- axios, ajax 비동기 요청, 응답
- 페이지 새로고침 없이 데이터 요청 및 응답 가능 여부
- 기능 사용자화 가능 여부
- chart, Grid 등
- 대용량 파일 업로드
Back-end
프레임워크 기본
프로젝트 구조)
-
부모)코어 프로젝트 → 자식)모듈 프로젝트 구조
-
추상화 구조 적용 여부(전자정부 프레임워크 기준)
-
전자정부 프레임워크를 사용했다는 기준
eGovframework의 아키텍처는 크게 3개의 layer로 구성되어있다.-
Presentation Layer - Controller 단
-
Business Layer - Service 단
-
Data Access Layer - Dao or Mapper 단
각 클래스별 전자정부 표준 프레임워크 아키텍처 적용 규칙은
우선 Annotation 기반 Spring MVC를 준수해야 한다.
Controller class
Class 상단에 @Controller annotation 선언해야 함.
ServiceImpl class
Class 상단에 @Service annotation 선언 또한 AbstractServiceImpl 또는 EgovAbstractServiceImpl을 상속해야 하고 업무에 대한 특정 Service 인터페이스를 구현해야 한다.
DAO/Mapper class
DAO Class의 경우 @Repository annotation 선언 Mybatis Mapper Interface 방식을 이용하는 경우에는 @Mapper annotation을 선언해야 한다. 또한 EgovAbstractDAO(ibatis) 또는 EgocAbstractMapper(Mybatis)를 상속해야 한다.
둘째로 데이터 처리 부분은 iBatis 또는 MyBatis를 활용해야한다.MyBatis 사용시 SqlSessionDaoSupport를 상속한 EgovAbstractMapper 활용해야한다.
※ MyBatis의 경우 Mapper interface 방식으로 사용 가능(권장) 하며, 이 경우는 interface 상에 @Mapper를 지정하여 사용되어야 한다.
운영서버(WAS)의 웹어플리케이션 루트 디렉토리/WEB-INF/lib/ 폴더에 egovframework.rte로 시작하는 .jar 파일이 존재해야 하며 실제 소스코드에서 위의 .jar파일이 활용되고 있어야 한다. 예(import egovframework.rte)
표준프레임워크 실행환경 준수 : 표준프레임워크 실행환경은 적극적으로 활용되어야 함 (실행환경 부분 임의 변경 금지)
확장 규칙 : 업무 클래스는 egovframework.rte 패키지 내에 정의될 수 없음
이외에 개발 환경, 운영환경 및 공통 컴포넌트 부분은 선택적으로 적용 가능하며, 임의 변경 및 확장 가능함
UI 부분에 RIA(Rich Internet Appliation)가 적용되는 경우는 UI Adaptor 또는 RESTful 방식을 적용 활용해야 함
- iBatis 사용시 SqlMapClientDaoSupport를 상속한 EgovAbstractDAO 활용해야하며
-
상세 내용
-
MVC 패턴을 준수하고(Controller에서 DAO를 호출하는 행위 없이)
-
ServiceImpl
- AbstractServiceImpl 또는 EgovAbstractServiceImpl(3.0버전 이상)을 상속/확장하고, 업무에 대한 특정
- Service 인터페이스를 구현하여야 함
-
DAO(Data Access Object)/Mapper 클래스
- EgovAbstractDAO(iBatis) 또는 EgovAbstractMapper(MyBatis)를 상속/확장하여야 함
- MyBatis Mapper Interface 방식의 경우, @Mapper 선언
- Hibernate/JPA 혹은 Spring Data JPA 방식의 경우, 정해진 규칙 없음
세부 질문
-
특정 라이브러리, 예를 들어 Validator를 apache commons validator -> hibernate validator로 변경하여 적용해도 적용기준을 충족했다 할 수 있는가?
-
전자정부 프레임워크 외 artifact를 import하는 과정에서 추이 의존성에 의해 전자정부 프레임워크에 포함된 artifact의 version이 높아지는 경우에도 적용기준을 충족했다 할 수 있는가?
-
Spring framework의 버전이 제공되는 버전 이상으로 올라가는 경우에도 적용기준을 충족했다 할 수 있는가?
-
-
-
서버 추가 및 확장
필수)
-
On-Premise 서버 1대당 동시 처리 가능 Client 수
-
서버 확장 방법 제시
- ex) 로드 밸런싱,
-
서버 요청 분할
검토) Nginx / Apache Web Proxy Server
요청 URI 에 따른 서비스 분리
우대)
- 서버 통합 관리, 운영 모니터링 Tool 제공 혹은 제시
- 향후 MSA 구성을 위한 서버간 API (HTTP 표준) 통신 방법 제시
SCM, 배포
필수)
- 소스 배포 및 Runtime 서버 적용시
- 결재 프로세스
- 자동 배포 방법 제시
- 메일, Push 알림 기능
- Gitlab ↔ Docker 연결 (GitLab 배포시 Docker 연계 배포)
우대)
- Docker 배포 시나리오 방법 제시
- 현재 단일 서버 구축으로 알고 있는데, 제안서에는 여러 서버에 배포하는 시나리오가 있음.
- 서버 시작, 종료, 재부팅
- 스케줄링
- 원격 제어
DB
필수)
- 기존 SQL Package, Procedure → WAS 실행 여부
- Mybatis 기반 → 배포된 후에도 SQL 오류 발생 가능성 있음. (SQL 오류는 컴파일 단계에서 확인 불가)
우대)
- 배포 전 SQL 오류 검증 방법 제시
- 양방향 대용량 파일 처리 (엑셀 파일 ↔ DB)
요청사항)
- Table 별 id 컬럼 필수 포함
Transaction
필수)
- Join 등 복잡한 SQL 처리 방법 제시
- 1개 메소드 내 여러 메소드 호출시 Rollback, Commit 일괄 적용 및 @Transactional
ex) 1개 프로시저 내 여러 테이블에 대한 수정, 삽입시 Rollback, Commit 일괄 적용
우대)
- 조회시 Commit read 설정 등 조회 옵션 설정
- MSA
REST API
필수)
- URI는 정보의 자원을 표현해야 한다.
- 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.
우대)
- 데이터 서버 분리 가능?
- API 방식 기반으로 웹 페이지가 아닌 앱, 윈도우 프로그램 등 기타 플랫폼에서 사용하기 위함.
- Framework 기능 점검표 (3) URI 에 따라 자원 요소의 CRUD Http 기본 메소드 사용 가능?
'IT' 카테고리의 다른 글
Docker #1 (0) | 2021.02.28 |
---|---|
전자정부 프레임워크 도입 기준 #2 (0) | 2021.01.13 |
Vue CLI 3 삽질... (0) | 2020.12.31 |
구글 서버 에러 (0) | 2020.12.14 |
프로그래밍의 시작은 (0) | 2020.08.25 |