장헌 레거시 리눅스전환 검토/0010.장헌 레거시 리눅스 전환 실행 정책 문서.md 업데이트

This commit is contained in:
2026-07-22 11:53:38 +09:00
parent 73a963acc6
commit f46a161b75
@@ -1,51 +1,84 @@
# 장헌 레거시 리눅스 전환 실행 정책 문서
## 문서 목적
이 문서는 장헌 레거시 서비스의 리눅스 전환 작업을 실제로 수행할 때의 기준 문서다.
앞으로의 작업은 본 문서의 `단계별 타임테이블`을 기준으로 진행한다.
또한 작업 중 새로운 단계가 추가되거나, 기존 단계의 범위/순서/소요가 변경되면:
1. 먼저 이 문서의 타임테이블을 갱신하고
2. 그 다음 실제 작업을 진행한다
즉, 이 문서는 단순 보고용이 아니라 `실행 기준표`다.
## 프로젝트 배경
장헌 레거시 서비스는 현재 Windows 기반 APMSETUP 환경에서 운영되고 있다.
현재까지 확인된 운영 기준:
| 항목 | 현재 운영 기준 |
| --- | --- |
| 웹서버 | Apache 2.2.14 |
| PHP | PHP 5.2.12 |
| DB | MySQL 5.1.41 계열 |
| 템플릿 엔진 | Smarty 2.6 |
| 운영 루트 | `D:\APM_Setup\htdocs` |
| 운영 성격 | 통합 웹루트 안에서 여러 서비스 동시 운영 |
이번 전환은 단일 서비스 1개를 옮기는 작업이 아니라, 여러 서비스가 같은 레거시 웹루트와 공통 자산을 공유하는 구조를 리눅스로 옮기는 작업이다.
## 현재 레거시 상황
| 구분 | 내용 |
| --- | --- |
| 핵심 서비스 | `intranet`, `factory_mng`, `person_mng`, `projt_mng`, `account` |
| 공통 의존성 | `Smarty`, `Smarty2.6`, `apiLibrary` |
| 공통 저장소 | `factory_file`, `intranet_file`, `person_file`, `proj_file`, `projt_file`, `erpphoto` |
| 코드 특성 | `mysql_*`, short open tag, Windows 절대경로, 구형 PHP 관행 |
| 템플릿 특성 | Smarty 2.6 기반, 다수 템플릿/백업/컴파일 산출물 혼재 |
| DB 특성 | `hanmacerp` 중심, 일부 보조 DB/보안 DB/뷰 문제 존재 |
## 전환 목표 ## 전환 목표
현재 기준으로는 아래 두 흐름을 모두 인지하고 작업한다.
현재 실행 기준은 `B안`으로 고정한다. 현재 실행 기준은 `B안`으로 고정한다.
| 구분 | 의미 | | 구분 | 의미 |
| --- | --- | | --- | --- |
| 단기 목표 | 리눅스 기준으로 실제 운영 구조를 재현 가능한 상태까지 정리 |
| 중기 목표 | 필요 시 PHP 8 + Smarty 상향까지 포함한 구조 전환 검토 |
| 실행 방향 | PHP 8 + Smarty 상향 + Linux/Docker 이관 | | 실행 방향 | PHP 8 + Smarty 상향 + Linux/Docker 이관 |
| 핵심 목표 | Windows APMSETUP 기반 레거시 서비스를 최신 Linux 기반 스택에서 동작하도록 전환 | | 핵심 목표 | Windows APMSETUP 기반 레거시 서비스를 최신 Linux 기반 스택에서 동작하도록 전환 |
| 제외 방향 | A안, 즉 PHP 5.2 계열 운영 재현 우선 방식은 실행 타임테이블에서 제외 | | 제외 방향 | A안, 즉 PHP 5.2 계열 운영 재현 우선 방식은 실행 타임테이블에서 제외 |
다만 실제 실행은 `단계별 타임테이블` 기준으로 움직이며, 각 단계의 상태에 따라 다음 단계로 넘어간다.
A안 관련 문서는 판단 이력과 비교 자료로만 유지한다. 실제 실행은 아래 `단계별 타임테이블` 기준으로 움직이며, 각 단계의 상태에 따라 다음 단계로 넘어간다. A안 관련 문서는 판단 이력과 비교 자료로만 유지한다. 실제 실행은 아래 `단계별 타임테이블` 기준으로 움직이며, 각 단계의 상태에 따라 다음 단계로 넘어간다.
## 변경될 사항 ## 변경될 사항
| 구분 | 현재 | 전환 후 방향 |
| --- | --- | --- |
| OS | Windows | Linux |
| 실행 방식 | APMSETUP 수동 운영 | Docker 기반 구성 |
| 웹루트 | `D:\APM_Setup\htdocs` | 예: `/var/www/html` | | 웹루트 | `D:\APM_Setup\htdocs` | 예: `/var/www/html` |
| DB 연결 | `localhost`/외부 호스트 혼재 | 환경변수 기반 연결 | | DB 연결 | `localhost`/외부 호스트 혼재 | 환경변수 기반 연결 |
| 업로드/로그/캐시 | 웹루트 인접 상대경로/Windows 경로 | Linux 디렉터리/볼륨 매핑 | | 업로드/로그/캐시 | 웹루트 인접 상대경로/Windows 경로 | Linux 디렉터리/볼륨 매핑 |
| 템플릿 엔진 | Smarty 2.6 | 유지 또는 상향 검토 |
| 템플릿 엔진 | Smarty 2.6 | Smarty 상향 적용 검토 후 전환 | | 템플릿 엔진 | Smarty 2.6 | Smarty 상향 적용 검토 후 전환 |
| 운영 구조 | 단일 Windows 통합 운영 | Linux/Docker 기준 재구성 | | 운영 구조 | 단일 Windows 통합 운영 | Linux/Docker 기준 재구성 |
## 작업 진행 원칙 ## 작업 진행 원칙
| 번호 | 원칙 |
| --- | --- |
| 1 | 실제 작업은 아래 `단계별 타임테이블` 기준으로 진행한다. |
| 2 | 한 단계가 시작되기 전에, 해당 단계의 입력물/완료조건을 확인한다. |
| 3 | 단계가 추가/변경되면 먼저 타임테이블을 수정하고 난 뒤 실제 작업을 진행한다. | | 3 | 단계가 추가/변경되면 먼저 타임테이블을 수정하고 난 뒤 실제 작업을 진행한다. |
| 4 | 다중 서비스 전환이므로 공통 수정의 영향 범위를 항상 같이 점검한다. | | 4 | 다중 서비스 전환이므로 공통 수정의 영향 범위를 항상 같이 점검한다. |
| 5 | 운영 사실은 문서/실파일/실제 캡처 기준으로만 기록한다. | | 5 | 운영 사실은 문서/실파일/실제 캡처 기준으로만 기록한다. |
| 6 | 판단이 필요한 단계는 B안 기준으로 PHP 8, DB 상향, Smarty 상향 영향을 함께 검토한다. | | 6 | 판단이 필요한 단계는 B안 기준으로 PHP 8, DB 상향, Smarty 상향 영향을 함께 검토한다. |
| 7 | 단계 진행 중 GPT 모델 전환이 필요하면 먼저 사용자에게 사유를 알리고, 승인 또는 확인 후 전환해 진행한다. |
## 단계별 타임테이블 ## 단계별 타임테이블
| 단계 ID | 단계명 | 목표 | 주요 작업 | 산출물 | 예상 소요 | 완료 기준 | 상태 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| P0 | 기준 확보 | 운영 기준 사실과 범위를 고정 | 운영 버전, 루트 경로, 주요 서비스, DB, 저장소 구조 확인 | 운영 기준 메모, 인벤토리 문서 | 완료 | 기준 문서와 핵심 근거 확보 | 완료 |
| P1 | 원본 반입 | 실제 운영본과 DB dump를 작업 저장소에 반입 | `APM_Setup.zip`, `hanmacerp.sql`, 설정 파일 반입 | 압축본, dump, 반입 기록 | 완료 | 원본 소스/DB/설정 확보 | 완료 |
| P2 | 실행 기준 정리 | 작업 규칙, 보고 문서, 체크리스트 고정 | 보고 문서, 규칙 문서, B안 체크리스트 작성 | 규칙 문서, 전략 문서 | 완료 | 상위 기준 문서 정리 | 완료 |
| P3 | 운영 재현 준비 | 리눅스 재현을 위한 Docker 골격과 DB 적재 절차 준비 | compose, Dockerfile, entrypoint, DB init 절차 정리 | Docker 초안, import 절차 | 진행 중 | 웹/DB 골격과 import 절차 준비 | 진행 중 |
| P4 | 운영본 선별 및 구조화 | 실제 사용 서비스와 공통 자산을 선별 배치 | `app/htdocs` 기준 운영본/보류본/저장소 분리 | 선별 반입 구조 | 미착수 | 실제 운영본 구조가 고정됨 | 미착수 |
| P5 | A안 리눅스 재현 검증 | 현재 운영과 최대한 비슷하게 Linux/Docker에서 기동 확인 | 경로 치환, DB 연결, 업로드/로그/캐시 검증 | 1차 재현 결과, 오류 목록 | 미착수 | 로그인/대표 화면/대표 기능 구동 | 미착수 |
| P6 | B안 영향도 심화 분석 | PHP 8, DB 상향, Smarty 상향 범위를 실제 코드 기준으로 확정 | PHP 치명 이슈 스캔, Smarty 자산 분류, DB 호환성 분석 | B안 심화 메모, 착수 체크리스트 | 진행 중 | B안 실제 범위와 리스크 확정 | 진행 중 |
| P7 | B안 설계 확정 | PHP 8 + Smarty 상향 + Linux 이관의 실제 전환 순서를 확정 | 목표 버전, 공통부 전환, 서비스 우선순위 설계 | B안 설계 문서 | 미착수 | B안 실행 설계 승인 가능 수준 | 미착수 |
| P8 | B안 코드 전환 | 공통부부터 PHP 8/Smarty 상향 적용 | DB 계층, 공통 함수, Smarty 초기화부, 진입부 수정 | 코드 변경본, 변경 로그 | 미착수 | 대표 서비스의 PHP 8/Smarty 상향 기동 | 미착수 |
| P9 | 서비스별 회귀 테스트 | 다중 서비스 동작과 저장소 기능 확인 | 로그인, 메인, 첨부, 이미지, 로그, 인코딩, 세션 확인 | 테스트 결과표, 오류 목록 | 미착수 | 핵심 서비스별 대표 기능 확인 | 미착수 |
| P10 | 안정화 및 운영 전환 판단 | 반복 오류 보정과 최종 전환 판단 | 버그 수정, 재기동 검증, 문서 갱신 | 안정화 기록, 전환 판단 메모 | 미착수 | 운영 적용 여부 판단 가능 상태 | 미착수 |
| 단계 ID | 단계명 | 목표 | 주요 작업 | 산출물 | 예상 소요 | 권장 GPT 모델 | 완료 기준 | 상태 | | 단계 ID | 단계명 | 목표 | 주요 작업 | 산출물 | 예상 소요 | 권장 GPT 모델 | 완료 기준 | 상태 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| P0 | 기준 확보 | 운영 기준 사실과 범위를 고정 | 운영 버전, 루트 경로, 주요 서비스, DB, 저장소 구조 확인 | 운영 기준 메모, 인벤토리 문서 | 완료 | GPT-5.6 Terra 또는 GPT-5.5 high | 기준 문서와 핵심 근거 확보 | 완료 | | P0 | 기준 확보 | 운영 기준 사실과 범위를 고정 | 운영 버전, 루트 경로, 주요 서비스, DB, 저장소 구조 확인 | 운영 기준 메모, 인벤토리 문서 | 완료 | GPT-5.6 Terra 또는 GPT-5.5 high | 기준 문서와 핵심 근거 확보 | 완료 |
@@ -71,37 +104,73 @@ A안 관련 문서는 판단 이력과 비교 자료로만 유지한다. 실제
| GPT-5.6 Luna | 대량 목록화, 단순 분류, 테스트 결과 요약처럼 판단 부담이 낮은 반복 작업 | | GPT-5.6 Luna | 대량 목록화, 단순 분류, 테스트 결과 요약처럼 판단 부담이 낮은 반복 작업 |
| GPT-5.5 high/xhigh | GPT-5.6 사용이 불가할 때의 대체 선택. 중요한 설계/리뷰 작업은 high 이상 권장 | | GPT-5.5 high/xhigh | GPT-5.6 사용이 불가할 때의 대체 선택. 중요한 설계/리뷰 작업은 high 이상 권장 |
## GPT 모델 전환 정책
단계별로 적합한 GPT 모델을 나누어 쓰더라도, 프로젝트 기준과 판단 맥락은 유지되어야 한다. 모델 전환은 작업 품질을 높이기 위한 수단이며, 전환 자체가 작업 기준을 바꾸는 것은 아니다.
| 상황 | 전환 전 조치 | 전환 후 조치 |
| --- | --- | --- |
| Terra/Luna로 진행 중 복잡한 설계 판단이 필요함 | 사용자에게 Sol 전환 사유를 알림 | 기존 단계 목적, 입력물, 완료 기준을 요약한 뒤 Sol로 판단 |
| Sol로 진행 중 반복 스캔/목록화 작업이 많아짐 | 사용자에게 Terra 또는 Luna 전환 가능성을 알림 | 판단 기준은 Sol에서 확정한 내용을 유지하고 반복 작업만 분리 |
| 모델 전환 후 이전 결론과 충돌하는 판단이 나옴 | 즉시 작업을 멈추고 충돌 내용을 사용자에게 보고 | 기존 문서 근거와 새 판단을 비교한 뒤 사용자 확인 후 반영 |
| 장시간 작업 후 다른 모델로 이어서 진행해야 함 | 현재 단계, 수정 파일, 미해결 이슈, 다음 명령을 요약 | 이어받는 모델은 요약 내용을 먼저 확인하고 작업 재개 |
모델 전환 시 반드시 아래 내용을 남긴다.
| 기록 항목 | 내용 |
| --- | --- |
| 전환 사유 | 왜 현재 모델로는 부족하거나 비효율적인지 |
| 전환 대상 | 예: GPT-5.6 Terra에서 GPT-5.6 Sol로 전환 |
| 유지 기준 | 작업 목표, 완료 기준, 금지 사항, 이미 확정된 결정 |
| 이어받을 내용 | 현재 단계, 관련 파일, 남은 작업, 확인해야 할 리스크 |
작업 중 모델 전환이 필요하다고 판단되면, 실제 전환 전에 사용자에게 먼저 알리고 진행한다.
## 현재 기준 우선 작업 경로 ## 현재 기준 우선 작업 경로
현재 문서 작성 시점(`2026-07-22`) 기준 우선 경로는 아래와 같다. 현재 문서 작성 시점(`2026-07-22`) 기준 우선 경로는 아래와 같다.
1. `P3 운영 재현 준비` 마무리
2. `P4 운영본 선별 및 구조화`
3. `P6 B안 영향도 심화 분석` 보강
4. 이후 `P5``P7` 중 실제 의사결정에 따라 진행
1. `P3 운영본 선별 및 구조화` 1. `P3 운영본 선별 및 구조화`
2. `P4 PHP 8 치명 이슈 스캔` 2. `P4 PHP 8 치명 이슈 스캔`
3. `P6 Smarty 상향 설계` 3. `P6 Smarty 상향 설계`
4. `P5 DB 계층 전환 설계``P7 Linux/Docker 목표 스택 확정` 4. `P5 DB 계층 전환 설계``P7 Linux/Docker 목표 스택 확정`
5. 이후 `P8 공통부 코드 전환`부터 실제 코드 전환 착수 5. 이후 `P8 공통부 코드 전환`부터 실제 코드 전환 착수
즉, 현재는 `A안 재현 준비``B안 심화 분석`이 병행 구간에 있다.
즉, 현재부터는 `A안 재현 준비`를 실행 경로에서 제외하고, `B안 전환 준비`에 집중한다. 즉, 현재부터는 `A안 재현 준비`를 실행 경로에서 제외하고, `B안 전환 준비`에 집중한다.
## 단계 변경 반영 규칙 ## 단계 변경 반영 규칙
작업 중 아래와 같은 상황이 발생하면 반드시 타임테이블을 먼저 수정한다.
| 상황 | 조치 |
| --- | --- |
| 새 단계가 필요해짐 | 단계 ID, 단계명, 목표, 산출물, 소요를 추가 |
| 단계 순서가 바뀜 | 순서와 우선 경로를 수정 | | 단계 순서가 바뀜 | 순서와 우선 경로를 수정 |
| 예상 소요가 크게 달라짐 | 소요와 상태 설명 보정 | | 예상 소요가 크게 달라짐 | 소요와 상태 설명 보정 |
| 단계 목표가 달라짐 | 목표/완료 기준을 수정 | | 단계 목표가 달라짐 | 목표/완료 기준을 수정 |
| A안에서 B안으로 우선순위가 이동 | 우선 경로와 상태를 갱신 |
| B안 범위/순서가 바뀜 | 우선 경로와 상태를 갱신 | | B안 범위/순서가 바뀜 | 우선 경로와 상태를 갱신 |
## 상태값 정의 ## 상태값 정의
| 상태 | 의미 |
| --- | --- |
| 미착수 | 아직 시작하지 않음 |
| 진행 중 | 현재 수행 중 |
| 보류 | 외부 입력/승인/결정 대기 |
| 완료 | 완료 기준 충족 |
## 문서 운영 규칙
| 항목 | 규칙 |
| --- | --- |
| 기준 문서 | 본 문서를 상위 실행 기준으로 본다 |
| 상세 규칙 문서 | 작업 규칙 문서와 체크리스트는 본 문서의 하위 실무 문서로 본다 |
| 단계 착수 전 | 이 문서의 해당 단계 목적/완료 기준을 먼저 확인 |
| 단계 변경 시 | 먼저 본 문서를 수정 후 실제 작업 진행 |
## 현재 시점 요약 ## 현재 시점 요약
현재까지는 운영 기준, DB dump, 원본 압축, Docker 초안, B안 심화 검토 문서가 준비되어 있다. 현재까지는 운영 기준, DB dump, 원본 압축, Docker 초안, B안 심화 검토 문서가 준비되어 있다.
다음 실제 작업은 `P3`, `P4`, `P6`의 정밀화에 집중하게 된다.
다음 실제 작업은 `P3 운영본 선별 및 구조화`, `P4 PHP 8 치명 이슈 스캔`, `P6 Smarty 상향 설계` 순서로 집중하게 된다. 다음 실제 작업은 `P3 운영본 선별 및 구조화`, `P4 PHP 8 치명 이슈 스캔`, `P6 Smarty 상향 설계` 순서로 집중하게 된다.
## 한줄 결론 ## 한줄 결론