전자정부 표준프레임워크 시스템 인계받기
들어가며
전자정부 표준프레임워크로 만들어진 시스템은 공공기관 어디에나 있습니다. 그런데 그 시스템을 처음 만든 회사가 계속 맡는 경우는 생각보다 적습니다. 사업자가 바뀌고, 담당자가 옮기고, 만든 회사가 없어지기도 합니다.
그렇게 되면 누군가는 그 시스템을 넘겨받아야 합니다. 저희는 공공기관 시스템 구축에 컨소시엄 구성원으로 참여해 그 일을 했고, 준공까지 마친 뒤 하자담보 기간에도 점검을 이어가고 있습니다.
이 글은 그 과정에서 인계 직후에 확인한 것들을 정리한 것입니다. 잘한 자랑이 아니라, 다음에 같은 상황에 놓일 분들을 위한 체크리스트에 가깝습니다.
넘겨받은 시스템
전자정부 표준프레임워크 3.8.0
Spring Framework 4.3.x
데이터 접근 계층 iBATIS 와 MyBatis 병존
DB Oracle
화면 JSP + JSTL + SiteMesh
소스 규모 954MB / 5,656개 파일
숫자만 보면 감이 잘 안 옵니다. 다르게 말하면 이렇습니다. 한 사람이 한 달을 들여다봐도 전체 구조가 안 잡히는 크기입니다.
그리고 여기서 눈여겨볼 것은 iBATIS 와 MyBatis 병존 한 줄입니다.
1. 데이터 접근 계층이 두 개인 이유부터 확인합니다
iBATIS와 MyBatis가 한 프로젝트에 같이 있다는 건, 과거 어느 시점에 마이그레이션을 시도했다가 중간에 멈췄다는 뜻입니다.
이게 왜 중요하냐면, 같은 테이블을 건드리는 쿼리가 두 곳에 흩어져 있을 수 있기 때문입니다. 한쪽만 고치면 다른 쪽에서 옛 동작이 그대로 남습니다.
인계받은 직후에 확인해야 할 것은 이렇습니다.
어느 기능이 iBATIS를 타고 어느 기능이 MyBatis를 타는가
두 설정이 같은 DataSource를 공유하는가, 따로 잡혀 있는가
트랜잭션 경계가 두 계층에 걸쳐 있는 구간이 있는가
이걸 모르고 기능을 하나 고치면, 고친 곳 말고 다른 데서 문제가 납니다.
2. 빌드가 되는지부터 확인합니다
소스를 받았다고 시스템을 받은 게 아닙니다. 그 소스로 빌드가 되어야 받은 겁니다.
구버전 프로젝트에서 빌드가 막히는 지점은 대체로 정해져 있습니다.
사내 저장소에만 있던 의존성 — 저장소가 닫히면 받을 수 없습니다
저장소에 안 올라간 로컬 jar — lib 폴더째 빠져 있는 경우가 있습니다
빌드 도구 버전 — 지금 환경에서 그 버전이 안 도는 경우
JDK 버전 — 소스 레벨과 실행 JDK가 안 맞는 경우
인계 시점에 "빌드 명령 한 줄과 그 결과물" 을 같이 받아두는 게 가장 확실합니다. 문서보다 그게 낫습니다.
[진도님 확인 필요] 실제로 빌드를 되살릴 때 막혔던 지점이 있었다면 여기에 한 단락. 없으면 이 블록 삭제. ※ 확인된 사실만. 없는 일을 만들지 않습니다.
3. 문서와 실제 동작이 다를 수 있다고 전제합니다
인계 문서는 대개 사업 종료 시점에 맞춰 정리된 것입니다. 그 뒤에 손을 댄 부분은 문서에 없습니다.
그래서 인계 초기에는 문서를 지도로 쓰되, 판단 근거로는 쓰지 않는 편이 안전합니다. 문서에 없는 배치 작업이 돌고 있거나, 문서에 있는 화면이 실제로는 안 쓰이는 경우가 있습니다.
확인 순서는 이렇게 잡았습니다.
실제로 호출되는 URL 목록 — 접속 로그 기준
실제로 도는 스케줄·배치 — 서버의 크론과 애플리케이션 내부 스케줄러 양쪽
실제로 데이터가 쌓이는 테이블 — 최근 입력 시각 기준
"문서에 뭐가 있나"가 아니라 "지금 뭐가 움직이나"를 먼저 봅니다.
4. 운영 환경을 재현할 수 있는지 확인합니다
로컬에서 뜬다고 끝이 아닙니다. 운영과 같은 조건에서 떠야 손을 댈 수 있습니다.
WAS 종류와 버전
외부 연계가 있다면 그 연계가 끊긴 상태에서도 기동되는가
설정 파일이 소스에 있는가, 서버에만 있는가
특히 마지막 항목이 중요합니다. 설정이 서버에만 있으면, 그 서버가 죽는 순간 복구가 안 됩니다. 인계받을 때 소스와 함께 반드시 확보해야 하는 것이 이 설정입니다.
5. 되돌릴 수 있는 상태를 먼저 만듭니다
인계 직후에 기능부터 손대는 건 위험합니다. 순서는 이렇습니다.
① 현재 상태 백업 (소스 · DB 스키마 · 설정)
② 빌드 재현
③ 배포 절차 문서화
④ 그다음에 수정
③번까지 끝나기 전에 ④번을 하면, 문제가 생겼을 때 돌아갈 곳이 없습니다.