| MSA에서는 비교적 간단한 비즈니스 로직만 포함되더라도 패턴을 고려해야하는 상황 발생
기존 모놀리스 환경에서 SQL Join을 활용했던 부분에서
MSA 환경이 되면서 다른 DB를 활용하게 되어 Join 불가능해지는 상황이 존재
다른 서버에서 데이터를 가져오기 위해서 다른 서버의 DB에 직접 접근하는 것은 지양해야한다
즉 서비스/도메인 간 협업과 디펜던시가 지양된다 (데이터 오너십)
- Membership server -> banking server api를 통한 DB 접근
ex) money data + banking data ???
DB 테이블간의 Join이 필요할 때
적은 부하, 적은 데이터량에서는 adapter를 생성하여 각각 필요한 데이터를 API 요청을 통해 필요한 작업을 수행하는것도 괜찮지만, 합산이나 데이터를 가공해야할 때는
e.g
특정 기간동안 충전시 일정 금액 이상의 송금 내역의 합을 구하라
각각의 서버에서 데이터를 조회한 뒤 가공하여 만드는 것 (API Aggregation pattern) : 부하가 없다. 데이터가 적다. 실시간이 아니다 하는 경우에는 고려해볼 수 있음
비즈니스 로직이 포함된 API의 호출 빈도
를 파악해야한다. 너무 자주 호출되는 경우 Aggregation을 위한 각 서비스의 API가 부하를 받기 어려울 수 있다.다른 서비스에 장애를 전파
할 수 있다. : 예를 들어 충전은 됐으나 머니 추가가 안되는 경우 (서킷브레이커 고려)api의 중요도
장점
단점
command와 query를 분리하는 패턴
API를 위해서 이벤트를 활용하여 command와 query를 분리하고
query를 위한 별도의 서비스 식별
잔액 변동 감지
=> 데이터 오너십을 위반하는가?
데이터에 접근(query)은 하지만 변동 시키지는 않는다.
장점
단점