13 KiB
장헌 레거시 리눅스 전환 실행 정책 문서
문서 목적
이 문서는 장헌 레거시 서비스의 리눅스 전환 작업을 실제로 수행할 때의 기준 문서다.
앞으로의 작업은 본 문서의 단계별 타임테이블을 기준으로 진행한다.
또한 작업 중 새로운 단계가 추가되거나, 기존 단계의 범위/순서/소요가 변경되면:
- 먼저 이 문서의 타임테이블을 갱신하고
- 그 다음 실제 작업을 진행한다
즉, 이 문서는 단순 보고용이 아니라 실행 기준표다.
프로젝트 배경
장헌 레거시 서비스는 현재 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안으로 고정한다.
| 구분 | 의미 |
|---|---|
| 실행 방향 | PHP 8 + Smarty 상향 + Linux/Docker 이관 |
| 핵심 목표 | Windows APMSETUP 기반 레거시 서비스를 최신 Linux 기반 스택에서 동작하도록 전환 |
| 제외 방향 | A안, 즉 PHP 5.2 계열 운영 재현 우선 방식은 실행 타임테이블에서 제외 |
A안 관련 문서는 판단 이력과 비교 자료로만 유지한다. 실제 실행은 아래 단계별 타임테이블 기준으로 움직이며, 각 단계의 상태에 따라 다음 단계로 넘어간다.
변경될 사항
| 구분 | 현재 | 전환 후 방향 |
|---|---|---|
| OS | Windows | Linux |
| 실행 방식 | APMSETUP 수동 운영 | Docker 기반 구성 |
| 웹루트 | D:\APM_Setup\htdocs |
예: /var/www/html |
| DB 연결 | localhost/외부 호스트 혼재 |
환경변수 기반 연결 |
| 업로드/로그/캐시 | 웹루트 인접 상대경로/Windows 경로 | Linux 디렉터리/볼륨 매핑 |
| 템플릿 엔진 | Smarty 2.6 | Smarty 상향 적용 검토 후 전환 |
| 운영 구조 | 단일 Windows 통합 운영 | Linux/Docker 기준 재구성 |
작업 진행 원칙
| 번호 | 원칙 |
|---|---|
| 1 | 실제 작업은 아래 단계별 타임테이블 기준으로 진행한다. |
| 2 | 한 단계가 시작되기 전에, 해당 단계의 입력물/완료조건을 확인한다. |
| 3 | 단계가 추가/변경되면 먼저 타임테이블을 수정하고 난 뒤 실제 작업을 진행한다. |
| 4 | 다중 서비스 전환이므로 공통 수정의 영향 범위를 항상 같이 점검한다. |
| 5 | 운영 사실은 문서/실파일/실제 캡처 기준으로만 기록한다. |
| 6 | 판단이 필요한 단계는 B안 기준으로 PHP 8, DB 상향, Smarty 상향 영향을 함께 검토한다. |
| 7 | 단계 진행 중 GPT 모델 전환이 필요하면 먼저 사용자에게 사유를 알리고, 승인 또는 확인 후 전환해 진행한다. |
단계별 타임테이블
| 단계 ID | 단계명 | 목표 | 주요 작업 | 산출물 | 예상 소요 | 권장 GPT 모델 | 완료 기준 | 상태 |
|---|---|---|---|---|---|---|---|---|
| P0 | 기준 확보 | 운영 기준 사실과 범위를 고정 | 운영 버전, 루트 경로, 주요 서비스, DB, 저장소 구조 확인 | 운영 기준 메모, 인벤토리 문서 | 완료 | GPT-5.6 Terra 또는 GPT-5.5 high | 기준 문서와 핵심 근거 확보 | 완료 |
| P1 | 원본 반입 | 실제 운영본과 DB dump를 작업 저장소에 반입 | APM_Setup.zip, hanmacerp.sql, 설정 파일 반입 |
압축본, dump, 반입 기록 | 완료 | GPT-5.6 Terra 또는 GPT-5.5 high | 원본 소스/DB/설정 확보 | 완료 |
| P2 | B안 실행 기준 정리 | PHP 8 전환 중심의 작업 규칙, 보고 문서, 체크리스트 고정 | 정책 문서, 규칙 문서, B안 체크리스트 갱신 | 규칙 문서, 전략 문서, 실행 정책 문서 | 완료 | GPT-5.6 Sol | A안 제외 및 B안 실행 기준 고정 | 완료 |
| P3 | 운영본 선별 및 구조화 | 실제 사용 서비스와 공통 자산을 선별 배치 | APM_Setup.zip 해제, 운영본/보류본/저장소 분리, 템플릿 산출물 분류 |
선별 반입 구조, 서비스 인벤토리 | 미착수 | GPT-5.6 Terra | 실제 운영본 구조가 고정됨 | 미착수 |
| P4 | PHP 8 치명 이슈 스캔 | PHP 5.2 코드가 PHP 8에서 깨질 지점을 실제 코드 기준으로 식별 | mysql_*, ereg, split, each, short tag, 동적 속성, 참조 전달, 배열/문자열 접근 스캔 |
PHP 8 이슈 목록, 우선순위표 | 미착수 | GPT-5.6 Terra, 판단 검토는 GPT-5.6 Sol | 공통부와 대표 서비스의 치명 이슈 목록 확보 | 미착수 |
| P5 | DB 계층 전환 설계 | MySQL 5.x 접근 방식을 PHP 8 호환 DB 계층으로 전환 설계 | DB 접속부 추적, mysql_* 대체 방식 결정, PDO/MySQLi 래퍼 설계, 문자셋 정책 정리 |
DB 전환 설계 메모, 공통 DB 래퍼 초안 | 미착수 | GPT-5.6 Sol | 코드 전환 전에 DB 접근 정책 확정 | 미착수 |
| P6 | Smarty 상향 설계 | Smarty 2.6 템플릿/플러그인을 상위 버전 기준으로 전환 설계 | 템플릿 문법 스캔, 플러그인 호환성 점검, 컴파일/캐시 경로 정책, 목표 버전 확정 | Smarty 전환 설계 메모, 템플릿 이슈 목록 | 진행 중 | GPT-5.6 Sol | Smarty 전환 범위와 수정 패턴 확정 | 진행 중 |
| P7 | Linux/Docker 목표 스택 확정 | PHP 8 기반 리눅스 실행 스택을 확정 | Apache/Nginx 여부, PHP-FPM 여부, MySQL 목표 버전, 볼륨/권한/환경변수 설계 | Docker 목표 설계, compose 기준안 | 미착수 | GPT-5.6 Sol | B안 실행 인프라 기준 승인 가능 상태 | 미착수 |
| P8 | 공통부 코드 전환 | 서비스 전체에 영향이 큰 공통부부터 PHP 8 기준으로 수정 | DB 계층, 공통 함수, 설정 로더, 경로 처리, 세션/쿠키, Smarty 초기화부 수정 | 공통부 변경본, 변경 로그 | 미착수 | GPT-5.6 Sol | 대표 진입점이 PHP 8에서 fatal 없이 로드됨 | 미착수 |
| P9 | 서비스별 코드/템플릿 전환 | 핵심 서비스별 PHP/Smarty 오류를 순차 수정 | intranet, factory_mng, person_mng, projt_mng, account 순차 점검 및 수정 |
서비스별 수정 로그, 오류 목록 | 미착수 | 반복 수정은 GPT-5.6 Terra, 난해한 오류는 GPT-5.6 Sol | 핵심 서비스 대표 화면과 대표 기능 동작 | 미착수 |
| P10 | DB/데이터 상향 검증 | MySQL 8 또는 선택된 목표 DB에서 데이터와 쿼리 호환성 확인 | dump import, 뷰/트리거/프로시저 점검, 예약어/문자셋/정렬 기준 확인 | DB import 결과, 쿼리 오류 목록 | 미착수 | GPT-5.6 Sol | 주요 조회/저장 쿼리와 문자셋 이상 여부 확인 | 미착수 |
| P11 | 서비스별 회귀 테스트 및 안정화 | 다중 서비스 동작과 저장소 기능을 반복 확인 | 로그인, 메인, 첨부, 이미지, 로그, 인코딩, 세션, 권한 확인 | 테스트 결과표, 오류 목록, 안정화 기록 | 미착수 | GPT-5.6 Terra, 대량 체크는 GPT-5.6 Luna 가능 | 핵심 서비스별 대표 기능 확인 | 미착수 |
| P12 | 운영 전환 판단 | 반복 오류 보정 후 최종 전환 가능 여부 판단 | 잔여 리스크 정리, 릴리스/롤백 기준 작성, 문서 갱신 | 전환 판단 메모, 릴리스 체크리스트 | 미착수 | GPT-5.6 Sol | 운영 적용 여부 판단 가능 상태 | 미착수 |
GPT 모델 선택 기준
| 모델 | 적합한 작업 |
|---|---|
| GPT-5.6 Sol | 아키텍처 결정, PHP 8 전환 판단, DB/Smarty 상향 설계, 복잡한 오류 분석, 최종 리뷰 |
| GPT-5.6 Terra | 파일 인벤토리, 반복 코드 스캔, 서비스별 수정, 문서 정리, 중간 난이도 리팩토링 |
| GPT-5.6 Luna | 대량 목록화, 단순 분류, 테스트 결과 요약처럼 판단 부담이 낮은 반복 작업 |
| 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) 기준 우선 경로는 아래와 같다.
P3 운영본 선별 및 구조화P4 PHP 8 치명 이슈 스캔P6 Smarty 상향 설계P5 DB 계층 전환 설계와P7 Linux/Docker 목표 스택 확정- 이후
P8 공통부 코드 전환부터 실제 코드 전환 착수
즉, 현재부터는 A안 재현 준비를 실행 경로에서 제외하고, B안 전환 준비에 집중한다.
단계 변경 반영 규칙
작업 중 아래와 같은 상황이 발생하면 반드시 타임테이블을 먼저 수정한다.
| 상황 | 조치 |
|---|---|
| 새 단계가 필요해짐 | 단계 ID, 단계명, 목표, 산출물, 소요를 추가 |
| 단계 순서가 바뀜 | 순서와 우선 경로를 수정 |
| 예상 소요가 크게 달라짐 | 소요와 상태 설명 보정 |
| 단계 목표가 달라짐 | 목표/완료 기준을 수정 |
| B안 범위/순서가 바뀜 | 우선 경로와 상태를 갱신 |
상태값 정의
| 상태 | 의미 |
|---|---|
| 미착수 | 아직 시작하지 않음 |
| 진행 중 | 현재 수행 중 |
| 보류 | 외부 입력/승인/결정 대기 |
| 완료 | 완료 기준 충족 |
문서 운영 규칙
| 항목 | 규칙 |
|---|---|
| 기준 문서 | 본 문서를 상위 실행 기준으로 본다 |
| 상세 규칙 문서 | 작업 규칙 문서와 체크리스트는 본 문서의 하위 실무 문서로 본다 |
| 단계 착수 전 | 이 문서의 해당 단계 목적/완료 기준을 먼저 확인 |
| 단계 변경 시 | 먼저 본 문서를 수정 후 실제 작업 진행 |
현재 시점 요약
현재까지는 운영 기준, DB dump, 원본 압축, Docker 초안, B안 심화 검토 문서가 준비되어 있다.
다음 실제 작업은 P3 운영본 선별 및 구조화, P4 PHP 8 치명 이슈 스캔, P6 Smarty 상향 설계 순서로 집중하게 된다.
한줄 결론
앞으로의 작업은 본 문서의 타임테이블을 기준으로 진행하며, 중간에 단계가 추가되거나 수정되면 반드시 먼저 이 문서를 갱신한 뒤 다음 작업을 수행한다.