MSA - 스트랭글러패턴

정명진·2023년 9월 6일
0
post-custom-banner

스트랭글러 패턴이란 기존 레거시 시스템을 점진적으로 MSA화 시켜나가는 패턴이다. 즉 말라죽인다는 의미를 가져 교살자 패턴이라고도 불린다.

언제 사용하는가?

시스템 사용 기간으로 인해 개발 도구, 호스팅 기술뿐만 아니라 구축된 시스템 아키텍처까지도 점차 사용하지 않게 될 수 있다. 새로운 기능이 추가되면 애플리케이션의 복잡성이 매우 증가하고 새 기능을 유지 관리하거나 추가하는 것은 더욱 더 어려워집니다.

복잡한 시스템을 완전히 교체하는 것은 매우 어려운 작업이 되며(개발후 실패 비용, 기존 운영중이라면 더욱 위험) 경우에 따라 아직 마이그레이션되지 않은 기능을 처리하도록 기존 시스템을 유지하면서 점진적으로 새 시스템으로 마이그레이션을 해야 하는 과정이 필요할 수 있습니다. 그러나 애플리케이션의 두 개의 별도 버전을 실행하려면 클라이언트가 특정 기능의 위치를 파악해야 하므로 좋지 않습니다. 기능 또는 서비스를 마이그레이션할 때마다 새 위치를 가리키도록 클라이언트를 업데이트해야 하기 때문입니다.

그래서 나온게 스트랭글러 패턴

특정 부분의 기능을 새로운 애플리케이션 및 서비스로 점진적으로 교체하는 기법입니다. 백 엔드 레거시 시스템으로 이동하는 요청을 가로채는 외관을 만들고 레거시 애플리케이션 또는 새 서비스로 이러한 요청을 라우트합니다. 기존 기능을 새로운 시스템으로 점차적으로 마이그레이션할 수 있으며, 소비자는 마이그레이션이 발생한 것을 인식하지 못하고 동일한 인터페이스를 계속 사용할 수 있습니다.

아래 그림은 해당 과정의 예시입니다.


스트랭글러 패턴을 통해 마이그레이션의 위험을 최소화하고 시간이 지남에 따라 개발 활동을 분산할 수 있게 됩니다. 사용자를 안전하게 라우팅하는 외관을 사용하여 레거시 애플리케이션이 계속 작동하도록 하면서 원하는 속도로 새 시스템에 기능을 추가할 수 있습니다. 시간이 지남에 따라 새 시스템에 기능이 마이그레이션되므로 결국 레거시 시스템은 "스트랭글되고" 더 이상 필요가 없습니다. 이 프로세스가 완료되면 레거시 시스템을 안전하게 사용 중지할 수 있습니다.

하지만 해당 패턴을 적용하기전에 다음과 같은 점을 고려해야 합니다.

  • 새 시스템 및 레거시 시스템 모두에서 잠재적으로 사용되는 서비스 및 데이터 저장소를 처리하는 방법을 고려합니다. 둘 다 이러한 리소스에 병행하여 액세스할 수 있는지 확인합니다.
  • 향후 스트랭글러 그림 마이그레이션에서 쉽게 가로채고 대체할 수 있는 방식으로 새 애플리케이션 및 서비스를 구성합니다.
  • 어느 시점에 마이그레이션이 완료되면 스트랭글러 그림 외관은 사라지거나 레거시 클라이언트용 어댑터로 발전합니다.
  • 외관에서 마이그레이션이 지속되는지 확인합니다.
  • 외관이 단일 실패 지점 또는 성능 병목 상태가 되지 않는지 확인합니다.
profile
개발자로 입사했지만 정체성을 잃어가는중... 다시 준비 시작이다..
post-custom-banner

0개의 댓글