MSA 아키텍쳐란?

Taro·2023년 10월 24일
post-thumbnail

모노리틱 아키텍처 (Monolithic Acrhitecture)

마이크로서비스(MSA)아키텍쳐의 반대되는 개념으로 어플리케이션의 모든 구성 요소가 한 프로젝트에 통합되어있는 형태

장점

  • 단순한 구조로 인해 개발에 용이함
  • 배포가 간단함
  • 확장성이 쉽다
  • 고가요성 서버 환경을 쉽게 만들수있다
  • End-to-End 테스트가 용이함

단점

  • 프로젝트 규모가 커짐에 따라 구동시간이 늘어나며, 빌드 및 배포 시간도 길어진다
  • 수정시 항상 전체를 다시 빌드하고 배포해야한다
  • 유지보수가 어렵다
  • 일부의 오류가 전체에 영향을 미치게 된다

마이크로서비스 아키텍처 ( Microservice Acrhitecture )

하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 만든 형태

장점

  • 서비스 별 개별 배포가 가능하다
  • 개발자의 자율성이 증가한다
  • 요구사항을 신속하고 빠르게 배포가능하다

단점

  • 서비스 간 호출시 API 를 사용하기 때문에 통신 비용 및 지연 시간이 증가
  • 데이터가 분산되므로 한번에 조회가 어렵다
  • 개발 및 관리가 어렵고 비용이 많이든다

언제 사용하는가?

프로젝트의 규모가 작을경우 모놀리식 아키텍쳐로 사용하다가 규모가 커지면 MAS 아키텍쳐로 전환하는게 좋다

  • [비용]
    MSA 아키텍처를 도입할 경우, 모놀리식 아키텍처에 비해 비용을 얼마나 절감할 수 있는가?

  • [개발 생산성]
    마이크로 서비스를 요구할 만큼 시스템 복잡도가 높은가? 또는 복잡도를 지나치게 높인 마이크로 서비스가 생산성을 저해하고 있진 않은가?

  • [운영]
    개발 팀에게 개발과 운영을 동시에 할 만큼 인프라가 준비되어 있는가? 또는 개발 인력이 마이크로 서비스를 관리할 역량이 있는가?

  • [배포]
    배포를 충분히 자주 하고 있는가? MSA는 빠른 변화에 대응하기 위해 도입하는 것인데, 회사마다 배포 일이 정해져 있고, 배포가 가끔 일어난다면 효율이 떨어진다.

profile
기록하며 공부하는곳

0개의 댓글