Monolithic Architecture VS Micro Service Architecture

Gunjoo Ahn·2022년 9월 3일
0

Monolithic

기존에 사용하던 전통적인 방식은 Monolithic Architecture 스타일이다. 모든 서비스가 한 덩이의 어플리케이션에서 전부 돌았다. 장단점은 모두 단순함에서 온다. 소규모 프로젝트의 경우 이 방식이 합리적일 경우가 많다.

👍장점

모든 서비스를 하나의 어플리케이션으로 만들었으니 배포가 쉽다.
DB Transaction 관리가 쉽다.
여러 복합적인 서비스 비즈니스 통합 테스트가 프로세스내 함수 콜로만 이루어져 쉽다.

👎단점

하나의 서비스가 문제가 발생하면 다른 상관 없는 서비스도 멈출 수 밖에 없다.
새로운 서비스를 개발하여 넣기가 쉽지 않다.
새로운 기술을 적용하기 힘들다.
Scale out 시 전체 서비스를 모두 scale out하는 수 밖에 없다
한 어플리케이션이 사용하는 모든 자원을 전부 다루기에 효율적인 자원 관리가 힘들다.

MSA

Micro Service Architecture 의 줄임말로서 하나의 큰 어플리케이션을 여러 개의 작은 어플리케이션으로 나눠 만드는 아키텍쳐이다. 서비스를 나누게 되면서 Monolithic 방식의 단점을 많이 극복하게 되었다.

👍장점

서비스간 연관성을 낮출 수 있다. 하나의 서비스가 멈추더라도 다른 서비스는 지속해서 서비스할 수 있다.
각 서비스별로 독립적으로 빌드하고 테스트할 수 있다.
서비스가 분리되어 있기에 유연하게 기술들을 적용할 수 있다. 예를 들어, 여러 서버에 다양한 프레임워크를 적용할 수 있다는 것이다.
Scale out시 필요한 서비스만 scale out할 수 있다.

👎단점

서비스간의 통신을 Monolithic에서 함수 호출로 끝날 일을 MSA에서는 네트워크 통신을 통하여 메시지를 교환하기에 성능적으로 문제가 있을 수 있다.
DB Transaction이 불편하다. 서버간의 트랜잭션 처리를 해야할 경우 신경써야할 부분이 많아지게 된다.
여러 관리에 신경을 써야하기에 개발 시간이 증가한다.

서버 분리의 기준

기본적으로 기능별로 분리하고 많은 트래픽이 예상되는 부분을 따로 분리한다.

Reference

https://velog.io/@ubrain/Monolithic-vs-MSA
https://ssungkang.tistory.com/entry/MSA-Monolithic-Architecture-VS-Micro-Service-Architecture

profile
Backend Developer

0개의 댓글