MSA - 제발 찢어 써

IRISH·2023년 10월 21일
0

IT지식

목록 보기
8/12
post-thumbnail

공부 목적

  • 회사에서 현재 내부 프로젝트를 개발하고 있는데, 이 내부 프로젝트가 완성되고 나면 이를 변형해서 건설 업체 등에 팔고자 계획하고 있다.
  • 뭐 어느 분야의 업체에 판매를 하든, 조직도 / 업체 및 인원 관리 등 다양한 서비스를 구매 회사가 원하는 방식대로 초기 SETTING해주고, 추가적인 서비스는 ADD-ON해서 서비스를 가용할 목적이다.
  • 이를 위해서는 초기 SETTING에 들어가는 서비스와 ADD-ON하는 서비스 모두, MSA를 접목해서 개발을 해야 한다.
  • 따라서, MSA가 무엇인지 공부해보자!

MSA 등장배경 / 정의 및 사용 목적

MSA의 등장배경

MSA의 등장배경은 Monolithic Architecture의 단점으로 인해 생겼다.

  • 기존 개발 방식 : Monolithic Architecture
    • Monolithic Architecture란, 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태
    • 규모 프로젝트에는 Monolithic Architecture가 훨씬 합리적
      • 간단한 Architecture이고, 유지보수가 용이하기 때문
    • 일정 규모 이상의 서비스, 혹은 수백명의 개발자가 투입되는 프로젝트에서 Monolithic Architecture은 뚜렷한 한계가 존재
      • 서비스/프로젝트가 커지면 커질수록, 영향도 파악 및 전체 시스템 구조 파악의 어려움
      • 빌드 시간 및 테스트시간, 그리고 배포시간이 기하급수적으로 늘어남
      • 서비스를 부분적으로 scale-out하기가 힘듦
      • 부분의 장애가 전체 서비스의 장애로 이어지는 경우가 발생

즉, 프로젝트가 큰 규모인 상황 속에서, 변경 및 확장을 하고자 할 때 Monolithic Architecture 방식은 불리하다는 것이다.
큰 규모의 프로젝트에서는 MSA 방식이 적합하다고 여겨진다.

MSA의 정의

  • 큰 프로젝트에서 보다 유연하게 서비스를 [확장 / 유지보수 / 제거]하기 위해 큰 서비스를 작은 독립적인 서비스로 분리하여 개발하는 것

MSA의 사용 목적

  • 각각의 서비스는 그 크기가 작을 뿐, 서비스 자체는 하나의 모놀리틱 아키텍쳐와 유사한 구조를 가짐
  • 각각의 서비스는 독립적으로 배포가 가능해야함.
  • 각각의 서비스는 다른 서비스에 대한 의존성이 최소화 되어야함
  • 각 서비스는 개별 프로세스로 구동 되며, REST와 같은 가벼운 방식으로 통신되어야 함.

MSA의 장점 및 단점

장점

  • 배포(deployment) 관점

    • 서비스 별 개별 배포 가능 (배포 시 전체 서비스의 중단이 없음)
      • 요구사항을 신속하게 반영하여 빠르게 배포할 수 있음.
  • 확장(scaling) 관점

    • 특정 서비스에 대한 확장성이 용이함.
      • 클라우드 사용에 적합한 아키텍쳐.
  • 장애(failure) 관점

    • 장애가 전체 서비스로 확장될 가능성이 적음
      • 부분적 장애에 대한 격리가 수월함
  • 신기술 적용의 유리함

단점

  • Monolithic Architecture 방식보다 상대적으로 복잡한 아키텍처임
  • 전체 서비스가 커짐 => 복잡도가 커짐
  • 성능
    • 서비스 간 호출 시 API를 사용하기 때문에, 통신 비용이나, Latency가 그만큼 증가
  • 테스트 / 트랜잭션
    • 서비스가 분리되어 있기 때문에 테스트와 트랜잭션의 복잡도가 증가하고, 많은 자원을 필요로 함
  • 데이터 관리
    • 데이터가 여러 서비스에 걸쳐 분산되기 때문에 한번에 조회하기 어려움
    • 데이터의 정합성 관리하기 어려움

느낀점

  • 큰 프로젝트에서는 확장 / 제거 등의 용이성을 위해서 한 곳에 다 개발하는 Monolithic Architecture 방식보다는 여러 독립 서비스로 개발해서 필요에 따라 넣고 빼는 게 좋다!
  • 사실, 전공생 시절에 대부분의 팀 프로젝트가 Monolithic Architecture 방식으로 진행이 됐다. 그때 내가 팀장이자 PM이었는데, 작은 서비스면 한 곳에 다 넣어도 괜찮을 지 몰라도, 큰 서비스면 어떻게 해야하는지에 대한 의문이 있었다.
  • 이번 공부 덕분에, MSA에 대한 장점을 알게 됐고, 회사 프로젝트를 통해 빨리 MSA 실무 경험을 해보고 싶다.

참고

https://velog.io/@tedigom/MSA-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1-MSA%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-3sk28yrv0e

profile
#Software Engineer #IRISH

0개의 댓글