모놀리식과 MSA에 대해 차이를 정리해 보겠다.
MSA가 등장하기 이전에 하나의 서비스로 하나의 애플리케이션을 만드는 것.
이게 바로 Monolithic Architecture(모놀리식 아키텍처) 라고 한다.
MSA는 Micro Service Architecture 의 줄임말로 하나의 큰 애플리케이션을
작은 애플리케이션으로 나눠서 만드는 아키텍쳐이다.
사전적 정의를 보면
단단이 짜여 하나로 되어있는 이라는 뜻으로 나와있다.
그렇기에 이 애플리케이션의 규모는 거대하다.
장점
단점
Scale Out 이 불가능하다Scale Out이란?
서버를 운영중에 있을 때 사용자가 갑자기 급격하게 증가 할 때,
더 많은 서버 용량, 그리고 성능이 필요해지는데
이 때, 서버를 여러대 추가하여 확장시키는 방법을 말한다.
반대로 Scale Up 이 있는데,
이는 여러대를 추가하는 방식이 아니라 단순하게 보면
그냥 서버 컴퓨터의 성능을 증가시켜주는 것이다.
모놀리식의 장단점을 보면 단순하다.
모놀리식, MSA 모두 각각의 장단점이 있기 때문에 상황에 따라 달라질 수 있다는 점은 주의해야한다.
일단 하나의 애플리케이션이기 때문에 단순해서 좋다. 그래서 소규모 개발일 때는 모놀리식이 더 적합할 것 같다.
근데 이 프로젝트의 규모가 커진다면 단순해지면 안좋아 진다.
객체지향 프로그래밍을 하다보면 의존성이라는 단어는 참 많이 접하게 된다.
이것이 아키텍쳐에도 적용하여 생각하면, 너무 많은 기능들을 구현했고,
그 기능들이 하나의 애플리케이션에 묶여있으니까, 서로간의 의존성이 높아지고
이해할 수 없는 어려운 코드도 만들어 질 것이다.
결국 이런 문제를 빚어 커지면 커질 수록 고려하게 되는 것이 바로 MSA이다.
단어들만 봐도 의미를 알 수 있겠다.
현 회사에 도메인은 여러가지가 있다.
주문, 배송, 결제, 등등... 커머스이기 때문에 들어가는 당연한 도메인들이다.
이런 도메인들을 하나씩 분리하는 것이 바로 MSA
장점
Scale Out 가능단점
MSA는 네트워크 비용이 발생하게 된다.결국 MSA가 좋다? 그건 아니다. 이렇게 놓고보니 정답도 없다.
이거는 알 수 있었다. 🤣
모든 것을 다 분리한다기 보다는
하나의 애플리케이션중 특정 서비스 부분의 트래픽이 월등하게 많다면? 🤔
그러면 그 부분을 따로 떼어내서 서버를 스케일 아웃해서 증가시키고
기준을 트래픽이로 잡아 분리하는 게 좋아보인다.
그리고 무엇보다 근본인 프로젝트, 회사 규모에 따라 상황에 맞는 적절한 아키텍쳐를 잡아가는 것이 바람직한 선택이다.