모바일 줌 SpringBoot → NodeJS 전환기 (feat. VueJS SSR)
백엔드
모바일 줌 SpringBoot → NodeJS 전환기 (feat. VueJS SSR)
두줄요약
모바일 줌의 Spring Boot 백엔드를 Node.js Express와 Vue SSR 기반으로 전환했습니다. 검색엔진 유입과 TPS가 개선되고 코드와 메모리 사용량도 줄었습니다.
문제 상황
- 모바일 줌의 Spring Boot 백엔드가 프론트 서비스 성격에 비해 무겁고, Node.js 기반 SSR 적용과 운영 환경 전환이 필요
- Java 환경에서 Vue SSR Renderer를 안정적으로 돌릴 대안이 부족해 유지보수 가능한 실행 방식 탐색 필요
원인 분석
- SPA 특성상 검색엔진 노출과 저사양 기기 체감 속도 개선을 위해 SSR 필요
- 브라우저 표준 객체 의존, JNI 메모리 누수 위험, Nashorn의 CommonJS 미지원과 낮은 성능으로 Java 백엔드에서 SSR 수행 곤란
- 프론트 서비스는 API Aggregation 및 Frontend Serving 중심이라 Spring Boot보다 가벼운 스택이 적합
해결 방법
- Spring Boot 대신 Node.js Express 백엔드로 전환하고, 도커 기반 운영 환경으로 재구성
- 표준화 라이브러리와 TypeScript, 데코레이터를 활용해 코딩 스타일과 공통 기능을 통합
- JSDOM을 global에 바인딩해 Vue SSR Renderer의 브라우저 객체 문제를 해결하고 SSR 공통화
성능/운영 포인트
- SSR 적용 후 검색엔진 유입과 PV 증가 확인
- 같은 사양 대비 TPS 약 40% 증가, 메모리 사용량 절반 이상 감소
- 코드 라인 수 1608줄에서 472줄로 감소
