Skip to content

Latest commit

 

History

History
44 lines (33 loc) · 2.6 KB

msa.md

File metadata and controls

44 lines (33 loc) · 2.6 KB

Microservice Architecture(MSA)란?

작고 독립적인 서비스들의 집합으로 구성된 애플리케이션 구조

image

MicroService Architecture에서 각 서비스는 작고 독립적이며 느슨하게 결합되어 있음.
때문에 서비스들을 독립적으로 배포 및 전체 프로그램을 빌드한 뒤에 재배치하지 않고도 기존 서비스들을 업데이트 가능.

장점

  • 전체프로그램을 다시 배포하지 않고도 업데이트 가능
  • 독립적으로 개발 가능
  • 서비스 하나가 다운되더라도 전체 서비스에 영향을 끼치지 않음
  • 서비스를 독립적으로 확장가능, 리소스의 유연한 운용 가능

단점

  • 서비스간 통신방법이 필요하고 복잡
  • 서비스끼리의 테스트가 어려움
  • 복잡하고 독립된 구조로 인해 통합적인 유지관리가 어려워질 수 있음

MSA 사용하는 이유

MSA는 Monolithic Architecture를 쪼개서 독립적으로 구분하는 것
즉 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축
마이크로서비스는 완전히 독립적으로 배포가 가능하고 서로 다른 기술 스택이 사용 가능한 단일 사업 영역에 초점을 둠.

++ MicroService Architecture는 클라우드환경과 조합 GOOD.

Monolithic vs MSA?

image

각 서비스별로 DB를 나누었기 때문에 서비스들이 의존성 없이 돌아가고 배포에서도 자유로워 진다.
=> 핵심은 DB를 나누는 것 (의존성 최소화)

BUT 모놀리식의 한계점

① 일부 모듈의 변경사항 때문에 전체 어플리케이션 개발/운영 프로세스와 패키징에 영향을 준다.
② 모듈별 특성에 맞는 신기술 또는 구조를 적용하기 어렵다.
③ 모듈별 확장이 어렵다.

그 외

다등 MSA 를 무조건 적용하라고 하고 있진 않다.왜 사용해야 하는가에 대한 것이 중요하다고 말한다.
어떤 것이 좋다기보다는 왜 사용해야 하는지, 어떤 이점이 있는지에 초점을 맞춰서 사용해야 한다.

ex) 모놀리식 프로젝트 규모가 커질수록 유지 보수가 힘들고 팀원들의 코드를 합칠 때 전체적인 구조를 파악하고 이해하는데 시간이 꽤 걸려서 불편.
또한 내가 CI/CD를 담당했기 때문에 규모가 커질수록 배포 시간이 점점 오래 걸린다.