https://microservices.io/patterns/refactoring/strangler-application.html
Chris Richardson의 Strangler Application 위 내용 요약 + 첨언
우선, MSA를 도입하기로 마음먹은 경우, 그 필요성에 공감하고
그 다음에 필요한 질문일 것이다.
How do you migrate a legacy monolithic application to a microservice architecture?
기존의 큰 Monolith를 Service로 쪼개서 구현해야하는데 어떻게 쪼개갈 것인가에 대한 질문이다.
쪼개가는 방법을 이행전략이라고 한다면 이행전략에는 크게 2가지가 있다.
첫번째, Big Bang
현재의 큰 Monolith를 여러 서비스들로 분리해서 전면 재개발하는 방법으로, 수 년의 시간이 필요하고 그 사이에 추가/변경 요구사항관리 등의 어려움, 구성원들의 내재화 역량 등의 문제로 이 보다는 아래 방법을 권장한다. (권장이 아니라 반드시 그렇게 해야한다)
두번째, Incrementally Refactoring (점진적 개선)
지금 설명하려는 Strangler Patter or Application 이라는 전략이 바로 점진적 개선이라는 이행전략이다.
MSA를 정의했던 마틴 파울러가 열대우림을 지나다가 좌측과 같은 나무를 보고 착안했다고 들었다.
큰 나무위에 가늘게 기생하는 나무들이 자기도 햇볕을 보겠다고 감고 위로 올라가는데 이 기생나무가 너무 많아지면 결국 아래의 큰 나무는 죽게된다는 이야기다.
큰 나무를 Monolith로, 작은 기생 나무를 Microserivce 로 생각하면 서비스들이 조금씩 늘어 결국에는 Monolith를 없앨수 있다는 생각이다. 'Strangle' 이 목졸라 죽이다, 교살하다라는 뜻으로 Microserivce 들이 잘? 자라면 Monolith를 교살할 수 있다는...
나무 그림을 바탕으로 Chris Richardson이 제시하는 이 그림을 보면 이해가될것이다. 노란색 서비스를 한두개씩 떼어내가다 보면 결국 Monolith는 없어지겠구나... 노란색 서비스는 기존의 ASIS 기능을 그대로 떼어내기만한 서비스이고 녹색 서비스는 ASIS에 없던 새로운 기능을 포함한 서비스라는 구분정도만 하면 되겠다.
Chris Richardson은 이렇게 설명을 끝내고 있지만, 이러한 Strangler 라는 이행전략의 행간에는 중요한 것들이 숨어있다. 위의 그림만 보면 단순하게 '그래 그냥 위의 그림처럼 쪼개서 없애면 되겠네' 하지만 막상 '작전(이행전략 또는 로드맵)'을 짜려면 쉽지 않다. 우선 아래 3가 측면을 보자.
1. 노란색 녹색 들의 서비스 식별
노란색 녹색과 같은 서비스들을 어떻게 식별할 것인가?
저 서비스들이 최종적으로 몇 개나 될것인가?
저 서비스들을 모두 식별해두고 시작해야하나, 진행하면서 식별해야하나?
2. 몇 단계, 어느정도의 기간에 걸쳐서 이행할 것인가
위의 그림을 보면 4단계 이상의 과정을 거쳐서 최종적으로 Monolith가 사라지게되는데 몇 단계를 거쳐야할까?
각 단계별로 떨어지는 노란 서비스와 추가되는 녹색 서비스가 얼마나 되나?
각 단계별 어느정도 기간이 필요한가?
끝 단계까지 까서 Monolith가 없어져야 하나? 어느정도까지 진행하다 Monolith를 그냥 두면 안되나?
최종 단계가 끝나려면 어느정도 기간이 필요한가?
비용은?
3. 업체, 조직, 구성원의 내재화
우리 스스로 자체적으로 할 수 있나?
스스로 못한다면 이러한 요구사항을 내고 응찰하는 수행사에 맡겨야하나?
발주사와 수행사가 같이 한다면 R&R이 어떻게 되나?
수행사가 이러한 전략을 수립하면 알아서 수립할 수 있을까? 발주사는 어디까지 도움을 줘야하나?
단계별로 필요한 전문 인력? 개발자까지 총 인력? 비용?
발주사든 수행사든 이러한 전략을 이행하려면 어떤 준비가 필요한가?
위의 3가지 꼭지에 플러스 알파로 수많은 질문이 꼬리를 물게되는데...
지금 당장 답할 수 없지만(별도의 챕터에서 추가 설명이 필요하다) 우선 Strangler Pattern, Incrementally Refactoring에 대한 개념이라도 알고 있다면 그 다음을 시작(또는 논의)할 수 있을 것이다.
'MSA해설 > Monolith to MSA' 카테고리의 다른 글
Strangler Pattern 예 (0) | 2022.04.02 |
---|---|
Monolith to MSA : 10가지 원칙 (0) | 2022.03.11 |
Monolith to MSA (Refactoring a monolith to microservices) (0) | 2022.03.09 |