[Kubernetes] MSA란?

Ted·2023년 8월 12일
0

Kubernetes

목록 보기
2/2

MSA : Micro Software Architecture

이건 바로바로 여러 application으로 하나의 큰 application을 쪼갠 모습이며 각각을 마이크로하게 나눈 독립적인 서비스를 연결한 구조이다.

기존에는 Monolithic Architecture의 형태로 소프트웨어의 구성이 한 공간에 다 통합되어있는 형태였다면 지금은 프로젝트가 방대해짐에 따라 문제가 생겨 Micro Software Architecture 형태로 바뀌게 되었다.

흔히 Monolithic Architecture에서는 다음과 같은 문제들이 있었다.

  • 서비스가 커지면 전체 시스템 구조 파악이 용이하지 않음
  • 각 서비스의 빌드, 테스트가 용이하지 않음
  • 부분적인 서비스 관리가 쉽지 않음

지금도 내가 공모전이나 어떤 서비스를 개발한다고 하면 유지보수가 용이하게 하기 위해선 소규모 프로젝트에선 Monolithic 구조를 따르지만 경영자에게 있어서 대규모 프로젝트에선 MSA가 좋은 구조임에는 맞는 듯하다.


비즈니스의 성장을 위해서라면 클라우드 MSA 시장은 중요하다. 생산성을 향상시키고 고객의 만족도를 올리며 시장에 출시되는 기간을 단축한다는 점만으로도 MSA는 중요 사업이 되었다.


MSA의 특징

MSA의 경우 API Server를 통해서 상호작용이 되는데 MSA라고 해서 무조건 다 좋다라는 것은 아니었다.

일단 Monolithic Architecture의 문제점들이었던 배포의 용이성, 확장성, 서비스의 부분적 장애의 확장이 MSA에서는 해결이 되었다.

MSA는 요구사항이 있다면 자체적으로 반영해서 배포가 가능하고 특히 클라우드 서비스의 장점인 확장성이 뒷받침이 되어 부분적인 장애가 생겨도 그 부분만 해결한다면 전체의 서비스에 영향을 미치지 않는다.

하지만 MSA 또한 단점이 존재한다.

  • 성능에 있어 API 통신에 필요한 비용과 시간적 비용이 늘어난다.
  • 데이터가 복잡해짐에 따라 분산되어있는 데이터를 한 번에 조회하기가 어려워진다.
  • 테스트나 트랜잭션 시에 복잡도가 증가하게 되고 많은 자원이 필요하게 되었다.
  • 트랜잭션 관리를 분산된 서비스마다 처리해야한다.
  • 전문가가 아니라면 시스템 통신을 설계하기에 복잡하여 구현 난이도가 높다.

사진 및 참고 출처
MSA란?
MSA에 관해서 - 요즘대세msa
https://microservices.io/

profile
iOS Developer

0개의 댓글

Powered by GraphCDN, the GraphQL CDN