본문 바로가기
Programming Languages

MSA vs Monolithic

by IamBeau 2020. 6. 29.

1. Monolithic

 

1-1. Monolithic 정의 

- Monolithic 의 사전적 의미는 "단단히 짜여 하나로 되어 있는"

- 하나의 프로젝트에 대해서 하나의 어플리케이션이 대응

 

1-2. Monolithic 장점

- 어떤 기능(서비스)이든지 개발되어있는 환경이 같아서 복잡하지 않음

- End-to-End Test 용이 (MSA의 경우 필요한 서비스들을 모두 동작 시켜야함)

- 배포가 간편

 

1-3. Monolithic 단점

- 프로젝트 덩치가 커지는만큼 빌드,배포 시간 늘어남

- 조그마한 수정사항이 있어도 전체를 다시 빌드, 배포

- 많은 양의 코드가 몰려있어 유지보수 힘듬

- 하나의 서비스가 모든 서비스에 영향

- 기술, 언어, 프레임워크가 종속적 

 

 

2. MSA(Micro Service Architecture)

 

2-1. MSA 정의 

- 단일 응용 프로그램을 나누어 작은 서비스 단위의 조합으로 구축

 

2-2. MSA 장점

- 빌드 및 테스트 시간 단축

- 유연한 기술, 언어, 프레임워크 적용 가능

- 한 서비스의 장애가 발생하더라도 다른 서비스에 영향 없음 (죽은 서비스가 타 서비스를 호출하는 경우라면 문제지만 Circuit Breaker 로 해결 가능)

- 탄력적이고 선택적인 scale out 가능

 

2-3. MSA 단점

- 서비스가 분산되어 있기 때문에 모니터링 등 관리가 쉽지 않음

- 통신관련 이슈가 잦을 수 있음 (마이크로 서비스들 끼리 계속해서 통신을 하기 때문에)

- Monolithic 에 비해 테스트가 불편

- 다른 서버 간의 transaction 보장을 위해 별도의 처리 필요

 

 

**참고사이트

민수's 기술 블로그

기록이 곧 발전이다!

수학과의 좌충우돌 프로그래밍

CLIPSOFT

댓글