MSA가 뭘까

johaS2·2025년 2월 5일

MSA는 이번에 처음 들어봤는데..>_<
Spring도 한참 부족하지만 일단 새로운 거 배울생각에 일단 설렘 ㅎㅎ 그럼 시작 !

1. MSA 기본 개념 : 모놀리식 아키텍처와 비교

비교 항목모놀리식 아키텍처MSA
코드베이스단일 코드베이스여러개의 독립적인 서비스
확장성전체 시스템 확장 필요개별 서비스만 확장 가능
배포 방식전체 시스템 재배포개별 서비스만 배포 가능
장애 영향하나의 장애가 전체 영향장애가 서비스 단위로 격리됨
기술 스택동일한 기술 스택 사용서비스별 다른 기술 스택 가능
데이터베이스하나의 DB 공유서비스마다 개별 DB 운영 가능

이렇게 표로 비교해보면 어 그럼 MSA를 무조건 써야겠네?! 생각이 드는데 MSA가 항상 좋은 것은 아니다.
그럼 언제 MSA를 사용할까?

  1. 서비스 규모가 크고 기능이 많을 때
  • 여러 팀이 동시에 개발해야 하는 경우
  1. 트래픽이 많은 특정 기능을 따로 확장해야 할때
  • 결제 시스템만 확장할 때
  1. 각 기능별로 다른 기술 스택이 필요할 때
  • AI 서비스는 파이썬, 결제 서비스는 Java로 개발 가능
  1. 배포 및 유지보수 부담을 줄이고 싶을 때
  • 부분적으로 수정하고 배포가 가능

MSA의 장점과 단점

항목장점단점
배포 방식개별서비스배포가능CI/CD 필요, 운영 복잡
확장성특정 서비스만 확장 가능서비스 간 통신 복잡
장애 관리장애 격리 가능분산 트랜잭션 문제
기술 스택서비스별 맞춤 기술 선택 가능개발자 학습 부담 증가
데이터 관리각 서비스별 독립 DB 사용 가능데이터 일관성 유지 어려움
  • CI ? 코드 변경을 자동으로 빌드 & 테스트
  • CD ? 테스트를 통과한 코드를 자동으로 배포
  • 트랜잭션(Transaction) ? 데이터 작업을 하나의 작업 단위로 묶어 모두 성공 or 모두 실패
profile
passionate !!

0개의 댓글