HOSUGATOR.
전체 프로젝트
#Automation#TypeScript#Playwright

ERP Backup: 레거시 ERP 데이터 마이그레이션 자동화

개요

수일 수작업 → 정합성 100% 완전 무인 자동화. 공식 API 부재+비표준 동적 팝업 환경에서 Playwright+Promise.all로 비동기 Race Condition 구조적 제거. 입사 1주차 단독 개발, POM 패턴·.env 자격증명 분리·CSV 전수 감사 로그.

맥락

입사 1주차, K-System Ace 레거시 웹 ERP의 공식 API 부재가 데이터 마이그레이션 최대 병목으로 식별됐습니다. 비표준 동적 팝업 구조로 기존 자동화 도구(Selenium, AutoHotkey) 적용이 불가능했고, 수만 건의 결재 문서를 수작업으로 추출해야 하는 반복 병목이 전사 리소스를 잠식하고 있었습니다. 팝업이 비동기로 열리고 닫히는 구조가 모든 기존 접근의 실패 원인이었습니다.

핵심 의사결정

Playwright를 선택했습니다. 비동기 이벤트 핸들링과 동적 팝업 처리에서 Selenium 대비 압도적 우위가 있었기 때문입니다. Promise.all 동시성으로 팝업 이벤트 타이밍 Race Condition을 구조적으로 제거하고, POM(Page Object Model) 패턴으로 UI 구조 변경에 강건한 유지보수 아키텍처를 확보했습니다. Security-first 설계(자격증명 분리)와 CSV 전수 추적 로그(감사 가능성)를 기획 단계부터 포함했습니다.

구현

Promise.all 동시성 설계

팝업 이벤트 수신과 클릭 액션을 Promise.all로 동시 처리해 순차 처리 시 발생하는 팝업 타이밍 Race Condition을 구조적으로 해결했습니다. 병렬화로 처리 속도도 향상됐고, 실패 시 개별 reject로 핸들링합니다.

POM 패턴으로 유지보수성

Page Object Model로 ERP UI를 LoginPage·DocumentListPage·PopupHandler 클래스로 추상화했습니다. UI 구조 변경 시 해당 POM 클래스만 수정하면 되고, 테스트 코드와 로직을 재사용할 수 있습니다.

Security-first & 감사 가능성

.env + .gitignore로 자격증명을 완전 분리하고, 날짜/문서번호/PDF상태/첨부유무/비고를 담은 CSV 전수 추적 로그로 Auditability를 보장했습니다. 실패 건은 재처리 파이프라인으로 자동 재시도합니다.

재처리 & 이식성 설계

CSV 체크포인트로 이미 처리된 문서를 건너뛰어 중단 후 이어하기를 지원하고, 동적 페이지네이션을 자동 처리합니다. POM 구조와 .env 주입으로 타 ERP 시스템에도 코드 수정 없이 재사용 가능합니다.

아키텍처
성과 & 회고

수주가 소요되던 수작업을 완전 무인 자동화로 전환하고 데이터 정합성 100%를 확보했습니다. 재처리 로직으로 부분 실패 시에도 누락 없이 전수 완료하여 전사 마이그레이션 병목을 해소했습니다. API 없는 레거시 자동화의 핵심이 타이밍 제어와 상태 추적임을, "병목 식별 → 자동화 설계 → 전사 적용"을 입사 1주차에 증명했습니다.

기술 스택
PlaywrightNode.jsPromise.allPOM PatternTypeScript.env SecurityCSV Audit Log