
모놀리식이란 ?
- 모놀리식이란 하나의 서비스 또는 애플리케이션이 하나의 거대한 아키텍처로 이루어졌을 때 모놀리식(Monolithic)이라고 한다.
- 하나의 아키텍처로 이루어졌기 때문에 하나의 DB와 상호작용 한다.
모놀리식의 장점
- 모든 비즈니스 로직이 하나의 시스템으로 이루어져 있고 하나의 DB와 상호작용하기 때문에 환경 설정을 할 때 MSA에 비해서 수월하다는 장점이 있다.
- 테스트를 할 때 상대적으로 쉽다. 하나의 시스템에 모든 기능이 담겨있기 때문이다.
- 간단한 서비스를 만들 때 빠르고 간편하게 만들 수 있다.
모놀리식의 단점
기능이 많아지고 시스템의 규모가 커졌을 때 모놀리식의 단점이 나타난다.
- 프로젝트의 규모가 커짐에 따라서 애플리케이션 구동시간이 늘어난다.
- 프로젝트를 빌드하고 배포할 때 시간이 늘어난다.
- 코드가 몰려 있어서 개발자가 유지보수하기 힘들다. (분류가 안되어 있어서 직관적으로 어디있는지 떠올리기 상대적으로 힘들다)
- 일부분의 오류가 시스템 전체에 영향을 미친다. 그렇기 때문에 전체 시스템이 먹통이 될 수 있다.
- 기능별로 알맞은 환경 설정을 분류하기 어렵다.
MSA란 ?
Micro Service Architecture의 줄임말이다.
모놀리식의 단점을 극복하기 위해 나온 방식이다.
서비스에 따라 기능을 분류해서 구현한다. 그렇기 때문에 하나의 시스템으로 배포를 하는 것이 아니라 따로 배포를 한다.
MSA의 장점
- 서비스에 따라 시스템이 분리되어서, 개발자가 봐야할 코드들도 분류되어 있어서 찾기 쉽고 이해하기도 쉽다. 유지보수하기 상대적으로 수월하다.
- 하나의 서비스에 문제가 생겼을 때 전체 시스템의 영향을 끼치지 않는다. 그 부분만 수정하면 된다.
- 모놀리식에 비해서 빌드와 배포할 때 빠르다.
- 각 서비스에 맞게 언어와 프레임워크를 맞춤 설정할 수 있다.
MSA의 단점
- 서비스가 분리되어 있어서 각각의 모듈과 Gateway를 구동시켜야 한다. 상대적으로 통합 테스트를 하기 번거롭고 어렵다.
- 설계가 어렵다. 모듈 내에서 서로 통신할 때 발생하는 장애와 서버의 부하 등이 발생할 수 있기 때문에 어떻게 트랜잭션을 유지할지 결정하고 구현해야한다.
- DB가 분리되어 있어서 조회하기 상대적으로 어렵다. 데이터 관리가 상대적으로 어렵다.
참고
https://velog.io/@heoseungyeon/MSA-vs-%EB%AA%A8%EB%86%80%EB%A6%AC%EC%8B%9D-akg64flw
https://2ham-s.tistory.com/394
https://m.blog.naver.com/seek316/221863498991
https://kimjingo.tistory.com/181
https://hahahoho5915.tistory.com/71