PACS API 서버 Repository 패턴 도입
21개 레거시 컨트롤러 리팩토링 · MSSQL/Oracle DB 접근 계층 분리
2025.10 ~ 2026.02 · 단독 수행
(주)메디칼스탠다드 · 실무 프로젝트 · 소스 비공개
Problem
PACS API 서버의 컨트롤러에는 비즈니스 로직, Sequelize ORM 쿼리, Oracle Raw SQL, DBMS 분기 로직이 한 파일 안에 섞여 있었습니다. 기능 수정 시 어느 쿼리가 어떤 DBMS에서 실행되는지 추적하기 어려웠고, DB 관련 버그를 고치려면 컨트롤러 전체를 건드려야 하는 구조였습니다.
Key Insight
단순히 파일을 나누는 것이 아니라, MSSQL과 Oracle을 동시에 지원하는 DB 접근 규칙을 먼저 정해야 했습니다. 공개 메서드는 DBMS 차이를 숨기고, 내부 구현에서만 Sequelize와 Oracle Raw SQL을 분기하도록 설계했습니다.
Process
- —컨트롤러의 쿼리, DBMS 분기, 비즈니스 로직을 분리할 기준 정의
- —공개 메서드는 findAll, findOne, create처럼 도메인 동작 중심으로 통일
- —내부 구현에서 _findAllSequelize, _findAllOracle 형태로 DBMS별 쿼리 분리
- —기존 repository가 있으면 메서드를 추가하고, 없으면 신규 repository 생성
- —컨트롤러는 DBMS 세부 구현을 모르게 하고 repository 호출만 남기는 방식으로 교체
- —두 DBMS 모두 호환되는 단순 쿼리는 공통 raw query로 유지해 중복 제거
- —반복 리팩토링 패턴을 Claude Code 커스텀 스킬로 정리해 일관성 확보
- —리팩토링 전후 기능 동작이 동일한지 블랙박스 테스트 보고서 기반으로 검증
Result
컨트롤러
21개
Repository 패턴 적용
DBMS
2종
MSSQL / Oracle 지원
수정 범위
축소
DB 버그 수정 위치 명확화