아하
생활

생활꿀팁

영민한사랑새68
영민한사랑새68

MSA 아키텍처의 장단점은 무엇인가요?

모노리틱아키텍처와 비교하여 MSA아키텍처의 장점과 단점은 무엇인가요?

모노리틱아키텍터로 개발된 기존의 프로그램을 MSA아키텍처로 변환하기 가장 좋고 쉬운 방법은 어떤것이 있을까요?

55글자 더 채워주세요.
2개의 답변이 있어요!
  • 재빠른황로245
    재빠른황로245

    안녕하세요. 아하(a-ha) 프로그래밍 지식 답변자 입니다.

    MSA 아키텍처의 경우 하나의 애플리케이션을 비슷한 기능을 하는 모듈끼리 묶어 수 많은 서비스로 쪼개어 서로 긴밀히 데이터를 주고받게 만든 아키텍처 입니다.

    한 가지 부분에서 장애가 발생하면 전체 서비스 장애가 발생할 수 있는 모놀리틱 아키텍처와 비교할 경우 특정 모듈 장애가 발생했을 경우 해당 모듈만 잠시 끄고 고칠 수 있습니다. 어떻게 보면 이런게 장점일 수 있는데요, 서비스가 많아지면 많아질 수록 모듈은 쪼개지고 또 쪼개집니다. 그리고 이 쪼개진 모듈들을 관리하는게 하나의 일이 되어버리게 되는 것 이죠. 이러한 단점 때문에 Kubernetes 와 같은 프로젝트가 나온 것 이죠.

    모놀리틱 아키텍처로 개발된 기존의 프로그램을 MSA로 변환하기엔 쉽지 않습니다. 애초에 설계부터 서로 다르기 때문에 거의 새로운 서비스를 만드는 것이나 다름 없습니다.

    답변이 도움이 됐으면 좋겠습니다. 좋은 하루 되세요!

  • 안녕하세요!

    모놀리틱과 MSA는 서로 상반된 장단점을 가질수 있는데요.

    가령 MSA로의 전환은 모놀리틱 프로젝트에서 단순한 함수의 호출로 이어지던 것이

    네트워크 콜 ( http )로 전환될 수 있습니다. 당연히 성능적으로 조금은 떨어질수 있겠지요.

    또 이렇게 관심사별로 수많은 MSA 프로젝트를 관리하시려면 많은 유지보수 비용이 들 수 있습니다.

    가령 이메일 전송 서버가 분리되어 있는데, 이메일 전송 로직이 변경되면 관련된 api를 다른 MSA에서 모두 찾아서

    일괄 변경해주어야 합니다.

    장점으로는 특정 기능을 하는 서버만 확장/축소가 용이할 수 있습니다.

    이벤트 문의가 많아 메일서버의 트래픽이 급증한다고 가정했을때, 다른 기능들은 그대로 둔채 이메일과 관련된 서버만

    증설하고 관리할 수 있습니다. 또 부분의 장애가 전체로 퍼지는 것을 막을수 있습니다.

    이밖에 더 많고 자세한 부분들이 있지만 관련된 부분들은 개발과정마다 상이할 수 있겠네요.

    가령 트랜잭션의 관리 등은 상대적으로 어려워집니다.