관리자 · 전환 대장
구 시스템에서 새 시스템으로 옮기는 대장
구 시스템을 새 시스템으로 옮길 때 무엇을 어떤 순서로 옮기는지 정리하는 대장의 견본입니다. 기능·DB 객체·소스는 모두 이 데모를 위해 만든 가상 예시이며, 실제 대장은 받은 소스와 DB를 분석해 작성합니다.
실행 환경 · 지금 이 데모가 돌아가는 곳에서 읽은 값
- Java
- 17.0.20.1 (Eclipse Adoptium)
- Spring Boot
- 3.3.5
- Thymeleaf
- 3.1.2.RELEASE
- Flyway
- 10.10.0
- OS
- Ubuntu 26.04.1 LTS
- DB
- H2 2.2.224 (MySQL 호환 모드, 내장 · 재시작 시 초기화)
DB 객체 · 프로시저와 트리거 8개
- 서비스로 이전 3
- 유지 3
- 폐기 2
| 이름 | 하는 일 | 결정 | 이유 |
|---|---|---|---|
sp_GetBookList
정의 보기 (실행하지 않는 텍스트) |
사이트별 도서 목록과 제목 검색 | 서비스로 이전 | 검색 조건을 문자열로 이어 붙여 사이트마다 따로 돌던 쿼리입니다. 한 검색창에서 제목·작가·시리즈를 함께 찾도록 바뀌어 서비스 코드의 파라미터 쿼리로 옮깁니다. |
sp_GetBookDetail
정의 보기 (실행하지 않는 텍스트) |
도서 상세와 자료 한 건 조회 | 서비스로 이전 | 작가가 글자 칸 하나이고 자료가 도서 한 권에만 붙는 구조를 전제로 한 결과 형식입니다. 작가·분류·자료가 여러 개로 연결되면서 조인 형태가 바뀌어 서비스로 옮깁니다. |
sp_InsertData
정의 보기 (실행하지 않는 텍스트) |
자료 등록(도서 한 권에만 연결) | 서비스로 이전 | 자료 하나를 여러 도서에 연결해야 하므로 등록과 연결을 나누어 서비스에서 처리합니다. |
sp_CountDownload
정의 보기 (실행하지 않는 텍스트) |
기간별 자료 내려받기 수 집계 | 유지 | 월말 통계 작업에서만 부르는 집계입니다. 화면 로직과 얽혀 있지 않아 그대로 두고 새 앱에서 호출만 바꿉니다. |
trg_tb_book_upd
정의 보기 (실행하지 않는 텍스트) |
도서 수정 시각 자동 기록 | 유지 | 단순하고, 어느 경로로 수정해도 빠짐없이 남아야 하는 값이라 데이터베이스에 두는 편이 맞습니다. |
trg_tb_data_log
정의 보기 (실행하지 않는 텍스트) |
자료 변경 이력 기록 | 유지 | 변경 이력은 앱을 거치지 않은 수정까지 남겨야 하므로 데이터베이스에서 유지합니다. |
sp_MainBanner_Rotate
정의 보기 (실행하지 않는 텍스트) |
메인 배너 순서 무작위 교체 | 폐기 | 새 노출판에서 수동 고정과 자동 최신순으로 순서를 정하므로 더 이상 필요하지 않습니다. |
sp_SyncTextbookSite
정의 보기 (실행하지 않는 텍스트) |
두 사이트 도서 테이블 동기화 | 폐기 | 한 도메인, 한 데이터베이스로 합치면 사이트 사이의 복사 자체가 사라집니다. |
스키마 변경 이력 · 실행 중인 DB에서 읽음
구 테이블은 지우지 않고 남긴 채 새 테이블을 더하고(V3), 구 칸의 값을 새 연결 테이블로 옮겨 담았습니다(V4).
| 버전 | 설명 | 적용 시각 | 체크섬 | 걸린 시간 |
|---|---|---|---|---|
V1 |
legacy baseline | 2026-11-03 23:42:45 | 390851048 |
1 ms |
V2 |
legacy seed | 2026-11-03 23:42:45 | -1563540433 |
1 ms |
V3 |
unified schema | 2026-11-03 23:42:45 | -230313805 |
5 ms |
V4 |
backfill nm | 2026-11-03 23:42:45 | -1909336604 |
6 ms |
V5 |
seed unified | 2026-11-03 23:42:45 | 38469511 |
3 ms |
기능 목록 · 18개
- 구 시스템 5
- 전환 중 6
- 신 시스템 7
| 구 기능 | 옮겨 간 새 화면 | 전환 단계 | 상태 |
|---|---|---|---|
| 단행본 도서 검색 | S1 통합 검색 | 1차 단행본 | 신 시스템 |
| 단행본 도서 상세 | S2 도서 상세 | 1차 단행본 | 신 시스템 |
| 독서 교육 안내 페이지 | S3 독서 교육 제안 | 1차 단행본 | 신 시스템 |
| 작가 소개 (도서마다 글로 기재) | S4 작가·카테고리 | 1차 단행본 | 신 시스템 |
| 도서 등록·수정 | S4 작가·카테고리 | 1차 단행본 | 신 시스템 |
| 메인 배너·노출 관리 | S5 자료·노출 | 1차 단행본 | 신 시스템 |
| 단행본 구 주소 이동 | S6 리다이렉트 | 1차 단행본 | 신 시스템 |
| 교과서·참고서 도서 검색 | S1 통합 검색 | 2차 교과서·참고서 | 전환 중 |
| 교과서·참고서 상세 | S2 도서 상세 | 2차 교과서·참고서 | 전환 중 |
| 자료 내려받기 | S2 도서 상세 | 2차 교과서·참고서 | 전환 중 |
| 수업 자료실 목록 | S3 독서 교육 제안 | 2차 교과서·참고서 | 전환 중 |
| 작가 목록 일괄 등록 | S4 작가·카테고리 | 2차 교과서·참고서 | 전환 중 |
| 자료 등록 | S5 자료·노출 | 2차 교과서·참고서 | 구 시스템 |
| 공지사항 게시판 | S5 자료·노출 | 2차 교과서·참고서 | 구 시스템 |
| 활동 사진 게시판 | S5 자료·노출 | 2차 교과서·참고서 | 구 시스템 |
| 서식 자료 게시판 | S5 자료·노출 | 2차 교과서·참고서 | 구 시스템 |
| 교과서·참고서 구 주소 이동 | S6 리다이렉트 | 2차 교과서·참고서 | 전환 중 |
| 지난 이벤트 페이지 | S6 리다이렉트 | 2차 교과서·참고서 | 구 시스템 |
컨트롤러 대응 견본 · 도서 상세
같은 일을 하는 구 C# MVC 액션과 새 Spring 컨트롤러를 줄 단위로 맞대어 봅니다. 두 코드 모두 이 데모를 위해 만든 견본입니다.
public ActionResult Detail(int id)@GetMapping("/books/{id}")
public String book(@PathVariable int id, Model model)var book = db.Books.Find(id);
if (book == null) return HttpNotFound();BookDetail d = catalog.detail(id);
if (d == null) throw new ResponseStatusException(NOT_FOUND);ViewBag.Authors = book.AuthorName.Split(',');// d.authors(): book_author 연결 테이블에서 순서대로
model.addAttribute("d", d);return View(book);return "book"; // templates/book.html (Thymeleaf)