Strangler Fig 패턴의 정의
Strangler Fig(교살자 무화과) 패턴은 열대 지역에 자생하는 무화과 나무의 생태에서 이름을 따온 소프트웨어 아키텍처 패턴입니다. 이 나무는 다른 나무를 감싸며 서서히 자라 결국 숙주 나무를 완전히 대체합니다. 소프트웨어에서도 마찬가지로, 낡은 레거시 시스템을 한 번에 전면 교체하지 않고 새로운 기능이나 모듈을 하나씩 덧붙여 나가면서 점진적으로 레거시 코드를 대체하는 방식을 의미합니다. 마틴 파울러가 이 개념을 소개하면서 널리 알려졌습니다.
동작 원리와 예시
기본 원리는 기존 시스템 앞단에 라우팅 계층(Facade)을 두고, 요청을 분석해 새로 개발한 서비스로 보낼지 기존 레거시 시스템으로 보낼지 결정하는 것입니다. 예를 들어 오래된 모놀리식 쇼핑몰 시스템에서 ‘회원가입’ 기능만 새로운 마이크로서비스로 먼저 구현했다고 가정해봅시다. API Gateway나 리버스 프록시가 /signup 요청은 새 서비스로, 나머지 요청은 기존 시스템으로 라우팅합니다. 이후 ‘주문 조회’, ‘결제’ 기능도 같은 방식으로 하나씩 새 서비스로 옮기고, 모든 기능이 이전되면 레거시 시스템을 완전히 폐기합니다. 즉 낡은 건물을 부수지 않고 옆에 새 건물을 지어가며 방을 하나씩 옮기고, 마지막에 낡은 건물을 철거하는 것과 비슷한 과정입니다.
실무에서 왜 이 패턴을 쓰는가
레거시 시스템을 빅뱅 방식으로 한 번에 재작성하는 것은 리스크가 매우 큽니다. 개발 기간이 길어지고, 그 사이 비즈니스 요구사항은 계속 바뀌며, 완성 후 배포 시 대규모 장애가 발생할 위험도 있습니다. Strangler Fig 패턴을 사용하면 다음과 같은 장점이 있습니다.
- 기능 단위로 점진적으로 배포하므로 위험을 분산시킬 수 있습니다.
- 기존 시스템과 신규 시스템이 공존하는 동안 서비스 중단 없이 운영이 가능합니다.
- 문제가 생기면 해당 기능만 롤백하면 되므로 장애 범위가 제한적입니다.
- 실제 운영 데이터를 바탕으로 새 아키텍처를 검증하며 점진적으로 확신을 쌓을 수 있습니다.
이런 이유로 대규모 레거시 마이그레이션이나 모놀리식에서 마이크로서비스로의 전환 프로젝트에서 이 패턴이 자주 활용됩니다.