MSA 아키텍처의 장단점은 무엇인가요?
모노리틱아키텍처와 비교하여 MSA아키텍처의 장점과 단점은 무엇인가요?
모노리틱아키텍터로 개발된 기존의 프로그램을 MSA아키텍처로 변환하기 가장 좋고 쉬운 방법은 어떤것이 있을까요?
안녕하세요. 아하(a-ha) 프로그래밍 지식 답변자 입니다.
MSA 아키텍처의 경우 하나의 애플리케이션을 비슷한 기능을 하는 모듈끼리 묶어 수 많은 서비스로 쪼개어 서로 긴밀히 데이터를 주고받게 만든 아키텍처 입니다.
한 가지 부분에서 장애가 발생하면 전체 서비스 장애가 발생할 수 있는 모놀리틱 아키텍처와 비교할 경우 특정 모듈 장애가 발생했을 경우 해당 모듈만 잠시 끄고 고칠 수 있습니다. 어떻게 보면 이런게 장점일 수 있는데요, 서비스가 많아지면 많아질 수록 모듈은 쪼개지고 또 쪼개집니다. 그리고 이 쪼개진 모듈들을 관리하는게 하나의 일이 되어버리게 되는 것 이죠. 이러한 단점 때문에 Kubernetes 와 같은 프로젝트가 나온 것 이죠.
모놀리틱 아키텍처로 개발된 기존의 프로그램을 MSA로 변환하기엔 쉽지 않습니다. 애초에 설계부터 서로 다르기 때문에 거의 새로운 서비스를 만드는 것이나 다름 없습니다.
답변이 도움이 됐으면 좋겠습니다. 좋은 하루 되세요!
안녕하세요!
모놀리틱과 MSA는 서로 상반된 장단점을 가질수 있는데요.
가령 MSA로의 전환은 모놀리틱 프로젝트에서 단순한 함수의 호출로 이어지던 것이
네트워크 콜 ( http )로 전환될 수 있습니다. 당연히 성능적으로 조금은 떨어질수 있겠지요.
또 이렇게 관심사별로 수많은 MSA 프로젝트를 관리하시려면 많은 유지보수 비용이 들 수 있습니다.
가령 이메일 전송 서버가 분리되어 있는데, 이메일 전송 로직이 변경되면 관련된 api를 다른 MSA에서 모두 찾아서
일괄 변경해주어야 합니다.
장점으로는 특정 기능을 하는 서버만 확장/축소가 용이할 수 있습니다.
이벤트 문의가 많아 메일서버의 트래픽이 급증한다고 가정했을때, 다른 기능들은 그대로 둔채 이메일과 관련된 서버만
증설하고 관리할 수 있습니다. 또 부분의 장애가 전체로 퍼지는 것을 막을수 있습니다.
이밖에 더 많고 자세한 부분들이 있지만 관련된 부분들은 개발과정마다 상이할 수 있겠네요.
가령 트랜잭션의 관리 등은 상대적으로 어려워집니다.