본문 바로가기
Develop/CS(Computer Science)

[CS] What is MSA?

by 초코칩프라푸치노 2021. 7. 30.

 

Micro Service Architecture의 약자로 System Architecture 종류 중 하나이다.

Monolithic Architecture

  • 소프트웨어의 모든 구성 요소(서비스)들이 하나의 프로젝트로 통합되어 있는 형태
  • 소규모 형태의 프로젝트에 적합
    • 하나로 통합된 간단한 아키텍쳐면서 프로젝트 규모가 작을수록 유지보수가 편하다. 구조가 단순한만큼 소규모 프로젝트를 바로 만들고 빌드, 테스트, 배포가 용이하다.
  • 프로젝트 참여 개발자가 수백명 이상이거나 프로젝트 규모가 크다면 부적합하다.
    • 빌드/테스트 시간이 기하급수적으로 증가할 수 있고, 모듈들의 결합도가 큰 경우 일부분에서 Error가 발생할 경우 전체 Error로 이어진다.
    • 하나의 덩어리 프로젝트이기에 이부분의 수정을 위해 전체를 다시 배포해야한다.
    • 부분적으로 특정 언어나 기술을 사용하고 싶어도 프로젝트 내에서는 통일되어야 한다.

MSA -  Micro Service Architecture

  • 하나의 큰 애플리케이션을 작은 애플리케이션으로 쪼개서 변경이 쉽게하도록 하고, 쉽게 작은 애플리케이션을 조합하게 할 수 있는 아키텍쳐 방법
  • 대규모 형태의 프로젝트에 적합
    • 초기 아키텍쳐 구성이 힘들지만, 추후 대형 프로젝트를 효과적으로 새로운 서비스를 배포하고 유지 보수할 수 있다.
  • 배포 시간을 최소화하고 부분적 스케일 아웃이 가능하다.
    • 작은 어플리케인션들이 각자 독립적인 컴포넌트이기 때문에 새로운 서비스를 위한 일부분만 새로 배포를 하면된다.
    • 특정 서비스에 대해 상당 트래픽 발생할 것이 염려된다면 해당 서비스만 스케일 아웃을 할 수 있다.

 

 

정리

  • MSA는 복잡한 웹 시스템에 맞춰 개발된 Rest API기반의 아키텍처 스타일이다. MSA가 유행을 하고 있지만 꼭 정답은 아니고, 업무나 비즈니스 특징에 따라 적절한 아키텍처가 선택되어야 한다. 근래의 아키텍처 모델은 시스템에 대한 설계 뿐만 아니라 팀의 구조나 프로젝트 관리 방법까지 달라지기 때문에 프로젝트에 미치는 영향이 매우 크며, 때문에 거시적인 관점에서 고려할 필요가 있다.
  • MSA가 필요하다고 해도 꼭 시작을 MSA로 해야 하는 것은 아니다. MSA가 서비스의 재사용성, 유연한 아키텍처 구조, 대용량 웹 서비스에 적합한 구조 등 많은 장점을 가지고 있지만 개개인의 높은 숙련도가 필요한 편이다. MSA를 구축한 많은 기업들이 시작은 Monolithic 시스템으로 시작하여 팀원들의 숙련도를 높이고 피드백을 통해 시스템을 발전 시키는 과정에서 MSA로 전환한 사례들도 있다. 이처럼 프로젝트의 목적이나 팀의 상황 및 수준에 맞는 유연한 선택이 필요하다.

 

Monolithic vs MSA

 

반응형

'Develop > CS(Computer Science)' 카테고리의 다른 글

[CS] HTTP & HTTPS  (0) 2021.08.31
[CS] RESTful API 명명법  (0) 2021.08.30

댓글