본문 바로가기
MSA

MSA 아키텍처

by 개발자건빵 2022. 7. 6.

MSA(Micro Service Architecture)는 설계 방식중 하나이다.

배로 비유하면 

Monolithic = 항공 모함이고, 

MSA = 각개 전투하는 여러 작은 보트들의 연결이다. (서로 무전으로 교신 중) 

 

MSA의 장점은 모두 Monolithic의 단점이며, 반대로 Monolithic의 장점은 모두 MSA의 단점이다.

정답은 없지만, IT 대기업들은 모두 MSA로 전환 했다는 사실이 팩트이다.

 

아래 Monolithic 단점 하나가 IT 대기업에게 너무 크리티컬하게 작용했다.

(중소 기업은 Monolithic 규모가 작아서 관리가 가능하다는 얘기)

MSA 장점

  1. 배포 관점
    • 서비스 별 개별 배포가 가능하다. (배포 시 전체 서비스의 중단이 없음.)
    • 독립 배포가 가능하므로 개발자의 자율성이 증가한다.
      (내가 A 기능 다 만들었고, 다른 사람이 B 기능 못 만들었으면, 나는 그냥 놀아도 됨.)
    • 요구 사항을 신속하게 반영하여 빠르게 배포할 수 있다.
  2. 확장 관점
    • 특정 서비스에 대한 확장성이 용이하다.
    • 클라우드 사용에 적합하다.
  3. 장애 관점
    • 장애가 전체 서비스로 확장될 가능성이 적다.
    • 부분적 장애에 대한 격리가 수월하다.
  4. 코드 / 유지 보수 관점
    • 팀 별로 프로젝트가 분리되어 있으므로 코드의 이해도가 증가하고, 그에 따라 유지 보수하기 쉽다.
    • 신기술의 적용이 유연하고, 서비스를 polyglot하게 개발 및 운영할 수 있다.
      (*polyglot 개발: 여러 프로그래밍 언어, 패러다임 등을 사용)

MSA 단점

  1. 성능 관점
    • 서비스 간 호출 시 API를 사용하기 때문에 통신 비용 및 지연 시간이 증가한다.
  2. 데이터 관리 관점
    • 데이터가 여러 서비스에 걸쳐서 분산되므로 한 번에 조회하기 어렵고, 데이터의 정합성 또한 관리하기 어렵다.
  3. 테스트 / 트랜잭션 관점
    • 단위 테스트는 쉽지만, 통합 테스트 및 End-to-End 테스트 단위로 들어가면 여러 서비스의 API를 검증해야 하므로 시간과 비용이 많이 든다.
    • 각 서비스 별로 데이터베이스가 있으므로 트랜잭션을 구현하기 까다롭다.
    • 아키텍처가 다소 복잡하므로 개발 및 관리가 어렵고, 비용이 많이 든다.

'MSA' 카테고리의 다른 글

[MSA] Saga 패턴을 통한 분산DB 트랜잭션  (0) 2022.09.27
[Spring] Event Driven (우아콘2020)  (0) 2022.08.21
[MSA] Event Sourcing 이란?  (0) 2022.08.07
Event Driven Architecture 란?  (0) 2022.07.28

댓글