brunch

You can make anything
by writing

C.S.Lewis

by 안영회 습작 May 19. 2023

Strangler Fig 패턴과 점진적 IT 투자

베터코드 인사이트의 시작 22편

최근에 시스템을 활용한 비즈니스 혁신을 도모하는 일에 참여하고 있습니다. 레거시 시스템이 존재하고, 새로운 기능 구현은 당연하게 클라우드 위에 구현한다는 전제로 비즈니스 기능에 대한 이야기와 시스템 구조에 대한 이야기가 섞여서 논의되는 상황에서 어떻게 의사소통을 개선할 수 있을까 고민하는 중에 저에게만 익숙한 두 가지 개념이 떠올랐습니다. 이들을 다른 분들에게 설명할 수 있는 언어로 바꾸기 전에 스스로 정리하는 차원에서 글을 씁니다.


Strangler Fig 패턴

한다 하는 여러 사람들이 문헌으로 알린 패턴이고, 제 경험에서도 확신하는 패턴입니다. 거대한 레거시 시스템이 있는 상황에서 마이크로 서비스 아키텍처 혹은 분산 아키텍처를 활용하여 시스템 구조를 현대화(modernization)할 때 필수 패턴이라고 확신합니다.


왜 저런 생소한 단어를 쓸까 찾아본 일이 있습니다. 열대 지방에서 자라는 일종의 무화과나무인 Strangler fig를 은유로 쓰고 있습니다. 다른 나무에 기생하여 성장하는 식물인데, 아래 이미지를 보면 자신이 성장하면서  숙주가 된 나무를 죽음에 이르게 합니다.

이러한 자연 현상을 메타포로 레거시 시스템을 점진적으로 대체하는 과정을 설명하는 방식이죠.


'strangler'를 키워드로 구글링 해보면 쉽게 다양한 자료를 확인할 수 있습니다. 그중에서 직관적인 이미지 두 개를 가져왔습니다. 하나는 AWS 상에서 MSA를 적용하는 글에서 따온 그림입니다.[1] 레거시와 마이크로 서비스로 새로 만든 응용 프로그램의 공존을 묘사하면서 Facade라는 빌딩 블록에 초점을 맞춘 그림입니다.

두 번째 그림은 MSA 구루 크리스 리차드슨의 블로그에서 가져온 것입니다. 단계적이고 점진적인 적용을 시각화 한 그림입니다.


빅뱅은 절대 금물

이전에 <실전 마이크로서비스 아키텍처 적용>에서 당시 CTO 님이 <마이크로서비스 도입 이렇게 한다> 책에서 2장 제목 '마이그레이션 계획하기'를 보고 이렇게 말했던 상황을 다룬 일이 있습니다.

마이그레이션을 하지 말아야지

많은 사람들이 '마이그레이션'이라고 말하면 프로그램 수정에 따라 과거 데이터를 함께 바꾸는 일을 떠올립니다. 하지만, 그 책에서 말하는 '마이그레이션'은 많은 우리나라 IT 관계자들이 생각하는 그(?) 마이그레이션이 아닙니다. 그래서, '마이그레이션'이라는 표현 자체가 오해의 소지가 많은 좋지 않은 표현이라고 생각합니다.


대안은 무엇일까요? <프로덕트 매니저의 가장 어려운 역할>에서 제가 인용한 이미지를 또 불러 보겠습니다. 릴리즈를 통해 사용자 혹은 고객 피드백을 받으면서 진행해야 합니다. 다시 말해서 시장 가치를 꼭 확인하면서 시스템에 돈과 시간을 투자해야 합니다.

이 부분은 해당 글에서 다룬 프로덕트 개념 즉, 프로그램을 제품의 일부로 보는 시각을 가진 기업이 아니라도 마찬가지라고 생각합니다. IT 시스템을 잘 몰라서 비용으로만 보는 현업들이나 경영자에게도 비용을 쓴 명분 혹은 ROI에 입각해서 당위성을 설명하려면 반드시 그렇게 해야 합니다.


시장 가치를 확인하며 시스템 투자를 집행하기

이러한 점진적 시스템 개선은 제가 회사에서 SAFe를 쓰지 않으면서도 Lean Budgets 개념ART만 차용해 쓰는 이유이기도 합니다.

Lean Budgets은 스타트업이 쓰는 개념인 MVP를 규모가 있는 기업에서 쓸 수 있도록 변형한 개념이라고 볼 수 있습니다. 분기마다 임원이나 주요 사업 책임자와 비즈니스 기능 책임자가 모여 출시되는 비즈니스 기능에 대해 결정하는 방법을 말합니다.


이러한 점진적 전개는 의사결정이나 비용 집행 관점으로 설명한 내용이지만, 시스템 구성을 Strangler fig 패턴을 채용핸 점진적으로 개선하는 양상과 한 쌍처럼 잘 어울리는 방식이라고 할 수 있습니다.


주석

[1] Azure 공식 문서에서도 Strangler Fig pattern을 다루고 있습니다.


지난 베터코드 인사이트의 시작 연재

1. 추적성(Traceability)과 그 쓰임새

2. 우리가 시도하는 추적성은 무엇인가?

2. 베터 어드민의 아기 발걸음 그리고 작명

3. Funnel을 마케팅 말고 engagement 분석에?

4. 디지털 대전환기란 나에게 무엇인가?

5. 기술 부채는 무엇인가?

6. 폭포수 방식 설계는 기술 부채를 남긴다

7. 기술 부채는 낮은 코드 품질에 대한 것이 아니다

8. loosely-coupled: 빠르게 재구성하는 힘

9. 건강한 조직이 만들어지는 배경

10. 구축 사업 관리에 가려진 기술 부채

11. 기술은 쓰임새(use case)에 따라 고르고 조합한다

12. Ubiquitous Language 만들 결심

13. 회사 대표가 엔지니어에게 충분한 권한을 주는가?

14. Cloud Native가 무슨 말인가?

15. Cloud Native가 만드는 규모의 경제

16. Cloud Native 승자는 집적이 가능한 개발 조직

17. CNCF는 PaaS를 대체한다

18. 두레이를 이용한 팀 OKR 활용하기

19. 다시 보는 웹 앱의 미래

20. 내가 풀려는 문제가 무엇인지 분명히 하자

21. 개념과 실제의 간극을 메우는 기술적 직무

작가의 이전글 경영활동은 시행착오로 가능성을 확인하는 일
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari