CS

MSA [CS]

PON_Z 2022. 12. 14. 22:26

MSA

- MSA(Micro Service Architecture)란 하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 형태이다. 아래와 같은 특징을 지닌다.

(1) 마이크로 서비스는 스스로 돌아갈 수 있음

(2) 독립적으로 배포가 가능한 서비스임

(3) 각 서비스는 다른 서비스에 대한 의존적이 작아야

(4) 각 서비스는 개별 프로세스로 구동되며, REST API와 같은 가벼운 방식으로 통신되어야 함

 

- 위와 같은 특징으로 인해 서비스 확장성이 좋고, 클라우드 환경에 적합하다는 단점이 있다. 또한 에러 관리 측면에서도 부분적 서비스 장애에 대한 격리가 수월하다.

- 하지만 서비스간 호출시 API를 사용하기 때문에 비용이 증가하며, 데이터 관리 관점에서 데이터가 여러 서비스에 걸쳐서 분산 되므로 한 번에 조회하기 어렵고, 아키텍쳐가 다소 복잡하므로 개발 및 관리가 어렵다.

 

- 또한 MSA에서는 배포가 잦기 때문에 CI/CD의 자동화가 필수적이다.

 

 

 

 

Monolithic Architecture

 

- Monolithic Architecture는 MSA와 반대되는 개념으로, 어플리케이션의 모든 구성요소가 한 프로젝트에 통합되어 있는 형태를 말한다. 단순한 구조로 인해 개발이 용이하고 배포가 간단하며, End-to-End 테스트가 용이하다는 장점이 있다.

- 하지만 프로젝트의 규모가 커질수록 빌드 및 배포시간이 길어지고, 조그마한 수정 사항이 있어도 전체를 다시 빌드하고 배포해야해서 유지 보수가 어렵다. 또한 일부분의 오류가 전체에 영향을 미치므로 에러 관리 측면에서도 좋지않다.

 

 

- 이러한 장단점 때문에 아키텍쳐를 설정할 떄는 신중한 선택이 필요하다.

  만약 시스템 복잡도가 높지 않고, 배포가 잦지 않으며, 개발 인력이 충분하지 않다면 모놀리식 아키텍쳐

  아니라면 MSA를 선택하면 된다.

- 요즘에는 클라우드 환경에서의 개발이 거의 필수적이여서 많은 기업에서는 MSA를 거의 필수적으로 선택하고 있다.

 

 

 

 

ref) https://steady-coding.tistory.com/595

728x90

'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