스트랭글러 피그 패턴(Strangler Fig Pattern)은 레거시 시스템을 점진적으로 새 시스템으로 교체하는 마이그레이션 전략이다. 마틴 파울러가 열대 무화과 나무가 숙주 나무를 감싸며 대체하는 모습에서 이름을 따왔다.
핵심 아이디어
기존 방식(Big Bang 교체):
레거시 전체 재작성 → 위험 높음, 장기간 운영 중단
스트랭글러 피그:
레거시와 신규 시스템 병행 운영 →
기능 단위로 신규로 이전 →
레거시는 점진적으로 소멸
단계:
1. Transform: 새 시스템에서 기능 구현
2. Co-exist: 프록시로 트래픽 분기
3. Eliminate: 레거시 기능 제거
구현 패턴
클라이언트
│
┌──────▼──────┐
│ 프록시/ │
│ API Gateway │
└──────┬──────┘
┌─────┴─────┐
▼ ▼
레거시 신규
시스템 서비스
(Java EE) (Spring Boot)
기능 A → 신규 서비스 라우팅
기능 B → 레거시 (아직 미이전)
기능 C → 신규 서비스 라우팅
실제 구현 예시
nginx
# Nginx 프록시로 트래픽 분기
server {
location /api/users {
proxy_pass http://new-user-service:8080; # 이미 이전
}
location /api/orders {
proxy_pass http://legacy-system:8080; # 아직 레거시
}
location /api/products {
proxy_pass http://new-product-service:8080; # 이전 완료
}
}
데이터 동기화 고려사항
레거시 ↔ 신규 데이터 일관성 유지:
1. 이중 쓰기(Dual Write): 양쪽에 동시 쓰기
2. CDC(Change Data Capture): 레거시 DB 변경 감지
3. 이벤트 소싱: 이벤트로 상태 복제
4. 공유 DB: 임시로 동일 DB 사용 (과도기)
장단점
| 구분 | 내용 |
|---|
| 장점 | 무중단 이전, 위험 분산, 롤백 용이 |
| 단점 | 이중 운영 비용, 데이터 동기화 복잡 |
| 적합 | 대형 레거시, 장기 프로젝트 |
관련 개념