기존의 모놀리식 애플리케이션을 현대적 애플리케이션(MSA, MicroService Architecture)으로 전환하는 과정에서 스트랭글러 패턴이 주로 사용되었다고 하며, 시스템이 정상적으로 돌아가면서 점진적으로 서비스 아키텍처로 분리해 간다는 방식이 궁금증을 자아냈습니다.
*Strangler Pattern의 어원은 Martin Fowler가 호주에서 본 Strangler figs라는 식물에서 기원되었습니다.
Strangler Pattern
스트랭글러 패턴은 '소프트웨어 시스템을 점진적으로 재구축하기 위한 디자인 패턴'으로, 이 패턴은 기존에 구축된 레거시 시스템을 한 번에 완전히 대체하는 대신, 시스템의 일부를 점진적으로 대체하면서 새로운 시스템으로 전환하는 방식입니다.
예를 들어 모놀리식 아키텍처를 MSA로 전환한다고 했을 때, 기존에 구축된 기능들을 한 번에 서비스 아키텍처의 서비스로 옮기는 것은 예상치 못한 여러 가지 문제가 발생할 수 있습니다.
때문에 전체 시스템은 정상적으로 동작하는 상태에서 일부분씩 서비스 아키텍처로 코드를 분리해 나가는 것이 바로 스트랭글러 패턴입니다.
이미지 출처: https://microservices.io/patterns/refactoring/strangler-application.html
- 레거시 시스템의 일부를 새로운 애플리케이션 또는 서비스로 교체합니다.
- 일정 기간이 지난 후(새로운 애플리케이션 또는 서비스가 정상적으로 동작한다면), 대체된 레거시 기능을 제거합니다.
실제로 스트랭글러 패턴을 적용하여 시스템을 마이그레이션 하는 과정은 위 두 작업을 계속 반복하는 것인데요.
당연하게도 이 과정은 기존의 레거시 시스템의 규모가 크면 클수록 많은 시간이 걸리게 됩니다.
(스트랭글러 패턴에서 프록시 서버를 통해 기존의 앤드포인트로 요청되던 백엔드 요청을 가로채 새로운 서비스로 보내주는 작업이 필요합니다.)
***
큰 규모의 시스템을 점진적으로 교체하는 방식이기 때문에 소규모 시스템에는 잘 쓰이지 않으며, 백엔드 서비스에 대한 요청을 가로챌 수 없는 경우 스트랭글러 패턴을 사용할 수 없습니다.
또한 프록시 서버로 인해 단일 장애 지점이나 성능 병목 현상이 발생할 수 있다는 주의점이 있습니다.
< 참고 자료 >
'법, 용어 > 용어' 카테고리의 다른 글
앱의 종류 : 네이티브 앱 vs 웹 앱 vs 하이브리드 앱 (0) | 2023.09.05 |
---|---|
검사 검수 차이 (0) | 2023.08.31 |
회계_부기_사개치부법 (四介治簿法) (0) | 2023.08.25 |
3단 뛰기 용어 도움닫기, 발구르기, 점프 (0) | 2023.08.25 |
SPA (Single Page Application)란 (0) | 2023.08.23 |