[CS] MSA 소프트웨어개발기법

dev_gu·2023년 3월 5일
0

Computer Science

목록 보기
2/2

💻 MSA

📝 개념

작고 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스들로 구성된 프레임워크

📌 서비스마다 자체 데이터베이스를 가지고 동작하기 때문에 개발부터 빌드, 배포까지 효율적으로 수행가능하다.

  • Moolithic 방식의 문제점을 해결하기위해 애플리케이션의 핵심서비스를 분할하는 MSA방식이 생겼으며, 각 서비스들을 독립적으로 구속하고 배포할 수 있게 되었다.
  • Moolithic 방식은 기존 애플리케이션의 사소한 변경사항이 있더라도 자체적인 QA주기에 따라 업데이트하거나 일부 서비스업데이트로 오류가 발생한 경우, 전체 서비스를 중단하고 오류를 해결하는 등의 다운타임이 발생하는 문제점이 빈번하다.

장점

  • 서비스가 독립적이라 다른 서비스에 영향을 주지않는다.(뛰어난 복귀능력)
  • 분산형 개발을 통해 개발주기가 단축되기 때문에 빠르고 유연한 배포가 가능하다.(출시기간 단축)
  • 서비스별 기술 도입 및 확장이 자유롭다.(확장성높음)
  • 다중언어 지원 API를 사용한다.

단점

  • 각 서비스들은 API를 통해 통신하므로 네트워크 통신에 의한 오버헤드 발생
  • 서비스별로 로그가 생성되므로 중앙로그 모니터링이 존재하지 않는다.
  • 하나의 프로젝트에 수많은 서비스들이 존재하므로 모든 서비스 모니터링 오버헤드 증가
  • 하나의 서비스에서 다른 서비스를 호출하므로 장애 발생시 경로 및 장애 추적이 힘들다.
  • 서비스가 분산되어있기에 모놀리식에 비해 상대적으로 많이 복잡하다.

Moolithic vs MSA (비교)

0개의 댓글