React 화면을 유지하며 백엔드 이관
백엔드를 Spring Boot·MySQL로 통일하기로 하고 Next.js 백엔드 API 약 50개를 이관했습니다. MongoDB 모델은 MySQL 기반 JPA Entity로 재설계하고 기존 React 화면과 연동했습니다. Internal·External·Bypass 호출 경로와 인증을 나누고, Java 11→21·Spring Boot 2.7→3.3으로 버전을 올렸습니다.
수리 매칭 플랫폼 · DB Inc.
React 화면을 유지하며 Next.js·MongoDB 백엔드를 Spring Boot·MySQL로 이관했습니다.
외주 백엔드를 내부에서 유지보수하고 서버별 수작업 배포를 줄여야 했습니다.
약 1시간 → 약 10분
서버 2대 기준 · 수동 배포 약 1시간 → Jenkins 파이프라인 약 10분 (배포 기록·작업 체감)
| 이전 | 이후 | |
|---|---|---|
| 화면 | React | React 화면 유지 |
| API | Next.js API | Spring Boot · JPA |
| 데이터 | MongoDB | MySQL |
| 배포 | SVN · 서버별 수작업 | GitLab · Jenkins · Docker |
Next.js API 약 50개를 이관하고 기존 React 화면과 연동
핵심 흐름 · 이해를 돕기 위해 단순화한 개념도
외주에서 인계한 Next.js·MongoDB 서버를 내부에서 유지보수해야 했습니다. 사내에서는 이미 Spring Boot를 쓰고 있었고 백엔드 개발자는 2명이라, 별도 스택을 계속 유지하기 어려웠습니다. 배포 때마다 SVN checkout, 파일 이동, deploy.sh 실행을 서버별로 반복하는 작업도 개선이 필요했습니다.
백엔드를 Spring Boot·MySQL로 통일하기로 하고 Next.js 백엔드 API 약 50개를 이관했습니다. MongoDB 모델은 MySQL 기반 JPA Entity로 재설계하고 기존 React 화면과 연동했습니다. Internal·External·Bypass 호출 경로와 인증을 나누고, Java 11→21·Spring Boot 2.7→3.3으로 버전을 올렸습니다.
형상관리를 SVN에서 GitLab으로 옮기고, Jenkins·Docker로 빌드·이미지 생성·배포를 자동화했습니다. 서버 2대는 1대를 먼저 배포해 헬스체크를 통과하면 나머지 1대를 배포하는 순차 무중단 방식이며, Jenkins 전환도 1대에서 먼저 검증한 뒤 전체에 적용했습니다. AWS ALB 뒤 Nginx 멀티서버를 운영하고 Prometheus·Grafana 모니터링을 구성했습니다.
엑셀 대량 업로드는 행마다 외부 API 응답을 기다린 뒤 다음 행을 처리하는 직렬 구조라 대기 시간이 행 수만큼 누적됐습니다. CompletableFuture로 행별 처리를 비동기 작업으로 나누고 ExecutorService의 스레드 풀에서 병렬 실행했습니다. 동시 실행 수는 스레드 풀로 제한했습니다. 모든 작업의 결과를 모아 행별 성공·실패와 사유를 반환했습니다.
이전 · 직렬 처리
✕ 대기 시간이 행 수만큼 누적
행마다 외부 API 응답을 기다린 뒤 다음 행을 처리하는 직렬 구조라 대기 시간이 행 수만큼 누적됐습니다.
변경 후 · 스레드 풀 병렬 처리
✓ 행별 성공·실패와 사유를 반환
CompletableFuture로 행별 처리를 비동기 작업으로 나누고 ExecutorService의 스레드 풀에서 병렬 실행했습니다. 동시 실행 수는 스레드 풀로 제한했습니다.
이전에는 1행부터 4행까지 한 행씩 차례로 처리합니다. 변경 후에는 스레드 2개가 1·2행을 동시에 처리하고, 먼저 끝난 스레드가 3·4행을 이어서 처리합니다. 가로축은 시간, 막대는 행별 외부 API 응답 대기입니다. 응답 대기 시간이 모두 같다고 가정한 개념도이며, 행·스레드 수와 처리 시간은 실측값이 아닙니다.
서버 2대 기준 · 수동 배포 약 1시간 → Jenkins 파이프라인 약 10분 (배포 기록·작업 체감)
백엔드 API 약 50개를 Spring Boot로 이관해 외주 의존을 없애고, 배포 작업을 약 1시간에서 약 10분으로 단축했습니다. Flutter 앱의 Play Store·TestFlight 배포와 Vue·React 화면 유지보수도 담당했습니다. 별도 기업 홈페이지는 React.js·Tailwind CSS로 신규 구축(2025.12)하고 2026.08 전면 개편했으며, 어드민 연동과 배포까지 맡았습니다.
채용·프로젝트 문의
dohoon321@gmail.com