이론 정리

MA(모놀리식)와 MSA에 관하여

철매존 2022. 4. 7. 16:10
728x90
MA(Monolithic Architecture)

사전상으로 monolithic이란 단단히 짜여 하나로 되어 있는 정의되어 있다.
그 말 자체에서 알 수 있듯, 모놀리식 아키텍쳐란 전체 서비스를 하나의 서버에서 구동시키는 것이다.

간단히 말하자면 모든 서비스가 완전히 통짜로 짜여있다고 생각하면 편하다.
굉장히 많은 기업에서 아직 사용중인 방법이며, 명확한 장단점이 존재한다.

MA의 장점

  1. 먼저 모든 기능들이 하나의 시스템 상에서 동작한다.
    즉 개발 진행에 있어 속도가 빠르다는 장점이 있다.
  2. End-to-End 테스트가 간편하다.

MA의 단점

  1. 유지보수할 때에 어려움이 따른다. 하나의 프로젝트에 모든 서비스가 동작하기 때문에 이를 고치기 위해서는 많은 내용들을 확인해 보아야 한다.
  2. CDCI를 진행할 때에도, 하나의 서비스를 변경하고 적용하려면 전체 서비스를 재빌드하고, 배포해야 한다.
    또, 만약 오류가 발생하면 전체 서비스가 중단되어 버릴 것이다.

MSA(Micro Service Architecture)

이름 그대로 작은 서비스들의 집합이다.
MSA는 여러개의 작은 서비스들로 구성되어 있고, 각각의 서비스는 Gateway를 통해 배포된다.

모놀리식과 반대로 서비스들을 하나씩 만들어서 원하는 서비스를 사용하기 위해 Gateway를 사용하고, 마치 RESTful의 방식처럼 api를 사용한다.

MSA의 장점

  1. 유지보수할 때에 편리하다. 서비스 별로 관리자가 존재하면, 해당 관리자는 자신의 서비스를 유지보수하면 되기 때문이다.
  2. 만약 CDCI진행시 해당하는 서비스만 변경하고 배포하면 된다.
    오류가 존재하면 해당 서비스만 중단될 것이다. 또 위의 장점들을 통해 이 오류의 수정도 용이할 것이다.
  3. 추가로 개인적으로 생각하는 MSA의 장점 중 하나는 언어를 취사선택할 수 있다는 것이다. Spring, DJango, Laravel등 다양한 언어와 프레임워크가 있는데, 각각의 언어들의 장단점을 통해 최적의 프로젝트를 구성할 수 있고, 회사의 방침에 따라 언어 적용이 수월해진다.

MSA의 단점

  1. End-to-End 테스트가 불편해진다.
  2. 위의 2번 장점과는 조금 상반되는 것이지만, 에러의 모니터링은 조금 힘들 수 있다.
  3. gateway관리를 통해 각각의 서비스를 호출하기 때문에 추가적인 공수가 필요하고, 여기서 에러가 발생할 가능성 또한 존재한다.

결론

이전에는 MA방식으로 개발되었고, 현재는 MSA를 적용하는 서비스 기업이 많아지고 있다.

최근 들어 큰 시스템을 가진 기업들이 많이지기 때문에 MSA의 수요가 점점 늘어날 것이다.

시스템 간에 우열은 없지만…MSA을 잘 알아두는 것은 큰 도움이 되지 싶다.

'이론 정리' 카테고리의 다른 글

RBAC과 ABAC 기초 정리  (0) 2022.08.18
XSS와 sql injection에 관하여  (0) 2022.06.11
REST api의 기초  (0) 2022.02.27
마크업 / 마크다운  (0) 2021.11.07
HTML 기본 태그 정리  (0) 2021.11.06