2. 🏗️ 시스템 아키텍처
2.1 전체 아키텍처 개요
홍익인간CMS는 전자정부프레임워크를 기반으로 한 표준 웹 애플리케이션 아키텍처를 따르고 있습니다. 전체 시스템은 프레젠테이션 계층, 비즈니스 계층, 데이터 액세스 계층으로 구성되어 있으며, 각 계층은 명확히 분리되어 있습니다.
시스템 계층 구조
(JSP, Tiles, HTML, CSS, JS)
(Spring Service, AOP, Security)
(MyBatis, JDBC, Transaction)
(CUBRID, Oracle, MySQL, etc.)
2.1.1 전자정부 프레임워크 4.2 기반 구조
홍익인간CMS는 전자정부프레임워크 4.2 버전을 기반으로 하며, 다음과 같은 주요 컴포넌트를 활용합니다:
- 실행환경 레이어: 표준 프레임워크 실행환경의 MVC, 데이터 처리, 보안 등의 기능 활용
- 공통 컴포넌트: 전자정부 공통 컴포넌트 중 필요한 기능 활용
- 개발환경: 전자정부 개발환경 도구를 활용한 개발 지원
| 구분 | 내용 |
|---|---|
| 기반 기술 | Spring Framework 5.3.27, Spring Boot 2.7.12 |
| 주요 변경사항 | Java 8 이상 지원, Spring Security 5.8.3 적용, Spring Batch 4.3.8 적용 |
| 개선 사항 | 보안 취약점 개선, 성능 최적화, 표준 준수 강화 |
2.1.2 Spring Framework 5.3.27 활용
홍익인간CMS는 Spring Framework 5.3.27 버전을 기반으로 하며, 다음과 같은 Spring 기술을 활용합니다:
| Spring 기술 | 용도 |
|---|---|
| Spring MVC | 웹 애플리케이션의 MVC 패턴 구현 |
| Spring Security | 인증 및 권한 관리 |
| Spring AOP | 관점 지향 프로그래밍을 통한 로깅, 트랜잭션 등 처리 |
| Spring OXM | XML 처리 |
| Spring Transaction | 트랜잭션 관리 |
2.1.3 Java 8 실행환경
홍익인간CMS는 Java 8 환경에서 실행되도록 설계되었으며, Java 8의 다음과 같은 기능을 활용합니다:
- Lambda 표현식: 함수형 프로그래밍 지원
- Stream API: 컬렉션 처리 기능
- Date/Time API: 향상된 날짜 및 시간 처리
- Default Methods: 인터페이스의 기본 메소드 구현
2.2 프로젝트 구성
홍익인간CMS는 다음과 같은 세 가지 주요 모듈로 구성되어 있습니다:
2.2.1 Humanframe BACKOFFICE
CMS의 관리자 영역 및 기본 시스템 구동, 스케줄러 등에 대한 자바 클래스로 구성되어 있습니다. CMS의 기본 관리자 기능을 변경해야 할 필요가 있을 시 개발자가 직접 수정 가능합니다.
주요 구성요소:
- 시스템 컨트롤 클래스
- 관리자 인터페이스 클래스
- 관리자 컨트롤러
- 관리자 서비스 및 DAO
- 시스템 스케줄러
- 관리자 인터셉터 및 필터
- AOP 구현체
- 배치 스케줄러
2.2.2 Humanframe WEB
CMS의 사용자 영역에 대한 자바 클래스 및 Frontend Presentation(관리자, 사용자 전체)을 위한 각종 리소스(jsp, xml, js, css 등)로 구성되어 있습니다.
권장사항: CMS 기본 기능이 아닌 추가 기능에 대한 전체 프로그램 소스(Java class, jsp, xml 등)는 이 프로젝트에 구현하는 것을 권장합니다.
주요 구성요소:
- 웹 사이트 프레젠테이션 클래스
- 추가 프로그램 클래스(관리자 및 웹 사용자용)
- 사용자 컨트롤러
- 사용자 서비스 및 DAO
- 사용자 인터셉터 및 필터
- JSP 페이지 및 템플릿
- 정적 리소스(CSS, JavaScript, 이미지 등)
- 사이트맵, JSP, 프론트엔드 리소스
- 웹 앱 라이브러리, 커스텀 태그 등
2.3 데이터베이스 구조
2.3.1 데이터 Entity 목록
홍익인간CMS는 다음과 같은 주요 데이터 Entity를 관리합니다:
- 사이트관리
- 게시판관리
- 콘텐츠관리
- 메뉴관리
- 코드관리
- 프로그램관리
- 통계관리
- 메타데이터관리
- 배포관리
- 로그관리
- 배너관리
2.3.2 ERD 및 테이블 관계도
홍익인간CMS의 데이터베이스는 다음과 같은 주요 테이블 그룹으로 구성되어 있습니다:
ERD (Entity Relationship Diagram)
데이터베이스 ERD는 별도 문서로 제공됩니다
2.3.3 주요 테이블 설명
| 테이블 그룹 | 주요 테이블 | 설명 |
|---|---|---|
| 사용자 관리 | tn_mber, tn_mngr | 사용자 및 관리자 정보 관리 |
| 권한 관리 | tn_mng_author, tn_mng_author_menu | 권한 및 권한 그룹 관리 |
| 사이트 관리 | tn_site, tn_pblcate_site | 멀티 사이트 관리 |
| 메뉴 관리 | tn_site_menu, tn_pblcate_site_menu | 메뉴 구조 및 권한 관리 |
| 게시판 관리 | tn_bbs_st, tn_bbs_ty1~8 | 게시판 설정 및 게시물 관리 |
| 콘텐츠 관리 | tn_cntnts, tn_cntnts_hist, tn_media | 콘텐츠 및 미디어 관리 |
| 파일 관리 | tn_file, tn_file_group | 파일 및 파일 그룹 관리 |
| 통계 관리 | tn_stats_menu_month, tn_stats_menu_year | 통계 및 방문 정보 관리 |
| 로그 관리 | tn_mng_log, tn_mng_privacy_access | 시스템 로그 및 개인 정보 접근 |
| 설정 관리 | tn_mng_menu, tc_code | 관리자 메뉴 및 코드 관리 |
2.3.4 테이블 그룹별 상세 설명
홍익인간CMS는 다음과 같은 주요 테이블 그룹으로 구성되어 있습니다:
1. 코드 관리 테이블
- TC_CODE: 코드 그룹 및 코드 정보 관리
- TC_CODE_LANG: 다국어 코드 정보 관리
2. 게시판 관련 테이블
- TN_BBS_ST: 게시판 기본 설정 정보
- TN_BBS_TY1~TY8: 게시판 유형별 게시물 정보
- TN_BBS_FILE: 게시판 첨부파일 정보
- TN_BBS_CTGRY: 게시판 카테고리 정보
- TN_BBS_HASHTAG: 게시판 해시태그 정보
3. 사이트 관리 테이블
- TN_SITE: 사이트 기본 정보
- TN_SITE_MENU: 사이트 메뉴 정보
- TN_SITE_MAIN: 사이트 메인 페이지 정보
- TN_PBLCATE_SITE: 배포된 사이트 정보
- TN_PBLCATE_SITE_MENU: 배포된 메뉴 정보
- TN_CM: 메뉴 별 댓글 정보
4. 콘텐츠 관리 테이블
- TN_CNTNTS: 콘텐츠 기본 정보
- TN_CNTNTS_FORM: 콘텐츠 폼 정보
- TN_CNTNTS_HIST: 콘텐츠 이력 정보
- TN_CNTNTS_MAPNG: 콘텐츠 매핑 정보
5. 미디어 관리 테이블
- TN_MEDIA: 미디어 기본 정보
- TN_MEDIA_FILE: 미디어 파일 정보
- TN_MEDIA_LANG: 미디어 다국어 정보
6. 사용자 관리 테이블
- TN_MBER: 회원 정보
- TN_MNGR: 관리자 정보
- TN_DEPT: 부서 정보
- TN_DEPT_EMP: 부서별 직원 정보
7. 기타 관리 테이블
- TN_BANNER: 배너 정보
- TN_POPUP: 팝업 정보
- TN_STATS_MENU: 메뉴별 통계 정보
- TN_STSFDG: 만족도 정보
그 외 상세 컬럼 정보는 컬럼명세서를 참조해 주시기 바랍니다.
2.3.5 데이터 흐름도
홍익인간CMS의 주요 데이터 흐름은 다음과 같습니다:
- 사용자 인증 흐름
- 사용자 로그인 요청 → 인증 처리 → 세션 생성 → 권한 확인 → 메뉴 접근 제어
- 콘텐츠 관리 흐름
- 콘텐츠 등록/수정 → 파일 업로드 처리 → 데이터베이스 저장 → 캐시 갱신
- 게시판 처리 흐름
- 게시물 등록/수정 → 첨부파일 처리 → 데이터베이스 저장 → 검색 인덱스 갱신
- 통계 처리 흐름
- 사용자 접속 → 로그 기록 → 배치 처리 → 통계 데이터 생성 → 대시보드 표시
부록. 테이블 정의서(컬럼 명세서)
테이블 정의서(컬럼 명세서)는 별도 문서로 제공됩니다.