★ 레거시 DB 마이그레이션
★ RFP 우대사항 — 레거시 DB 마이그레이션
매핑 정의서 + 미해결 데이터 관리
레거시 ERP·CRM·문서 관리 시스템을 신규 B2B Cert Portal로 안전하게 이관하는 표준 5단계 작업 방식입니다. 발주처 담당자가 매핑 정의서를 직접 검토·사인오프하고, 매핑이 어려운 데이터는 별도로 모아 케이스별로 처리 방향을 함께 결정합니다. 마이그레이션은 RFP에 명시된 대로 본 사업 외 별도 협의 항목입니다.
표준 5단계 방법론
분석 (Analysis)
레거시 시스템 인벤토리 + 데이터 품질 진단 + 비즈니스 인터뷰
- 시스템 인벤토리 (테이블·행 수·DBMS·운영 상태)
- 데이터 품질 진단 리포트 (NULL·중복·참조 깨진 데이터·인코딩 이슈)
- 발주처 담당자 인터뷰 메모 — 실제 사용 패턴 합의
★ 매핑 정의서 (Mapping Spec)
레거시 ↔ 신규 1:1 매핑 매트릭스. 변환 룰 6분류 + 발주처 담당자 사인오프.
- 매핑 정의서 (DB 또는 화면 시각화)
- 기준정보 통합 룰 (산업·국가·문서타입 동의어 사전)
- 발주처 담당자 검토 사인오프 이력 (누가·언제 승인)
변환 (Transform)
ETL 스크립트 작성 + 단위 검증. 정제 룰 적용 (NULL 기본값·중복 통합·기준정보 매핑).
- ETL 파이프라인 (SQL·Python·Spring Batch)
- 단위 검증 스크립트
- 변환 로그 (행 수 in/out·실패 사례)
적재·검증 (Load + Verify)
Stage 환경 사전 검증 후 운영 1회 일괄 이관 + 행 수·합계·표본 비교 + 발주처 담당자 표본 검수.
- Stage 환경 사전 검증 (운영 데이터 복제본으로 신규 시스템 동작 확인)
- 검증 리포트 (행 수·합계·표본 비교 100건)
- 발주처 담당자 표본 검수 사인오프 후 운영 1회 일괄 cutover
★ 미해결 데이터 처리
매핑 불가 데이터 별도 보관 + 발주처 담당자 케이스별 결정. 결정 이력 영구 기록.
- 미해결 데이터 관리 화면 (발주처 담당자 결정 인터페이스)
- 케이스별 결정 이력 (폐기·수동 정정·보존만)
- 마이그레이션 cutover 최종 보고서
레거시 시스템 인벤토리 (3)
매핑 정의서 (18)
| ID | 레거시 | 신규 | 분류 | 변환 룰 / 코멘트 | 사인오프 |
|---|---|---|---|---|---|
| M-001 | tb_client.client_nm NVARCHAR(100) · MS-SQL 2014 | customers.name varchar(100) | 직접 매핑 | — | 오민호 (운영팀장) 2026-04-08 |
| M-002 | tb_client.biz_no VARCHAR(20) · MS-SQL 2014 | customers.biz_number varchar(12) | 변환 | 공백·하이픈 제거 후 10자리 정규화 → XXX-XX-XXXXX 표기 통일. 8자리 구식 사업자번호 47건은 발주처 담당자 확인 후 분기. | 오민호 (운영팀장) 2026-04-08 |
| M-003 | tb_contact.contact_email VARCHAR(80) · MS-SQL 2014 | customers.contact_email varchar(120) | 변환 | 소문자 정규화 + 공백 trim. NULL 12건은 cert_db.tb_company.email 폴백 적용. | 오민호 (운영팀장) 2026-04-08 |
| M-004 | tb_client.industry_cd CHAR(4) · MS-SQL 2014 | customers.industry varchar(8) | 변환 | 구식 4자리 산업코드 → 신규 ENUM 매핑 ('M001'→'MEDI', 'E002'→'ELEC' 등 7종). 매핑 불가 코드는 GARBAGE 버킷. | 정수진 (영업팀) 2026-04-09 |
| M-005 | tb_employee.client_id INT · MS-SQL 2014 | customers.(employees count) int | 변환 | tb_employee 행 수를 client_id로 GROUP BY → customers.employees 컬럼 적재. | 오민호 (운영팀장) 2026-04-09 |
| M-006 | tb_cert_proj.proj_no VARCHAR2(20) · Oracle 11g | projects.id varchar(32) | 변환 | 구식 'CP2018-XXXX' 형식 → 신규 'prj-XXXXXXXX' UUID 변환. 매핑 테이블 보존. | 오민호 (운영팀장) 2026-04-10 |
| M-007 | tb_cert_proj.client_id VARCHAR2(20) · Oracle 11g | projects.customer_id varchar(32) | 통합 | customer_crm.tb_client.client_id와 동일 ID 체계 가정 → JOIN 검증. 89건은 client_id 부재 (참조 끊김) → GARBAGE 버킷. ★ 두 시스템 client_id 체계가 통일되어 있다는 가정. 발주처 담당자 확인 필요. | 오민호 (운영팀장) 2026-04-10 |
| M-008 | tb_cert_proj.stage_cd CHAR(2) · Oracle 11g | projects.stage varchar(16) | 변환 | 5-stage 구식 코드(01~05) → 9-stage 신규 ENUM 매핑. '04 결정' 단계는 신규 'DECISION' + 'ISSUED' 두 단계로 SPLIT 가능 — 발주처 담당자 합의 후 분기. 신규 시스템은 9-stage. 레거시 5-stage는 정보 손실 없이 매핑 가능. | 최경식 (심사관) 2026-04-11 |
| M-009 | tb_proj_history.history_dt DATE · Oracle 11g | milestones.actual_at timestamptz | 분리 | tb_cert_proj 1행 → milestones N행 분리. 단계별 history_dt를 stage 별 actual_at으로 분리. | 최경식 (심사관) 2026-04-11 |
| M-010 | tb_cert_proj.deleted_yn CHAR(1) · Oracle 11g | (없음).(없음) — | 폐기 | 신규 시스템은 soft delete 미사용. deleted_yn='Y' 행은 마이그레이션 제외. | 대기 |
| M-011 | tb_review_log.review_text CLOB · Oracle 11g | documents.feedback_text text | 변환 | Oracle CLOB → PostgreSQL text. EUC-KR 인코딩 47건 → UTF-8 변환. 변환 실패 사례는 GARBAGE 버킷. | 최경식 (심사관) 2026-04-11 |
| M-012 | tb_file_meta.file_path VARCHAR(500) · MySQL 5.7 + NFS | documents.s3_key varchar(512) | 변환 | NFS 파일 경로 (/mnt/nfs/...) → S3 key 변환. 파일 자체는 별도 배치로 S3 업로드 후 key 갱신. 한글 파일명 % 인코딩 정규화. ★ 5TB 파일 이관 — 무중단 dual-write 구간 필요. 검증 시 SHA-256 일치 확인. | 오민호 (운영팀장) 2026-04-12 |
| M-013 | tb_file_meta.file_size BIGINT · MySQL 5.7 + NFS | documents.file_size bigint | 직접 매핑 | — | 오민호 (운영팀장) 2026-04-12 |
| M-014 | tb_file_meta.doc_type_cd CHAR(3) · MySQL 5.7 + NFS | documents.doc_type varchar(64) | 변환 | 구식 3자리 doc 코드 → 신규 한글 라벨 매핑 (예: 'PRD'→'제품 사양서', 'TST'→'시험성적서'). 미정의 코드 23건은 GARBAGE 버킷. | 오민호 (운영팀장) 2026-04-12 |
| M-015 | tb_file_meta.review_grade VARCHAR(20) · MySQL 5.7 + NFS | documents.review_status varchar(16) | 변환 | 자유 텍스트 ('통과', '재제출', '반려', '진행중', NULL 등) → ENUM 정규화 (APPROVED·RESUBMIT·REJECTED·PENDING). 매핑 불가 18건은 GARBAGE. ★ 자유 텍스트 → ENUM 정합화 — 발주처 담당자 룰 필요. | 최경식 (심사관) 2026-04-13 |
| M-016 | tb_country_cd.country_cd CHAR(3) · Oracle 11g | (ENUM).country varchar(2) | 통합 | cert_db 3자리 ('KOR', 'USA', 'EUR' 등) + customer_crm 2자리 ('KR', 'US', 'EU' 등) → ISO 3166-1 alpha-2 통일. cert_db 비표준 'EU2', 'EU3' 등 4건은 발주처 담당자 합의. 두 시스템 국가 코드 체계 차이 — 통합 룰 합의 필요. | 오민호 (운영팀장) 2026-04-14 |
| M-017 | tb_industry_cd.industry_nm NVARCHAR(50) · MS-SQL 2014 | (ENUM).category varchar(8) | 통합 | 자유 입력 산업명 ('의료기기', '전자', '의료', '메디컬' 등 표기 다양) → 7종 ENUM 통일. 동의어 사전 발주처 담당자 합의. ★ 동의어 통합 — '의료기기'·'의료'·'메디컬' 모두 MEDI로. 발주처 담당자 합의 사인오프. | 정수진 (영업팀) 2026-04-14 |
| M-018 | tb_etc_field.memo_etc VARCHAR2(2000) · Oracle 11g | (없음).(없음) — | 별도 보관 | 비정형 자유 텍스트 — 일관성 부재. 신규 시스템 미수용. 별도 archive.legacy_memo 보관 (참조용). ★ 7,800건 모두 발주처 담당자 검토 불필요로 합의. 보존만. | 오민호 (운영팀장) 2026-04-15 |
★ 미해결 데이터 — 케이스별 결정 (7)
매핑이 어려운 데이터는 손실 방지를 위해 별도로 모아 보관합니다. 발주처 담당자가 케이스별로 폐기 / 수동 정정 / 보존만 중에서 결정하며, 결정 이력은 영구 기록되어 마이그레이션 마무리 보고서에 첨부됩니다.
- GBG-001NULL 데이터47건· customer_crm (영업 CRM) · tb_client수동 정정
사업자번호 NULL — 영업 초기 시스템 도입 전 등록된 고객사. 신규 시스템 NOT NULL 제약.
47건 모두 영업팀에 사업자등록증 재요청 진행 중. 마이그 cutover 전 47건 입력 완료 합의.
결정 · 오민호 (운영팀장) · 2026-04-12
- GBG-002중복 등록12건· customer_crm (영업 CRM) · tb_client수동 정정
동일 사업자번호 중복 등록 (예: '메디진단' 3건, '청솔테크놀로지' 2건). 영업 담당자 다른 행에 별도 등록.
최신 행을 master로 선정 + 나머지 자식 데이터(프로젝트·문서) FK 재배치. 운영팀 1:1 검토 후 통합.
결정 · 오민호 (운영팀장) · 2026-04-13
- GBG-003참조 끊김89건· cert_db (인증 관리 ERP) · tb_cert_proj보존만
client_id 참조 대상 customer_crm.tb_client에 부재. 영업 CRM에서 삭제됐으나 인증 ERP에는 잔존.
프로젝트 완료(ISSUED) 87건 + 진행중 2건. 진행중 2건만 가상 customer_id 발급 후 발주처 담당자 후속 정리. 87건은 archive 보존만.
결정 · 최경식 (심사관) · 2026-04-13
- GBG-004비정형 포맷47건· cert_db (인증 관리 ERP) · tb_review_log결정 대기
EUC-KR 인코딩 깨진 CLOB. UTF-8 변환 시 ?·□ 문자 다수 발생.
심사관 표본 10건 확인 결과 80% 복원 가능. 5월 1주차 일괄 복원 작업 예정.
- GBG-005비정형 포맷23건· doc_store (문서 관리) · tb_file_meta폐기
doc_type_cd 미정의 코드 ('XX1', 'OLD', '???' 등). 시스템 도입 초기 임시 코드 잔존.
23건 모두 2018년 이전 등록. 비즈니스 가치 없음. 운영팀 합의 후 폐기.
결정 · 오민호 (운영팀장) · 2026-04-14
- GBG-006코드 불일치18건· doc_store (문서 관리) · tb_file_meta수동 정정
review_grade 자유 텍스트 — '대기', '검토중', '확인중', 'pending', 'PENDING' 등 5가지 표기 동시 존재.
5가지 모두 PENDING으로 통합 합의. 통합 룰 mapping table 영구 보관.
결정 · 최경식 (심사관) · 2026-04-14
- GBG-007비정형 포맷7,800건· cert_db (인증 관리 ERP) · tb_etc_field보존만
비정형 메모 필드 — 영업담당자 자유 입력. 참조용 가치는 있으나 신규 시스템 정형 저장 불가.
archive.legacy_memo 테이블에 (project_id, memo_text) 그대로 보존. 신규 화면에서 READ-ONLY 검색만 제공.
결정 · 오민호 (운영팀장) · 2026-04-15
RFP 정합 안내
본 매핑 정의서와 미해결 데이터 관리 절차는 RFP 우대사항인 "레거시 DB 마이그레이션 경험"에 대한 본 팀의 표준 작업 방식입니다. 실제 마이그레이션 작업은 RFP에 명시된 대로 본 사업과는 별도 협의 항목이며, 발주처 실제 데이터를 함께 분석한 후 정확한 견적을 산출해 드립니다.