| MSA (Micro Service Architecture)
<-> Monolithic
: 독립적으로 배포 가느안 서비스들을 모아서 하나의 application으로 만드는 설계 방식
장점 | 단점 | |
- 각 어플리케이션의 독립적인 배포 가능 - 서비스의 일부를 독립적으로 수정, 개발 가능 - 특정 서비스의 scale up/out 이 가능 - 장애가 전체로 번지지 않는다. - 각 서비스의 독립적인 구성이 가능해진다. |
- 트랜잭션 관리가 어려움 - 배포 서비스가 늘어나고, 관련 관리 비용이 증가 - 운영의 복잡성이 증가 (너무 과하게 서비스를 쪼개는 건 피하자) |
DDD (Domain Driven Design)
: 도메인 중심 개발
: ex. 배달 서비스의 Customer엔 DeliveryOrder API가 존재할 것.
온라인 쇼핑몰의 Customer엔 Exchange API가 존재할 것.
: Database 기반이 아님. 모델링의 주체를 도메인으로 두는 것을 말한다.
* 모델링한 대상의 역할이 무엇인지를 잘 생각해야한다.
: 비즈니스의 기능을 생각해 보아야한다.
MSA 사용시 주의사항
** 트랜잭션 관리 : 다른 서버의 API를 호출하면서 발생할 수 있는 트랜잭션 예외 상황을 늘 고려해야한다.
Spring API Gateway
: ESB를 고도화 시킨 것.
: 라우팅, 보안, 모니터링, 메트릭, 탄력성 등을 지원
* ESB (Enterprise Service Bus)
: 서비스들을 컴포넌트화된 논리적 집합으로 묶는 아키텍쳐 패턴
: 미들웨어(중개)와 라우팅, 전송 등을 담당하는 일종의 Web Service gateway
Feign
: 간편하게 API를 구성할 수 있게 돕는다.
https://github.com/OpenFeign/feign
[ 출처 ]
부트캠프 강의를 들은 후 정리한 내용입니다.
'Framework > 프로젝트로 스프링 이해하기' 카테고리의 다른 글
[이커머스 프로젝트] Swagger2 적용 (0) | 2022.11.25 |
---|---|
[이커머스 프로젝트] 멀티 모듈 생성하기 (0) | 2022.11.25 |
[이커머스 프로젝트] 환경 변수를 외부에서 주입하는 법 (0) | 2022.11.25 |
[이커머스 프로젝트] Docker란 무엇인가? (자료 정리) (0) | 2022.11.24 |
[이커머스 프로젝트] 주제 선정, Microservice 아키텍처 이해, 기능 단위의 계획, 시스템 구성도 그리기(draw.io) (0) | 2022.11.23 |