9.0 KiB
9.0 KiB
(주)삼안 ERP 및 그룹웨어 시스템 (Satis) 하이레벨 아키텍처 (High-Level Architecture)
본 문서는 (주)삼안의 ERP 및 그룹웨어 시스템(saman-statis / Satis) 프로젝트의 전체 하이레벨 아키텍처(HLA) 명세서입니다.
시스템의 전체 개요, 계층형 구조, 기술 스택, 업무 도메인뿐만 아니라 인프라/배포 아키텍처, 보안/인증 아키텍처, 외부 시스템 연동 구조를 종합적으로 포함합니다.
(참고: 압축파일 *.zip은 분석에서 제외하였습니다.)
1. 프로젝트 개요 (Project Overview)
- 프로젝트명: 삼안 ERP / 그룹웨어 (
saman-statis/Satis) - 운영 도메인:
satis2.samaneng.com,erp.samaneng.com - 시스템 성격: 엔지니어링/건설 분야 기업 자원 관리(ERP) 및 통합 그룹웨어
- 주요 기능: 인사/급여, 회계/전표, 프로젝트/현장 공정, 영업/기성, 전자결재, 고정자산, 출장 정산, 경영분석 등
2. 하이레벨 시스템 아키텍처 (High-Level System Architecture)
graph TD
subgraph Client Tier
Browser["Web Browser <br/> (HTML5, jQuery, jqGrid, w2ui)"]
end
subgraph Web / Presentation Tier
WebServer["Web Server <br/> (Windows Server / APM_Setup)"]
Smarty["Smarty Template Engine v2.6 <br/> (Smarty/templates/Satis/*.tpl)"]
end
subgraph Application Tier
Controller["MVC Controllers <br/> (Satis/sys/controller/*)"]
AuthModule["Security & Auth Engine <br/> (AuthClass.php / Session)"]
BizLogic["Business Models & Utility <br/> (Satis/sys/model/*, OracleClass.php)"]
end
subgraph Data & Integration Tier
OracleDB[("Main Oracle Database <br/> (OCI Connection)")]
iCubeDB[("Douzone iCube ERP <br/> (MS-SQL: DZICUBE)")]
IntranetDB[("Intranet Database <br/> (MySQL: hallaerp)")]
end
Browser <-->|HTTPS / HTTP| WebServer
WebServer <--> Smarty
WebServer <--> Controller
Controller <--> AuthModule
Controller <--> BizLogic
BizLogic <-->|OCI Connection| OracleDB
BizLogic <-->|MS-SQL Driver| iCubeDB
BizLogic <-->|MySQL Driver| IntranetDB
3. 계층별 기술 스택 (Layered Tech Stack)
| 계층 (Layer) | 구성 기술 및 디렉토리 | 설명 |
|---|---|---|
| Presentation Tier | Smarty 2.6, Smarty/templates/Satis/ |
Server-Side Rendering (SSR) 뷰 템플릿 엔진 (.tpl) |
| Client UI Tier | jQuery, jqGrid, w2ui, Satis/js/ |
엔지니어링/회계 대용량 동적 그리드 및 사용자 인터랙션 처리 |
| Application Tier | PHP 5.x, Satis/sys/controller/ |
Custom MVC Controller (ActionMode 라우팅 파라미터 처리) |
| Security Tier | Satis/sys/util/AuthClass.php |
세션 보안, CSRF Anti-Forgery Token 검증, 접근 권한 통제 |
| Persistence Tier | OracleClass.php, Satis/inc/*.inc |
Oracle OCI, MS-SQL(iCube), MySQL 다중 DB 연결 지원 |
4. 인프라 및 배포 아키텍처 (Infrastructure & Deployment Architecture)
graph LR
subgraph Infrastructure Layout
WebSvr["Web Application Server <br/> (APM_Setup / Windows Server)"]
OracleSvr[("Oracle Database Server <br/> (Main ERP Data)")]
iCubeSvr[("Douzone iCube Server <br/> (MS-SQL 192.168.13.50:5539)")]
MySQLSvr[("Intranet MySQL Server <br/> (erp.samaneng.com / hallaerp)")]
end
WebSvr -->|OCI Client| OracleSvr
WebSvr -->|MS-SQL TCP 5539| iCubeSvr
WebSvr -->|MySQL TCP 3306| MySQLSvr
- 서버 환경: Windows Server 기반 APM (Apache + PHP + MySQL) 단일/이중화 실행 환경 (
D:/APM_Setup/htdocs/) - PHP 실행 옵션:
- 메모리 제한 해제 (
ini_set("memory_limit", -1))를 통한 대용량 프로젝트/연말정산 엑셀 보고서 생성 지원 - 캐시 무효화 헤더 설정 (
Expires: 0,Cache-Control: no-cache)을 통한 세션 및 보안 강화
- 메모리 제한 해제 (
- 경로 및 컴파일 구조:
- Smarty 템플릿 컴파일 경로:
D:/APM_Setup/htdocs/Smarty/templates_c - 템플릿 설정 경로:
SmartyConfig.php관리
- Smarty 템플릿 컴파일 경로:
5. 보안 및 인증 아키텍처 (Security & Authentication Architecture)
sequenceDiagram
autonumber
actor User as 사용자
participant Controller as Login Controller
participant Auth as AuthClass
participant Session as PHP Session
participant DB as Oracle DB
User->>Controller: 로그인 요청 (ID / Password)
Controller->>DB: 사용자 정보 및 권한 검증
DB-->>Controller: 인증 성공 반환
Controller->>Auth: Auth_TokenGenerater() 호출
Auth->>Session: Session ID & Token 생성/저장
Session-->>User: Session Cookie 발급 (private)
Note over User, Controller: 후속 요청 시 Token 및 Session 권한 검증 (Auth_TokenChecker)
- 세션 및 인증 관리 (Session Management)
- PHP 세션 생성 (
session_start(),session_cache_limiter('private')) - 사용자 식별자 관리:
$_SESSION['satis_user_id'],$_SESSION['satis_user_deptcode'],$_SESSION['satis_user_name']
- PHP 세션 생성 (
- CSRF 방어 및 난수 토큰 (Token Security)
AuthClass.php내 10자리 영문/숫자 난수 토큰 생성기 (Auth_TokenGenerater) 및 검증기 (Auth_TokenChecker) 탑재- 비인가 접근 시 자동 세션 파기 (
session_destroy()) 및 로그인 페이지 전환 (auth_move_page.tpl)
- 역할 기반 권한 통제 (RBAC / Role-Based Access Control)
AuthClass및GetUserInfo.php를 통해 사용자 직급/부서/권한 등급별 메뉴 접근 권한 세분화
6. 외부 시스템 연동 아키텍처 (External System Integration Architecture)
이 시스템은 단일 DB에 의존하지 않고, 사내 타 이종(Heterogeneous) 시스템과 실시간 연결되는 하이브리드 데이터 아키텍처를 가집니다.
graph TD
SatisCore["Satis ERP Core System"]
SatisCore <-->|OCI Native Connection| OracleSystem["메인 그룹웨어/ERP DB (Oracle)"]
SatisCore <-->|MS-SQL Driver (Port 5539)| iCubeSystem["더존 iCube ERP (MS-SQL: DZICUBE) <br/> IP: 192.168.13.50"]
SatisCore <-->|MySQL Driver (Port 3306)| IntranetSystem["인트라넷 시스템 (MySQL: hallaerp) <br/> Host: erp.samaneng.com"]
- 더존 iCube ERP 연동 (
saman_icube_dbcon.inc)- 연동 목적: 사내 더존 회계/인사 ERP 데이터와의 실시간 동기화 및 전표 전송
- 접속 방식: Dedicated MS-SQL Connection (
192.168.13.50:5539, DB명:DZICUBE)
- 사내 인트라넷 연동 (
dbcon.inc)- 연동 목적: 인트라넷 기존 데이터 및 파일 연결
- 접속 방식: MySQL Connection (
erp.samaneng.com, DB명:hallaerp)
- 메인 Oracle DB 연동 (
OracleClass.php)- 연동 목적: Satis 그룹웨어 고유의 결재, 인사, 프로젝트, 출장, 자산 관리 데이터 처리
- 접속 방식: Oracle OCI8 라이브러리 및 커스텀 트랜잭션 바인딩 처리
7. 주요 업무 도메인 서브시스템 (Business Subsystems)
| 도메인 구분 | 서브시스템 모듈 | 아키텍처적 역할 및 주요 처리 기능 |
|---|---|---|
| 회계/재무 | Account |
전표 생성/승인, 예산 관리, 결산, 재무제표, 법인세/부가세, 원가 계산 |
| 인사/급여 | Person |
인사기록, 근태 관리, 급여/상여 계산, 연말정산(yeta_data) 처리 |
| 프로젝트/공정 | Project, Project_work |
엔지니어링 프로젝트 현장 관리, 공정률 계산, 기성 산출, 수주/매출 처리 |
| 전자결재/문서 | Document, Sign |
전자결재 작성, 양식/결재선 관리, 전자서명 및 인장 관리 |
| 영업/구매 | Sale, Purchase |
수주/매출 관리, 자재 구매 신청 및 발주 처리 |
| 자산/도서/출장 | Asset, Book, Travel |
고정자산 추적, 도서 대여 관리, 국내/외 출장 신청 및 여비 정산 |
| 시스템 관리 | Supervisor, Common |
전체 공정/부서/직급 코드 관리 (CommonCodeList.php), 관리자 권한 설정 |
8. 아키텍처 총평 및 고려사항 (Architectural Evaluation)
- 강점 (Strengths):
- 명확한 모듈화: 업무 도메인별 Controller, Model, View가 체계적으로 분리되어 있어 대규모 ERP 시스템의 확장성이 확보되어 있습니다.
- 이종 DB 유연성: Oracle, MS-SQL(더존 iCube), MySQL을 동시에 연동하는 하이브리드 데이터 아키텍처를 안정적으로 운영합니다.
- 대용량 그리드 최적화:
jqGrid라이브러리와 메모리 해제 조치(ini_set)를 통해 수만 건 이상의 공정/회계 데이터 조회를 지원합니다.
- 향후 아키텍처 개선 제언 (Future Roadmap):
- PHP 버전을 현대화: Classic PHP 드라이버(
mssql_*,mysql_*)를 최신PDO또는sqlsrv/mysqli로 마이그레이션 권장. - 하드코딩된 DB 접속 정보 격리:
saman_icube_dbcon.inc등의 DB 계정 정보를.env또는 보안 설정 파일로 분리 관리 권장.
- PHP 버전을 현대화: Classic PHP 드라이버(