이번에 회사에서 좋은 기회로 마이크로 서비스 패턴 저자이신 크리스 리처드슨님과 저녁식사를 함께할 자리에 참석하였는데 이때를 계기로 크리스님의 책을 읽어보기 시작했다. 이번 기회에 MSA에 대하여 고민과 생각을 많이 해보며 필자만의 생각을 정립할 필요가 있어보인다.
처음 애플리케이션을 개발할 적에는 모놀리식으로 시작하여도 비즈니스 복잡도가 높지 않고 사용자가 많지 않기에 괜찮다. 하지만 개발팀의 속도가 느려지고 수동으로 테스트해야하는 경우가 많아지며 지속적인 배포(CD)가 어려워질 경우 MSA를 고려해봐야 하는 타이밍이다. 더군다나 단일 소스 코드 상에서 존재하는 기술스택이 최신으로 대체할 수 없을 정도로 커지면 모듈로 분리하여 새롭게 만들어야할 수도 있다.
알다시피 모노리스에서 바로 MSA 구조로 전환하기엔 급진적인 부분이 없지 않다. 따라서, MSA로 전환하기 위해서는 멀티 모듈로 프로젝트를 구성하는 것이 필요하다. 여기서, MSA의 장점에 대하여 아래와 같이 정리해보았다.
그럼에도 MSA는 아래 단점들을 가지고 있는데 이때문에 도입 시 고려해야할 부분이 많은 것으로 보인다.
패턴 언어를 적용해야한다. 여기서 패턴언어란 무엇인가?흔히, 소프트웨어 코드에서 발생하는 이슈를 해결하는 방법을 정량화한 것이 디자인 패턴이라고 알고 있다. 이와 마찬가지로 MSA 전환 시 발생하는 이슈를 해결하는 정량화된 패턴이 존재한다. 다만, 뭐든지 트레이드오프가 존재하니 이를 잘 고려해야한다.