Architecture Pattern

Strangler Pattern 이란 ?

Ed2024 2024. 11. 11. 00:15

1.개요

Strangler 패턴은 소프트웨어 아키텍트 **마틴 파울러(Martin Fowler)**가 처음 제안한 개념입니다. 그는 2004년에 자신의 블로그를 통해 Strangler 패턴의 개념을 발표했으며, 기존 시스템을 새로운 시스템으로 점진적으로 전환하는 방식의 유용성을 강조했습니다.

마틴 파울러는 호주에서 자생하는 "strangler fig" 식물이 기존 나무를 서서히 감싸고 대체하는 생장 방식에서 이 아이디어를 얻었습니다.

Source : https://www.gettyimages.com/photos/strangler-fig

이 패턴을 통해 기존 시스템을 점진적으로 대체할 수 있는 방법을 설명하면서, 특히 시스템 운영 중에도 리스크를 최소화하며 새로운 기능을 도입할 수 있는 점을 장점으로 언급했습니다. 이는 레거시 시스템을 모던한 아키텍처로 전환하는 과정에서 매우 유용한 접근 방식으로, 이후 다양한 대규모 시스템 현대화 프로젝트에서 널리 사용되었습니다.

 

2.Strangler 패턴의 주요 개념

  • 점진적인 대체 : 위의 그림에서 볼 수 있듯이 기존 시스템 전체를 한 번에 대체하는 것이 아니라, 작은 부분씩 점진적으로 새로운 시스템으로 전환합니다. 이를 통해 기존 시스템의 안정성을 유지하면서도 새로운 기능이나 개선을 도입할 수 있습니다.
  • 병렬 운영 : 기존 시스템과 새로운 시스템이 병렬로 운영되며, 점차 새로운 시스템이 기존 시스템을 대체합니다.   사용자는 단계적으로 새로운 시스템의 기능을 사용하게 되며, 모든 기능이 새 시스템으로 이전된 후에는 기존 시스템이 완전히 제거됩니다.
  • 프록시 또는 라우팅 : Strangler 패턴에서는 프록시를 사용하여 요청을 새 시스템으로 라우팅하거나, 기존 시스템의 일부를 새로운 시스템으로 리다이렉션하여 기존 시스템과의 통합을 원활하게 합니다.

 

3. Strangler 패턴의 활용 절차

  •  1) 새로운 기능 개발 : 기존 시스템에서 개선하고자 하는 기능을 새로운 시스템에서 개발합니다.
  •  2) 라우팅 설정 : 프록시를 사용하여 특정 요청을 새로운 시스템으로 라우팅하도록 설정합니다. 필요한 경우 기존 시스템과 통합되도록 합니다.
  •  3) 점진적 이전 : 특정 기능이나 모듈이 완전히 새 시스템으로 이전되면, 그 기능에 대한 기존 시스템의 코드를 비활성화하거나 제거합니다
  •  4) 완전한 전환 : 모든 기능이 새로운 시스템으로 옮겨지면 기존 시스템을 완전히 제거합니다.

 

4. Strangler 패턴의 활용 분야

Strangler 패턴은 주로 다음과 같은 상황에서 사용됩니다.

  • 레거시 시스템 현대화 : 오래된 시스템이 현재의 요구사항을 충족하지 못하거나 유지보수 비용이 증가할 때, 시스템 전체를 한 번에 대체하는 것보다 위험을 최소화하면서 점진적으로 새로운 시스템으로 전환할 수 있습니다.
  • 마이크로서비스 전환 : 기존 모놀리식 시스템을 마이크로서비스 아키텍처로 전환할 때 유용합니다. 기존 시스템의 일부 기능을 새로운 마이크로서비스로 이전하고 점차 모놀리식 시스템을 대체할 수 있습니다.
  • 기능 추가와 개선 : 새로운 기능을 기존 시스템에 추가하면서 기존 구조를 크게 변경하지 않고도 새로운 기능을 더 쉽게 도입할 수 있습니다.
  • 리팩토링 : 기존 코드베이스가 복잡해진 상황에서, 코드 전체를 한꺼번에 수정하기보다는 Strangler 패턴을 사용해 점진적으로 리팩토링할 수 있습니다.

 

5. Strangler 패턴의 장점과 단점

1) 장점 :

  - 점진적인 전환을 통해 시스템 안정성 유지

  - 리스크 분산 가능

  - 운영 중에도 지속적인 개선과 변화가 가능

2) 단점 :

  - 두 시스템의 병렬 운영으로 인해 운영 비용 증가

  - 모든 모듈을 완벽히 이전하기까지 시간이 오래 걸릴 수 있음

  - 복잡한 라우팅이나 프록시 설정 필요

 

6.결론

Strangler 패턴은 레거시 시스템을 새롭게 개선하고자 할 때 점진적으로 대체하는 안전한 접근 방식을 제공합니다.