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 보장을 위해 별도의 처리 필요
**참고사이트
'Programming Languages' 카테고리의 다른 글
Web Server (웹 서버) 와 WAS(웹 어플리케이션 서버) (0) | 2020.06.29 |
---|
댓글