본문 바로가기

개발

Monolithic vs Micro Service Architecture(MSA)

Monolithic 어플리케이션

웹 서비스에 관련된 모든 코드들을 하나의 파일로 묶어 WAS에 배포하는 방식. 화면레이어, 어플리케이션레이어, 데이터레이어를 하나의 프로젝트에서 관리하는 것을 의미합니다. monolithic도 장점은 있습니다.

  • 개발, 테스트, 배포, 스케일아웃/인이 쉽습니다. 프로젝트 하나만 관리하면 되기 때문에,,,

그렇지만 단점이 제법 있습니다.

  • 프로젝트가 커지면 커질수록 로컬에서 개발환경을 띄울때 점점 느려집니다. 랩탑의 자원은 한정적이기 때문에,,,
  • 프로젝트의 기술 스택의 변경이나 리팩토링을 해야 할 경우 어려움이 있습니다. 왜냐하면 하나를 바꿈으로 전체 프로젝트에 어떤 영향을 줄지 파악하기 어렵습니다(프로젝트가 크기 때문).
  • 특정 컴퍼넌트가 에러로 인해 다운될 경우 프로젝트 전체가 다운이 될 수 있습니다. 또한 특정 컴퍼넌트가 리소스를 많이 잡아먹기 시작하면 다른 기능에도 문제가 생깁니다.
  • 특정 기능에 사용자가 몰려 스케일 아웃을 해야할 때 추가적인 서버에 프로젝트 전체를 배포해야해서 불필요한 기능들도 리소스를 사용하게 됩니다.

Micro Service Architecture 어플리케이션

작은 규모의 웹서비스들을 결합하여 하나의 큰 웹서비스를 만드는 방식으로 서비스 별로 프로젝트가 존재합니다. e커머스 사이트를 예로 들면 주문, 배송, 결제 등등 각 서비스별로 프로젝트가 존재하고 프로젝트간의 통신을 통해 동작합니다. 장점은 아래와 같습니다.

  • 오류로 인해 서로 다른 서비스간에 크게 영향을 미치지 않습니다. 예를 들면 네이버 메일 전송 문제가 있을 때 네이버 뉴스는 영향을 받지 않고 정상 서비스가 되는 것처럼 말이죠.
  • 코드 리팩토링이나 신규 기술 도입을 할 때 monolithic 어플리케이션보다 자유롭다. 영향도 파악을 해야할 범위가 좁기 때문입니다.
  • 서비스의 기능에 대해 monolithic 어플리케이션보다 이해하기 쉽습니다.
  • 서비스 별로 프로젝트가 구성되어 있어서 서비스 별 배포가 가능하여 좀 더 빠른 배포 및 테스트가 가능합니다.
  • 스케일 아웃시 필요한 서비스만 추가적으로 배포하여 전체 프로젝트를 배포하는 monolithic 어플리케이션보다 빠르게 가능하고 비용을 줄일 수 있습니다.

'개발' 카테고리의 다른 글

HTTP 메소드  (0) 2022.02.20
IE 11 LTR character 이슈  (0) 2022.02.15
Firebase 호스팅 이용  (0) 2022.01.20
자주 사용하는 git 커맨드  (0) 2021.06.24
Node Sass could not find a binding for your current environment:Windows 64-bit with  (0) 2021.05.10