1. MA 모놀리틱 아키텍처 Monolithic Artchitecture
- 마이크로 서비스 아키텍쳐(MSA)에 반대되는 개념으로, 애플리케이션 모든 구성 요소가 한 프로젝트에 통합되어 있는 형태를 말함.
- 전체 어플리케이션이 하나로 되어있어 배포 및 테스트도 하나의 애플리케이션만 하면 되기에 개발 및 환경 설정이 단순함.
- 각 컴포넌트들이 함수로 호출 되기 때문에 성능 제약이 덜하고 운영이 용이.
- 작은 볼륨의 시스템 개발시 유용.
- 서비스 간 호출이 하나의 프로세스 내에서 이루어지기 때문에 속도가 상대적으로 빠를 수도 있음.

장점
- 단순한 아키텍처 구조로 초기 개발에 용이하다.
- 배포가 간단하다.
- End-to-End 테스트가 용이하다.
- 확장이 쉬움(로드 밸런스를 이용하여 로드 부하를 나눠가지는 방식으로 진행)
단점
- 빌드 및 배포 시간 증가 : 프로젝트 규모가 커질수록 애플리케이션 구동 지연이 늘어나고 빌드 및 배포 시간이 길어진다.
- 전체 빌드 및 배포의 불가결함 : 구조적 결합도가 높음으로 단순 수정 사항이 있어도 전체를 빌드하고 배포해야 한다.
- 유지보수의 어려움 : 전체 코드가 총합되어 있기에 코드 이해도가 떨어지며 유지보수가 어렵다.
- 장애 전파 : 하나의 서비스가 모든 서비스에 영향을 줌.
( 버그가 전파 및 확산될 수 있다. 이벤트 서버에 트래픽이 몰려 해당 서버가 죽으면 모든 서비스가 마비됨. ) - 선택적 확장의 어려움 : 전체 애플리케이션 확장은 쉽지만, 부하 분산을 위해 각 컴포넌트를 선택적 확장이 어렵고 프로젝트 전체를 확장해야 함.
2. MSA 마이크로 서비스 아키텍처 Micro Service Artchitecture
- 하나의 큰 애플리케이션을 여러 작은 애플리케이션으로 쪼개어 변경 및 조합이 가능한 형태를 말함.
- 각 컴포넌트는 서비스 형태로 구현되고 API를 이용하여 타 서비스와 통신하게 됨.
- 각 서비스는 독립된 서버로 타 컴포넌트와 의존성이 없어 독립 배포.
출처 : https://microservices.io/
장점
- 독립성 확보 : 독립적인 개별 확장 ( ex. 온라인 쇼핑몰에서 주문 서버만 트래픽 증가한다면 해당 서버만 확장해주면 됨. )
- 장애 격리 : 각 서비스가 독립적이고 타 컴포넌트 의존성이 떨어지기에 버그가 전파 확률이 떨어짐. 서비스 간 장애 격리가 비교적 쉬움.
- 유연성 확장 : 여러 작은 애플리케이션으로 쪼개어 개발되었기에 변경 및 조합이 용이함.
- 적시 배포 : 일부 수정이 있어도 전체를 다시 재배포해야 하는 MA에 비해 독립 배포가 가능함으로 적시에 배포를 할 수 있음.
단점
- 서비스 간 호출을 API통신을 이용하기에 비교적 속도가 느림.
- 통신에 사용하기 위해 값을 데이터 모델로 변환시켜주는 오버헤드 발생 가능.
REFERENCE
https://blog.lgcns.com/2981?category=515093
https://velog.io/@tedigom/MSA-제대로-이해하기-1-MSA의-기본-개념-3sk28yrv0e
https://levelup.gitconnected.com/the-advantages-of-microservices-vs-monolithic-architectures-94ce25ae3fd
https://velog.io/@tedigom/MSA-제대로-이해하기-2-MSA-Outer-Architecure
https://www.samsungsds.com/kr/insights/msa.html
https://www.comworld.co.kr/news/articleView.html?idxno=49710
https://steady-coding.tistory.com/595
'Design Pattern' 카테고리의 다른 글
9. MVVM 패턴 (0) | 2022.10.24 |
---|---|
8. MVC 패턴 (0) | 2022.10.24 |
7. 이터레이터 패턴과 노출모듈 패턴 (0) | 2022.10.24 |
6. 프록시 패턴 (0) | 2022.10.24 |
5. 옵저버 패턴 Observer Pattern (0) | 2022.10.20 |