Monolithic vs MSA

Lee Seung Jae·2022년 2월 21일

모놀리식MSA에 대해 차이를 정리해 보겠다.

MSA가 등장하기 이전에 하나의 서비스로 하나의 애플리케이션을 만드는 것.

이게 바로 Monolithic Architecture(모놀리식 아키텍처) 라고 한다.

MSAMicro Service Architecture 의 줄임말로 하나의 큰 애플리케이션을

작은 애플리케이션으로 나눠서 만드는 아키텍쳐이다.

Monolithic Architecture

사전적 정의를 보면

스크린샷 2022-01-18 오후 10 55 13

단단이 짜여 하나로 되어있는 이라는 뜻으로 나와있다.

그렇기에 이 애플리케이션의 규모는 거대하다.

장점

  • 로컬 환경에서의 개발 편리성
  • 통합 시나리오 테스트 용이
  • 배포 간단

단점

  • 코드의 수정 및 추가가 힘들다
  • 효율적 자원관리가 힘들다
  • 자주 업데이트 불가능
  • 신기술 적용의 힘듦
  • 부분적인 서버의 장애 -> 전체 장애로 번짐
  • Scale Out 이 불가능하다

Scale Out이란?

서버를 운영중에 있을 때 사용자가 갑자기 급격하게 증가 할 때,

더 많은 서버 용량, 그리고 성능이 필요해지는데

이 때, 서버를 여러대 추가하여 확장시키는 방법을 말한다.

반대로 Scale Up 이 있는데,

이는 여러대를 추가하는 방식이 아니라 단순하게 보면

그냥 서버 컴퓨터의 성능을 증가시켜주는 것이다.

스크린샷 2022-01-18 오후 11 03 07

모놀리식의 장단점을 보면 단순하다.

모놀리식, MSA 모두 각각의 장단점이 있기 때문에 상황에 따라 달라질 수 있다는 점은 주의해야한다.

일단 하나의 애플리케이션이기 때문에 단순해서 좋다. 그래서 소규모 개발일 때는 모놀리식이 더 적합할 것 같다.

근데 이 프로젝트의 규모가 커진다면 단순해지면 안좋아 진다.

의존성

객체지향 프로그래밍을 하다보면 의존성이라는 단어는 참 많이 접하게 된다.

이것이 아키텍쳐에도 적용하여 생각하면, 너무 많은 기능들을 구현했고,

그 기능들이 하나의 애플리케이션에 묶여있으니까, 서로간의 의존성이 높아지고

이해할 수 없는 어려운 코드도 만들어 질 것이다.

결국 이런 문제를 빚어 커지면 커질 수록 고려하게 되는 것이 바로 MSA이다.

Micro Service Architecture

단어들만 봐도 의미를 알 수 있겠다.

현 회사에 도메인은 여러가지가 있다.

주문, 배송, 결제, 등등... 커머스이기 때문에 들어가는 당연한 도메인들이다.

이런 도메인들을 하나씩 분리하는 것이 바로 MSA

장점

  • 빌드 및 테스트 시간 단축
  • 유연한 기술 적용
    • 어떤 한 언어와 프레임워크에 종속되지 않는다.
  • Scale Out 가능
  • 서비스간 연관성 낮음
    • 한 서버의 문제가 다른 서비스에 영향을 끼치지 않는다.

단점

  • 성능 이슈
    • 모놀리식의 경우 다른 기능을 호출할 때 메소드를 호출한다.
    • MSA는 네트워크 비용이 발생하게 된다.
  • 트랜잭션
    • 다른 서버들간의 트랜잭션 처리를 할 경우 불편해질 수 있다.
  • 개발 시간 증가
    • 서버가 분리됨에 따라 관리가 필요해짐
    • 여러가지 신경을 많이 쓰며 관리해주어야 한다.

정리

결국 MSA가 좋다? 그건 아니다. 이렇게 놓고보니 정답도 없다.

이거는 알 수 있었다. 🤣

모든 것을 다 분리한다기 보다는

하나의 애플리케이션중 특정 서비스 부분의 트래픽이 월등하게 많다면? 🤔

그러면 그 부분을 따로 떼어내서 서버를 스케일 아웃해서 증가시키고

기준을 트래픽이로 잡아 분리하는 게 좋아보인다.

그리고 무엇보다 근본인 프로젝트, 회사 규모에 따라 상황에 맞는 적절한 아키텍쳐를 잡아가는 것이 바람직한 선택이다.

profile
💻 많이 짜보고 많이 경험해보자 https://lsj8367.tistory.com/ 블로그 주소 옮김

0개의 댓글