💡 모놀리식 아키텍처(Monolithic Architecture)란?
- 전통적인 개발 아키텍처다.
- 하나의 프로젝트에 모든 기능들이 싹 다 들어가 있다.
🔎 모놀리식 아키텍처 장점
- 중앙에 집중된 구조이기때문에 모든 기능의 처음부터 끝까지 테스트를 더 빠르게 할 수 있다.
- 하나의 프로젝트에 비즈니스 로직, UI, 콘텐츠 등 모든 구성 요소가 다 들어가 있기때문에 디버깅이 편하다.
- 소규모 프로젝트라면 단순하면서도 견고한 구조를 만들 수 있다.
🔎 모놀리식 아키텍처 단점
- 대규모 프로젝트라면 하나의 프로젝트가 점점 거대해져 구조를 제대로 파악하지 않으면 하나의 장애가 발생할 경우 다른 영역까지 영향을 끼칠 가능성이 높다.
- 아무리 작은 부분을 수정하더라도 전체 프로젝트가 망가질 수 있다. (의존성이 높기 때문)
- 배포가 잦은 환경이라면 하나만 수정하더라도 통으로 컴파일해서 재배포를 해야하는 번거로움이 존재한다.
💡 MSA(MicroService Architecture)란?
- 모놀리식 아키텍처와 다르게 아주 작은 서비스 단위로 나눠서 각 서비스를 독립적으로 구성한다.
- 중앙 집중적인 모놀리식 아키텍처와 다르게 경량화된 API나 메시지로 직접 통신하면서 접근하는 방식이다.
🔎 마이크로서비스 아키텍처 장점
- 서비스를 아주 작은 단위로 나누기 때문에 규모를 확장하는데에 있어서 유연하다.
- 서비스를 독립적으로 개발하고 배포할 수 있어서 작업 시간이 단축된다.
- 배포가 빠르고 잦은 만큼 애자일 방식(요구사항 변동에 있어서 유연한 방식의 개발 모형)을 실천하기 편하다.
- 서비스 일부분에 문제가 생기면 시스템 전체가 장애나는 모놀리식 아키텍처와 다르게 하나의 서비스가 다운되더라도 다른 서비스에는 문제가 없다.
- 자체 DB를 서비스마다 가지고 있기 때문에 데이터 무결성을 유지하는데에 더 도움이 된다.
🔎 마이크로서비스 아키텍처 단점
- 서비스가 잘게 나누어져 있어 분산된 서비스가 서로 API를 호출하는 과정에서 통신 비용과 지연 시간이 든다.
- 작게 서비스가 나누어져 있기 때문에 인프라 구축에 큰 비용이 들 수 있다.
- 여러개의 서비스로 나누어져 있어서 장애가 발생했을 때 어디서 발생했는지 찾기가 힘들다.
- DB가 서비스마다 분리가 되어있어 트랜잭션 관리하기가 까다롭다.
- 서비스가 커질 수록 구조가 복잡해지기때문에 관리를 잘하지않으면 오히려 성능이 저하될 수 있다.
- 구현 난이도가 높다.
[출처]
https://www.inflearn.com/pages/infcon-2023-tech-msa
'ETC' 카테고리의 다른 글
CI(Continuous Integration)/CD(Continuous Delivery & Continuous Deployment)란? (0) | 2024.03.18 |
---|---|
컴퓨터의 메모리 구조 (1) | 2024.01.02 |
[Windows] 레지스트리(Registry) 개념 정리 (0) | 2023.12.12 |