사내 시스템(약 15종)과 여러 DBMS(Oracle, MySQL, PostgreSQL 등)를 하나의 시스템으로 통합 관리한 경험을 공유하고자 합니다.
배경
15종의 사내 시스템과 여러 DBMS(Oracle, MySQL, PostgreSQL 등)가 개별적으로 운영되고 있었습니다. 이로 인해 다음과 같은 문제점들이 있었습니다:
- VB6, C#, Oracle Forms, React 등 다양한 기술 스택이 혼재되어 있어 관리가 복잡함
- 사용자 추가 시마다 오라클 라이센스 비용이 증가하는 구조로 비용 부담이 큼
- 부서별로 독립적인 시스템으로 인해 데이터 중복과 관리 비효율이 발생

파란색: 내부 관리 시스템, 빨간색: 외부 시스템
해결 방안
이러한 문제를 해결하기 위해 모든 시스템을 하나의 통합 플랫폼으로 재구성했습니다.
- Next.js 도입을 통한 B2B 개발팀과의 기술 스택 일치 및 개발 협업 증진
- Next.js SSR 활용 시도 후 안정성/확장성 문제로 독립 백엔드 시스템 추가
- 다양한 DBMS PostgreSQL 통합을 통한 라이센스 비용 절감
- API 서버, 배치 처리, 프론트엔드, 공통 라이브러리 모듈화 구성

기술적 구현
1. 모노레포 구성
TurboRepo와 pnpm을 활용해 4개의 프로젝트(API 서버, Batch 처리, 프론트엔드, 공통 라이브러리)를 하나의 리포지토리로 관리했습니다. 이를 통해 공통 모듈을 공유하고 중복 코드를 최소화했습니다.
- API 서버: DB 프로시저 구조화를 통한 불필요한 배포 횟수 감소
- Batch 처리: Puppeteer 기반 스크래핑 시스템 및 워커 스레드 도입으로 안정적인 배치 작업 수행
- Frontend : Next.js 기반 프론트엔드 시스템 구축
- 공통 라이브러리: 재사용 가능한 유틸리티 함수 및 모듈 제공
2. 안정적인 운영 환경 구축
- 무중단 배포: pm2 ecosystem 활용, graceful reload 적용으로 서비스 중단 없는 업데이트 구현
- 로깅 및 모니터링: 시스템 오류 자동 이메일 알림 시스템 구축
성과
이번 통합 프로젝트를 통해 다음과 같은 성과를 얻었습니다:
- 업무 효율성 향상: 파편화된 시스템을 통합하여 중복 업무를 제거했고, 소수의 개발 인원으로도 효과적인 운영이 가능해졌습니다
- 비용 절감: Oracle 라이센스 비용 문제를 해결하고, 중복 데이터를 제거했습니다
- 글로벌 시스템 연동 기반 마련: 통합된 시스템을 통해 회사의 글로벌 시스템과 효율적으로 연동할 수 있는 기반을 마련했습니다
- 안정적인 운영: 무중단 배포와 자동 알림 시스템을 통해 안정적인 시스템 운영이 가능해졌습니다
앞으로도 지속적인 개선과 확장을 통해 더 나은 시스템을 구축해 나갈 계획입니다.
향후 계획
현재는 인라인 주석을 통한 기본적인 문서화만 진행되어 있으나, 앞으로 Notion, Confluence, GitHub Wiki 등을 활용해 체계적인 문서화를 진행할 예정입니다. 또한 시스템 모니터링과 사용자 피드백을 바탕으로 지속적인 개선을 진행할 계획입니다.
이 프로젝트를 통해 제한된 자원 속에서도 효율적인 문제 해결 방안을 찾을 수 있었고, 이러한 경험이 앞으로의 도전에 큰 밑거름이 될 것입니다.