들어가며
MSA가 무엇인지 확실히 정리해두려고 한다.
본론
MSA(Micro Service Architecture)
: 마이크로 서비스로 구성된 아키텍쳐 구조를 뜻한다.
Mirco Service
: 마이크로 서비스는 소프트웨어 개발 방법론 중 하나로, 큰 서비스를 작은 기능 단위로 나누어 개발하고 배포하는 방식을 뜻한다. 각각의 작은 서비스들은 독립적으로 운영되며, 서로 통신하며 전체 시스템의 기능을 수행하는 방식이다.
- 특징
- 독립적인 서비스
: 각 마이크로 서비스는 독립적으로 배포하고 확장 할 수 있으며, 서비스 간 영향을 최소화 한다.
- 분산 개발
: 각 마이크로 서비스는 다른 팀에 의해 독립적으로 개발될 수 있으며, 서비스 별로 적합한 기술 스택을 선택할 수 있다.
- 결합도와 응집도
: 마이크로 서비스는 낮은 결합도와 높은 응집도를 갖는다.
- 서비스 간 통신
: 마이크로 서비스는 API를 통해 서로 통신한다.
- 단점
- 복잡성
: 각 서비스는 더 단순하지만 각 작동 부분이 많기 때문에 전체 시스템은 복잡하다.
- 네트워크 정체 및 대기시간
: 다수의 서비스를 사용하면 서비스 간 통신이 증가하여 추가 대기 시간이 발생할 수 있다.
- 버전 관리
: 각 서비스 업데이트로 인해 종속된 서비스가 손상될 수 있기 때문에 업데이트시 많은 고려가 필요하다.
API Gateway
: 마이크로 서비스 아키텍처를 운영할 때 각각의 서비스별로 서비스 간의 통신, 데이터 일관성 유지, 인증 및 보안, 서비스 배포 및 모니터링을 신경써서 만들어야 한다면 전혀 Micro 하지 않은 서비스가 되기 때문에 이를 해결해 주기 위한 방법이다.
- 기능
- 라우팅
: 클라이언트는 하나의 엔드포인트와 상호작용하고 API 게이트웨이가 적절한 서비스로 라우팅 처리를 해준다.
- 데이터 변환
: 클라이언트가 사용하는 포맷이나 프로토콜이 각 마이크로 서비스마다 다를 수 있기 때문에 요청과 응답을 변환해준다.
- 인증 및 권한 부여
: 인증 및 권한 검사를 API 게이트웨이에서 담당하고 각 마이크로 서비스는 이 처리를 생략할 수 있다.
- 로드 밸런싱 및 장애 처리
: API 게이트웨이는 클라이언트 요청을 여러 인스턴스의 마이크로 서비스로 분산시키고, 일부 서비스가 실패하더라도 다른 서비스로 요청을 리다이렉션해 전체적인 가용성을 유지할 수 있다.