Monolithic vs MSA

Lee Seung Jae·2022년 2월 21일
1

모놀리식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개의 댓글