- MSA(Micro Service Architecture)란 하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 형태이다. 아래와 같은 특징을 지닌다.
(1) 마이크로 서비스는 스스로 돌아갈 수 있음
(2) 독립적으로 배포가 가능한 서비스임
(3) 각 서비스는 다른 서비스에 대한 의존적이 작아야 함
(4) 각 서비스는 개별 프로세스로 구동되며, REST API와 같은 가벼운 방식으로 통신되어야 함
- 위와 같은 특징으로 인해 서비스 확장성이 좋고, 클라우드 환경에 적합하다는 단점이 있다. 또한 에러 관리 측면에서도 부분적 서비스 장애에 대한 격리가 수월하다.
- 하지만 서비스간 호출시 API를 사용하기 때문에 비용이 증가하며, 데이터 관리 관점에서 데이터가 여러 서비스에 걸쳐서 분산 되므로 한 번에 조회하기 어렵고, 아키텍쳐가 다소 복잡하므로 개발 및 관리가 어렵다.
- 또한 MSA에서는 배포가 잦기 때문에 CI/CD의 자동화가 필수적이다.
- Monolithic Architecture는 MSA와 반대되는 개념으로, 어플리케이션의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태를 말한다. 단순한 구조로 인해 개발이 용이하고 배포가 간단하며, End-to-End 테스트가 용이하다는 장점이 있다.
- 하지만 프로젝트의 규모가 커질수록 빌드 및 배포시간이 길어지고, 조그마한 수정 사항이 있어도 전체를 다시 빌드하고 배포해야해서 유지 보수가 어렵다. 또한 일부분의 오류가 전체에 영향을 미치므로 에러 관리 측면에서도 좋지않다.
- 이러한 장단점 때문에 아키텍쳐를 설정할 떄는 신중한 선택이 필요하다.
만약 시스템 복잡도가 높지 않고, 배포가 잦지 않으며, 개발 인력이 충분하지 않다면 모놀리식 아키텍쳐를
아니라면 MSA를 선택하면 된다.
- 요즘에는 클라우드 환경에서의 개발이 거의 필수적이여서 많은 기업에서는 MSA를 거의 필수적으로 선택하고 있다.
'CS' 카테고리의 다른 글
Data Governance [CS] (0) | 2022.12.19 |
---|---|
Index & B-Tree [CS] (0) | 2022.12.14 |
Process & Thread[CS] (0) | 2022.12.14 |
Deadlock [CS] (0) | 2022.12.14 |
ORM [CS] (0) | 2022.12.14 |