Strangler Pattern
모놀리틱 아키텍처로 된 시스템이 계속 자라나면, 더이상 관리할 수 없는 수준이 된다.
그리고 아키텍처가 복잡해지거나, 비즈니스 로직이 파편화되면 코드를 관리하기 어려워진다.
그러다보면 배포하기도 까다로워지고, 배포가 무서워지기도 한다.
이럴 땐 버티거나, 서비스 아키텍처로 코드를 리팩토링해야한다.
서비스 아키텍처로 서비스를 한번에 옮기는 것은 리스크가 있다.
시스템은 정상적으로 돌아가면서, 점진적으로 서비스 아키텍처로 코드를 분리해나가는 디자인 패턴이 Strangler Pattern이다.
개선 방법
1. 분리해내야하는 도메인을 Service Layer으로 리팩토링을 해야한다.
2. 그리고 분리해낸 도메인의 API가 호출되면, Proxy 단에서 라우팅을 분기처리해준다.
3. 신규 구축된 서버로 리다이렉트 시켜준다.
위의 절차를 반복하면서, 점진적으로 마이그레이션을 해나가야한다.
참고
Micro service architecture for legacy code base.
https://medium.com/@maheshwar.ligade/micro-service-architecture-for-legacy-code-base-1f7e63c5a4a8
Reengineer legacy Rails applications
http://teotti.com/reengineer-legacy-rails-applications/
Deploy parts of a Ruby on Rails application
http://teotti.com/deploy-parts-of-a-ruby-on-rails-application/
관련 키워드 : #strangler_pattern #big_ball_of_mud
'소프트웨어-이야기 > 아키텍처' 카테고리의 다른 글
동영상 플랫폼 이해하기 (1) - HLS (0) | 2019.12.19 |
---|---|
(GraphQL) GraphQL 개념잡기 (2) | 2019.08.15 |
트위터 팔로워 타임라인 시스템 분석 (0) | 2019.07.29 |
(카오스 엔지니어링)카오스 몽키 (1) | 2018.03.21 |
(넷플릭스) 데이터과학을 기반으로한 넷플릭스의 스트리밍 최적화 (0) | 2017.05.10 |