피드로 돌아가기
Dev.toInfrastructure
원문 읽기
레거시 분석 없이 인프라 확장과 Seam 도입으로 동시 접속자 5,000명 달성
The Black Box Nobody Would Touch: Scaling Undocumented Legacy Code as a 3-Year Dev
AI 요약
Context
문서화 부재 및 외부 벤더 의존도가 높은 Node.js 단일 서버 기반 레거시 시스템. MySQL과 MongoDB가 혼재된 복잡한 데이터 흐름과 Active Directory에 강결합된 인증 구조로 인해 Multi-tenant SaaS 확장 불가 및 성능 병목 발생.
Technical Solution
- 코드 분석 대신 로그와 트래픽 관찰을 통한 실제 런타임 동작 기반의 Behavior Mapping 수행
- Frontend와 Backend 서버를 물리적으로 분리하여 리소스 경합 제거 및 Nginx Reverse Proxy를 통한 Load Balancing 구축
- Node.js 프로세스의 CPU 병목 해결을 위해 PM2 Cluster Mode를 적용한 서버당 4개의 Worker 배치
- MySQL 및 MongoDB에 Read Replica를 도입하여 Transactional Write와 Reporting Read 경로를 분리한 데이터 부하 분산
- hardcoded된 AD 인증 로직을 Adapter Pattern 기반의 Pluggable Auth Provider로 추상화하여 Tenant별 인증 메커니즘 확장성 확보
- 작은 단위의 점진적 변경과 관찰 가능성 기반의 검증 과정을 통한 시스템 안정성 유지
실천 포인트
1. 코드 분석 전 런타임 로그와 DB 쿼리를 통해 실제 동작하는 Behavior Map을 먼저 작성할 것
2. 내부 로직 수정 전 서버 분리, 클러스터링, Read Replica 도입 등 인프라 레벨의 Scaling을 우선 검토할 것
3. 변경 위험이 큰 핵심 로직은 Interface와 Adapter를 통해 기존 코드와 분리하는 Seam을 구축할 것