찌니의 프로그래밍 삼매경

[MSA] MSA(MicroService Architecture)란 무엇인가 본문

MSA(MicroService Architecture)

[MSA] MSA(MicroService Architecture)란 무엇인가

zzI니☆ 2022. 10. 6. 10:21
728x90

MSA란? 하나의 Application을 다수의 독립적인 Service로 구성하는 Architecture Style

  • 각자 별도의 프로세스에서 실행되며 HTTP API와 같은 가벼운 매커니즘으로 통신하는 작은 애플리케이션
  • 작은 서비스들은 각자의 비즈니스 기능을 담당, 완전 자동화된 절차에 따라 독립적으로 배포
  • 각 서비스는 서로 다른 프로그래밍 언어나 서로 다른 데이터 저장 기술을 사용

MSA를 알아보기 전에 전통적인 개발 방법론 Monolithic을 알아보자

 

⚡ 전통적인 개발 방법론(Monolithic System)

  1. 전체 기능을 단일 코드베이스로 개발
  2. 단일 통합 데이터베이스 사용
  3. 대규모 단일 코드베이스로 빌드와 배포

Monolithic System의 단점

  1. 기능들 간의 결합도가 높다
  2. 작은 수정에도 전체 시스템의 전체적인 변경 필요
  3. 단건의 버그로 인해 전체 시스템이 죽을 수 있다.
  4. 기능 변경 시 영향도 파악 어려움

MSA의 장점

  1. 탄력적이고 선택적인 확장
    MSA는 작은 서비스 단위로 확장이 가능하다.
    반면 Monolithic은 확장을 하기 위해서는 전체 Scale-Out이 필요하므로 비효율적이다.
  2. 빠른 Delivery
    각 서비스는 독립적으로 개발되고 느슨하게 결합된다.
    서비스 크기 또한 작기 때문에 코드 수정에 대한 영향 범위가 상대적으로 작아진다.
    이는 곧 빠른 영향도 파악/빌드/테스트 즉 빠른 Delivery로 이어지게 된다.
  3. Polygot Architecture 지원
    조직의 표준 기술을 만들고 모든 조직에 강제적으로 적용하는 전통적 개발 환경과 달리,
    MSA는 특정 Task에 가장 적절한 기술을 선택해 적용할 수 있다.
  4. 실험과 혁신 가능
    최근 비즈니스 상황에서는 기술의 혁신이 필수적이다.
    Monolith 환경 에서는 단순한 기술 실험도 어려운 반면, MSA는 새로운 기술들을 쉽게 실험 해 볼 수 있다.
  5. 대체 가능성
    각 서비스는 작고 서비스 간 결합도가 낮기 때문에 언어 및 프레임워크를 완전히 새롭게 개발할 수 있다.
  6. 기술 부채 경감
    SW 또한 나이를 먹고 관리하지 않으면 기술 부채가 쌓이게 된다.
    MSA는 서비스 크기가 작아 품질 관리에 용이하고, 품질 향상을 위한 코드 개선 시 받는 영향도 작다.

 

MSA의 단점

  1. 컴퓨팅 자원의 사용이 Monolithic보다 비효율적이다.
    내부 호출을 하는 Monolithic보다 성능이 느리고, jvm 등 중복적인 자원 사용으로 메모리가 낭비된다.
  2. 운영 관리가 어렵다.
    작은 서비스 여러개로 이루어져있는 만큼 운영해야 할 대상 또한 늘어나면서 관리가 어려워지고, 모니터링 대상 또한 증가하게 된다.
  3. 다양한 장애 상황 발생
  4. 분산 환경에서 트랜잭션 어려움
728x90

'MSA(MicroService Architecture)' 카테고리의 다른 글

[MSA] MSA(MicroService Architecture) 특징  (0) 2022.10.07
Comments