특정 기능을 새로운 애플리케이션 및 서비스로 점진적으로 교체하여 레거시 시스템을 단계적으로 마이그레이션합니다. 레거시 시스템의 기능이 대체됨에 따라 새 시스템은 결국 이전 시스템의 모든 기능을 대체하여 이전 시스템을 중단시키고 서비스를 해제할 수 있게 합니다.
컨텍스트 및 문제점
시스템이 발전함에 따라 개발 도구, 호스팅 기술 및 빌드된 시스템 아키텍처도 점점 더 사용되지 않습니다. 새로운 기능과 기능이 추가되면 이러한 애플리케이션의 복잡성이 크게 증가하여 새 기능을 유지 관리하거나 추가하기가 더 어려워질 수 있습니다.
복잡한 시스템을 완전히 대체하는 것은 엄청난 사업이 될 수 있습니다. 경우에 따라 아직 마이그레이션되지 않은 기능을 처리하도록 기존 시스템을 유지하면서 점진적으로 새 시스템으로 마이그레이션해야 합니다. 그러나 두 개의 개별 버전의 애플리케이션을 실행한다는 것은 클라이언트가 특정 기능이 있는 위치를 알아야 한다는 것을 의미합니다. 기능 또는 서비스를 마이그레이션할 때마다 새 위치를 가리키도록 클라이언트를 업데이트해야 합니다.
솔루션
특정 부분의 기능을 새로운 애플리케이션 및 서비스로 점진적으로 교체합니다. 백 엔드 레거시 시스템으로 이동하는 요청을 가로채는 외관을 만듭니다. 외관은 레거시 애플리케이션 또는 새 서비스로 이러한 요청을 라우트합니다. 기존 기능을 점진적으로 새 시스템으로 마이그레이션할 수 있으며, 소비자는 마이그레이션이 수행되었음을 모르고 동일한 인터페이스를 계속 사용할 수 있습니다.
이 패턴은 마이그레이션의 위험을 최소화하고 시간이 지남에 따라 개발 노력을 분산하는 데 도움이 됩니다. 사용자를 올바른 애플리케이션으로 안전하게 라우팅하는 외관을 사용하면 원하는 속도로 새 시스템에 기능을 추가할 수 있으며 레거시 애플리케이션이 계속 작동하도록 할 수 있습니다. 시간이 지남에 따라 기능이 새 시스템으로 마이그레이션되므로 레거시 시스템은 결국 "교착 상태에 얽히게"되며 더 이상 필요하지 않습니다. 이 프로세스가 완료되면 레거시 시스템을 안전하게 사용 중지할 수 있습니다.
문제 및 고려 사항
- 새 시스템과 레거시 시스템에서 사용할 수 있는 서비스 및 데이터 저장소를 처리하는 방법을 고려합니다. 둘 다 이러한 리소스에 나란히 액세스할 수 있는지 확인합니다.
- 향후 스트랭글러 그림 마이그레이션에서 쉽게 가로채고 대체할 수 있는 방식으로 새 애플리케이션 및 서비스를 구성합니다.
- 어느 시점에 마이그레이션이 완료되면 스트랭글러 그림 외관은 사라지거나 레거시 클라이언트용 어댑터로 발전합니다.
- 외관이 마이그레이션을 따라가는지 확인합니다.
- 외관이 단일 실패 지점이나 성능 병목 상태가 되지 않는지 확인합니다.
이 패턴을 사용해야 하는 경우
백 엔드 애플리케이션을 새 아키텍처로 점진적으로 마이그레이션할 때 이 패턴을 사용합니다.
이 패턴은 적합하지 않을 수 있습니다.
- 백 엔드 시스템에 대한 요청을 가로챌 수 없는 경우
- 대량 교체의 복잡성이 낮은 소규모 시스템의 경우
워크로드 디자인
설계자는 스트랭글러 무화과 패턴을 워크로드 디자인에 사용하여 Azure Well-Architected Framework 핵심 요소에서 다루는 목표와 원칙을 해결하는 방법을 평가해야 합니다. 예시:
핵심 요소 | 이 패턴이 핵심 목표를 지원하는 방법 |
---|---|
안정성 디자인 결정은 워크로드가 오작동에 대한 복원력을 갖도록 하고 오류가 발생한 후 완전히 작동하는 상태로 복구 되도록 하는 데 도움이 됩니다. | 이 패턴의 증분 접근 방식은 구성 요소 전환과 대규모 시스템 변경 중 위험을 완화하는 데 도움이 될 수 있습니다. - RE:08 테스트 |
비용 최적화는 워크로드의 투자 수익률을 유지하고 개선하는 데 중점을 줍니다. | 이 방법의 목표는 증분 방식으로 현대화하면서 현재 실행 중인 시스템에 대한 기존 투자를 최대화하는 것입니다. 따라서 낮은 ROI 교체 전에 높은 ROI 교체를 수행할 수 있습니다. - CO:07 구성 요소 비용 - CO:08 환경 비용 |
운영 우수성은 표준화된 프로세스와 팀 응집력을 통해 워크로드 품질을 제공하는 데 도움이 됩니다. | 이 패턴은 구현하기 더 위험한 대규모 시스템 변경보다 시간이 지남에 따라 작은 변경 내용으로 증분 교체가 선호되는 지속적인 개선 방법을 제공합니다. - OE:06 워크로드 개발 - OE:11 안전한 배포 사례 |
디자인 결정과 마찬가지로 이 패턴으로 도입될 수 있는 다른 핵심 요소의 목표에 대한 절충을 고려합니다.
다음 단계
- Martin Fowler의 StranglerFigApplication