Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- heap
- RAM
- Git
- trunc(sysdate)
- 스케줄 삭제
- 멀티스레드
- ArrayList
- 프로세스 종료
- ssd
- trunc()
- maven
- HashMap
- Servlet
- trunc(date)
- HDD
- 스레드
- git push
- MAP
- queue
- stack
- 이진탐색트리
- desc
- netstat
- web
- 정렬
- url
- 오라클 버림 함수
- 오라클 trunc()
- cpu
- null
Archives
- Today
- Total
無테고리 인생살이
[아키텍처] MSA 등장배경을 이해하고, 모놀리식 아키텍처와 장단점 비교해보자 본문
Monolithic Architecture vs MicroService Architecture
MSA 이란?
= MicroService Architecture
각 컴포넌트 별로 서비스를 작게 나눈 형태
즉, 하나의 큰 애플리케이션을 다수의 작은 애플리케이션으로 모듈화한 형태
MSA 도입 전 주로 사용했던 아키텍처는?
Monolithic Architecture (모놀리식 아키텍처)
사전적 의미로는 단일체의, 한 덩어리로 뭉친
특징
- 전체 애플리케이션이 하나로 통합되어 있으므로, 빌드/테스트/배포가 하나의 애플리케이션에서 수행된다.
(웹 개발로 예를 들자면, 하나의 WAR 파일로 패킹됨) - 여러 컴포넌트가 하나의 서비스에 강하게 결합되어 있으므로 속도가 빠르다.
- 비교적 적은 컴포넌트로 이루어진 소규모의 프로젝트에서 사용된다.
다수의 컴포넌트가 추가되어 프로젝트가 커졌을 경우, 모놀리식 아키텍처는 다음과 같은 문제가 발생한다.
- 빌드/테스트/배포의 수행 시간이 길어진다.
- 한 컴포넌트 서비스에서 대용량 트래픽이 발생했을 시, 프로젝트 전체의 서버를 확장해야만 한다.
(부분적 scale-out이 불가능하다 -> 리소스 낭비) - 한 컴포넌트에서만 문제가 발생하더라도, 서비스 전체를 사용할 수 없다. (서비스 전체 다운타임)
이러한 문제를 해결하기 위해,
MSA 등장
특징
- 하나의 컴포넌트가 하나의 서비스 형태로 구현되며, 독립된 서버를 가질수 있고 독립적인 배포가 가능하다.
- 컴포넌트 별로 서버를 구축할 수 있으므로, 각각 서비스의 부하에 따라 개별적 scale-out(부분적 확장)이 가능하다.
- 하나의 DB에 데이터를 집중하지 않고, 각 서비스 별 DB를 운영할 수 있다.
(이렇게 데이터가 분산되어 있으므로, 서비스를 독립적으로 개발, 배포, 운영 할 수 있다)
문제점
- 서비스가 모두 세분화(분산)되어 있기 때문에, API를 통해서 서비스간 호출이 이루어지고 성능 문제가 발생할수 있으며 속도가 느리다.
- 통합 테스트와 배포가 어렵고 복잡하다.
'기타' 카테고리의 다른 글
[Algorithm] 시간복잡도와 빅오표기법 (0) | 2022.12.19 |
---|---|
[개발용어] Memory Leak이란? (0) | 2022.12.15 |
[개발용어] 트러블 슈팅이란? (0) | 2022.11.07 |
[암호화] 시저 암호란? (0) | 2022.11.03 |
[개발용어] 트레이드오프(trade-off)란? (0) | 2022.10.27 |