MSA란 마이크로 서비스 아키텍처(Micro Service Architecture)의 약자로 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법이다.
MSA는 API를 통해서만 상호작용할 수 있다. 즉, 마이크로 서비스는 서비스의 end-point(접근점)을 API 형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화한다. 내부의 구현 로직, 아키텍처와 프로그래밍 언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서비스 API에 의해 철저하게 가려진다.
vs
MSA 장점
기존 monolithic architecture과 비교해보면
- 빌드/테스트 시간이 길다.
- 선택적 확장이 불가능 (전체 확장필요)
- 하나의 서비스가 모든 서비스에 영향
- 한 Framework와 언어에 종속적
위 단점에 반해, MSA의 각 컴포넌트는 서비스 형태로 구현되고 API를 이용하여 타 서비스와 통신하게 된다.
각 서비스는 독립된 서버로 타 컴포넌트와 의존성이 없기 때문에 독립된 배포를 하게 된다.
또한 각 컴포넌트가 독립된 서비스로 개발되어있기 때문에 부분적인 확장이 가능하다.
MSA 단점
서비스간 호출을 API통신을 이용하기 때문에 속도가 느리고, 통신에 사용하기 위해 값을 데이터 모델로 변환시켜주는 오버헤드가 발생한다.
MSA 특징
- 데이터 분리 : 데이터 저장 시 하나의 DB에 중앙 집중화를 하지 않고 서비스 별 별도의 데이터 베이스를 사용
데이터가 분산되어있기 때문에 다른 서비스 컴포넌트에 대한 의존성이 없이 서비스를 독립적으로 개발 및 배포/운영 할 수 있지만,
다른 컴포넌트의 데이터를 API통신을 통해 가져와야 하기 때문에 성능상의 문제가 발생 할 수 있고, 트렌젝션으로 묶을 수 없는 문제가 발생할 수 있음 - API Gateway : MSA의 문제점 중 하나는 각 서비스가 다른 서버에 분리 배포되어있기 때문에 서버 URL이 각기 다를 수 밖에 없다.
이때 API Gateway는 API 서버 앞 단에서 모든 API 서버들의 End-Point를 단일화하여 묶어주는 역할을 한다.
또한 거미줄처럼 복잡한 서비스간의 API호출 구조도 단순화 시켜주며 그 외에 라우팅, 로드밸런싱, 인증 역할 등등 여러 역할을 수행한다.
참고
'Web > Else' 카테고리의 다른 글
[Web]@ContollerAdvice, @ExceptionHandler 예외처리 (0) | 2021.10.22 |
---|---|
[Web]WAS (0) | 2021.10.22 |
[Web]RESTful (0) | 2021.10.22 |
[Web]Spring Boot 관련 개념 참고 링크 (0) | 2021.10.22 |
[Web]ResponseEntity (0) | 2021.10.22 |