[개발 상식] MSA(MicroService Architecture)란?

MSA란 무엇인가요?

MSA(MicroService Architecture)는 소프트웨어 개발에서 사용되는 아키텍쳐 스타일을 나타냅니다. 애플리케이션을 작은 서비스 단위로 분할하여 개발하고, 이러한 서비스들이 독립적으로 배포, 운영 및 확장될 수 있도록 하는 접근 방식입니다.

기존의 모놀리식 아키텍처는 하나의 애플리케이션으로 구성되어 독립적으로 서비스를 운영할 수 없지만, MSA는 독립적인 기능 단위인 마이크로 서비스,로 분리하여 각각의 독자적인 데이터베이스, 매커니즘을 가지며 독립적으로 동작할 수 있습니다.

MSA의 장점?

  1. 확장성 : 마이크로 서비스는 독립적으로 배포되고 운영될 수 있어 확장성이 용이합니다.
  2. 다양성 : 서로 다른 기술 스택을 이용하여 각각의 서비스를 개발할 수 있습니다.
  3. 유지 보수 : 각각의 서비스가 다른 서비스에 영향을 주지 않기 때문에 빠른 수정과 배포가 가능합니다.

MSA의 예

인터넷 쇼핑몰 웹 애플리케이션을 가정한다면 다음과 같은 서비스가 있습니다.

  1. 사용자 관리
  2. 상품 관리
  3. 주문 처리
  4. 배송 관리
  5. 리뷰 및 평점

MSA를 사용한다면 위와 같은 서비스들은 독립적으로 작동하고 필요에 따라 다른 기술 스택을 사용할 수 있습니다. 변경이나 업데이트가 필요한 경우 해당 서비스만 수정하면 되어서 복잡성을 줄일 수 있습니다.

MSA의 단점?

  1. 복잡성 : 여러 마이크로 서비스로 구성되기 때문에 전체적인 이해, 통신, 데이터관리, 모니터링, 로깅등의 복잡성이 증가할 수 있습니다.
  2. 서비스 통신 문제 : 서로 다른 마이크로 서비스 간의 네트워크 문제를 야기할 수 있습니다. 이러한 문제를 해결하기 위해선 추가적인 기술과 설계가 필요합니다.
  3. 테스트와 디버깅 어려움 : 각각의 서비스가 독립적으로 개발, 운영 되기에 전체 시스템의 테스트와 디버깅이 어려울 수 있습니다.
  4. 초기 구축의 어려움 : 처음 도입하는 경우 초기 설정과 학습이 어려울 수 있습니다. 초기 단계의 비용과 시간이 필요할 수 있습니다.