오래된 ERP(전사 자원 관리 시스템)는 회사의 심장 같은 시스템이에요. 주문, 재고, 정산이 매일 그 위에서 돌아가니, 낡았다고 해서 하루 멈추고 갈아엎을 수가 없어요. 솔랩스가 진행 중인 PHP 5.5 기반 ERP 전환에서 정한 원칙과 순서를 정리했어요.
1. 한 번에 바꾸지 않고, 화면 단위로 옮기기
가장 중요한 원칙은 빅뱅 전환을 하지 않는 것이에요. 새 시스템을 다 만들어 놓고 어느 날 한꺼번에 바꾸면, 놓친 업무 규칙이 그날 한꺼번에 터져요.
대신 기존 시스템은 그대로 두고, 화면(메뉴) 하나씩 새 구조로 옮겨요. 사용자는 같은 메뉴를 쓰는데, 뒤에서 어떤 화면은 새 시스템이, 어떤 화면은 옛 시스템이 처리하는 기간을 일부러 둬요. 개발 쪽에서는 이걸 "스트랭글러 패턴"이라고 불러요(옛 시스템을 감싸면서 조금씩 대체하는 방식).
- 자주 쓰지만 규칙이 단순한 조회 화면부터
- 돈 · 재고가 움직이는 화면은 검증 장치를 갖춘 뒤에
- 옮긴 화면은 옛 화면과 결과를 나란히 비교
2. 새 구조: 화면은 Next.js, 업무 규칙은 Spring
새 구조는 역할을 둘로 나눴어요.
| 층 | 기술 | 맡는 일 |
|---|---|---|
| 화면 | Next.js · TypeScript | 빠른 화면, 권한별 메뉴, 모바일 대응 |
| 업무 규칙 · 데이터 | Spring | 주문 · 재고 · 정산 계산, 트랜잭션, 권한 검사 |
| AI 기능 | 별도 서비스 | 문서 요약, 검색, 사내 AI 연결 |
PHP 시절에는 화면 파일 안에 SQL과 계산 로직이 섞여 있는 경우가 많았어요. 옮기면서 계산은 전부 Spring으로 모아, 같은 규칙이 여러 화면에 복사돼 있던 문제를 같이 정리했어요.
3. 데이터 이전은 "매핑표"부터
DB(데이터베이스)를 옮길 때 코드보다 먼저 만드는 게 매핑표예요. 옛 테이블 · 컬럼이 새 구조의 어디로 가는지, 값이 어떻게 바뀌는지를 표로 정리하고, 이 표를 기준으로 이전 스크립트와 검증 스크립트를 함께 만들어요.
건수(옮기기 전후 행 수), 합계(금액 · 수량 합), 표본 비교(무작위 몇 건을 화면으로 대조) — 세 가지가 다 맞아야 다음 단계로 넘어가요.
4. 권한은 새로 설계하기
오래 쓴 시스템일수록 "이 사람은 예외로 이 메뉴도 보게 해 주세요" 같은 요청이 쌓여 권한이 복잡해져 있어요. 그대로 옮기면 복잡함도 그대로 따라와요. 그래서 실제 직무를 기준으로 역할을 다시 정하고, 사람이 아니라 역할에 권한을 주는 구조로 바꿨어요.
5. 옮기면서 AI를 붙일 자리 만들기
전환은 AI를 붙이기 좋은 기회이기도 해요. 데이터가 정리되고 업무 규칙이 한곳에 모이면, 그 위에 사내 서버의 언어 모델을 연결해 "이번 달 미수금 거래처 요약" 같은 질문에 답하게 만들 수 있어요. 이 프로젝트도 사내 AI 서버 구축을 함께 진행하고 있어요.
정리하면, 멈추면 안 되는 시스템일수록 작게 옮기고, 매번 비교하고, 규칙은 한곳에 모으는 게 핵심이에요.