Backend

MSA에 대해 알고가기

해로몬 2025. 2. 13. 13:58

MSA란?

마이크로서비스 아키텍처(MSA)는 작고 독립적인 서비스들의 집합으로 구성된 애플리케이션 구조

애플리케이션을 작은 독립적인 서비스로 분리하고, 각 서비스는 모듈 또는 프로젝트로 나눠서 개발 및 관리를 진행

=> 진행할 경우 독립적으로 개발 및 배포가 가능하여 개별적인 배포 주기를 가질 수 있음.

 

 

 

📌 MSA(Microservices Architecture) 장점과 단점

MSA 장점

  1. 확장성(Scalability)
    • 서비스 단위로 개별 확장이 가능하여 트래픽이 많은 특정 서비스만 확장할 수 있음.
    • 비용 효율적인 확장 가능.
  2. 배포의 유연성
    • 개별 서비스 단위로 배포가 가능하여 전체 시스템을 중단하지 않고 업데이트 가능.
    • CI/CD(Continuous Integration/Continuous Deployment)를 통한 빠른 배포 가능.
  3. 유지보수 용이
    • 특정 서비스만 수정하면 되므로 코드 수정 및 유지보수가 쉬움.
    • 다양한 기술 스택을 서비스별로 적용 가능(Java + Spring, Node.js + Express 등).
  4. 독립적인 개발 및 배포
    • 여러 팀이 독립적으로 개발 가능하여 개발 속도가 빨라짐.
    • 팀별로 다른 기술 스택을 선택할 수 있음.
  5. 장애 격리(Fault Isolation)
    • 하나의 서비스가 장애를 일으켜도 전체 시스템이 영향을 받지 않도록 설계 가능.

MSA 단점

  1. 복잡한 운영 관리
    • 서비스가 많아지면 네트워크 관리, 모니터링, 로깅 등의 운영 부담이 커짐.
    • 서비스 간 데이터 일관성 유지가 어려움.
  2. 네트워크 비용 증가
    • 서비스 간 통신이 많아지고, HTTP, gRPC 등 API 호출이 빈번해지면서 성능 저하 가능성 존재.
    • API 게이트웨이를 두어야 하는 경우가 많음.
  3. 데이터 일관성 문제
    • 각 서비스별로 데이터베이스를 가질 경우 트랜잭션 관리가 어려워지고, 결국 SAGA 패턴 등을 활용해야 함.
    • 여러 서비스에 걸친 트랜잭션(분산 트랜잭션) 관리가 어려움.
  4. 배포 및 테스트의 복잡성
    • 서비스가 많아질수록 배포 자동화(CI/CD)가 필수적이며, 설정이 복잡해짐.
    • 여러 서비스가 연동되므로 통합 테스트가 어려움.

 

📌 MSA는 언제 사용해야 할까?

적합한 경우

  • 빠른 배포와 확장이 필요한 대규모 서비스 (예: Netflix, Amazon, 쿠팡)
  • 여러 팀이 독립적으로 개발해야 하는 환경
  • 다양한 기술 스택을 도입하려는 경우
  • 트래픽이 많은 특정 기능을 별도로 확장해야 하는 경우

부적합한 경우

  • 작은 프로젝트 또는 스타트업 초기 단계(모놀리식이 더 효율적)
  • 운영 및 유지보수할 인력이 부족한 경우
  • 데이터 일관성이 중요한 금융, 회계 시스템

 

 

 

 

 

참고

https://mozzi-devlog.tistory.com/34

'Backend' 카테고리의 다른 글

AJAX(Asynchronous JavaScript and XML)  (0) 2024.11.29
[RBF] 2주차  (2) 2024.11.07
[RBF] 1주차  (1) 2024.10.30