중간에 오류가 발생했을때 롤백 플랜 등 트랜잭션 관리 데이터 정합성은 어떻게 관리하시나요?

2015-12-25 09:08

@jhindhal.jhang MSA로 아키텍쳐가 변경되면 트랜잭션 처리가 중요할거 같은데요~ 특히 발표해주셨던 서비스중 크게 상품, 주문, 배송, 쿠폰 이렇게만 보았을때 주문입장에선 상품의 재고 관리, 배송정보, 보유한 쿠폰 등 Rest API를 통해서 상태 부터 보유수량 등 관리 할것으로 보이는데요~ 만약 중간에 오류가 발생했을때 롤백 플랜 등 트랜잭션 관리 데이터 정합성은 어떻게 관리하시나요? 배치로 정합성한다고 들었는데 그외에 다른 플랜이 있나요? 한가지 더 주문시 필요한 연관 데이터가 많을거 같은데요~ DB를 분리하면서 쿼리하나로 받아올수 있는 데이터셋을 각각 서비스 API를 통해 데이터를 조합한다는 면에서는 처리효율성이 어떻게 달라졌는지 알수 있을까요? 감사합니다

1개의 의견 from SLiPP

2015-12-22 10:19

@레고

기본적으로 타 도메인과의 트랜잭션은 비동기로 처리 하고 있기때문에 실패시에는 재처리(message queue재처리)를 하고있습니다. 다만 그러한 데이터의 정합성 check를 위하여 매 5분 또는 10분단위의 데이터 비교(주문-배송데이터) batch가 돌면서 어느한쪽의 데이터가 맞지 않을경우 noti를 주고 이걸 처리하는 방식으로 되어있습니다.
(일반적으로 99%의 상황에서는 데이터가 틀어질 경우가 없으며 특정 장애로 인하여 데이터 정합성이 맞지 않는 경우는 해당 기간동안의 거의 모든 데이터를 재처리 하는 경우가 대부분입니다. 그렇기에 특정건만 누락된다던지 하는 경우는 거의 발생하지 않는 다고 판단하고 있습니다.)

정확한 데이터를 제공해 드리기에는 보안상 이슈가 있을듯 하고 실제 복잡한 비지니스(타 도메인데이터가 대량으로 필요한 경우)가 아니라면 성능상의 이슈는 없습니다. 다만 10개 이상의 외부 API를 사용하는 부분에서는 성능상의 이슈가 있습니다. 대략 13개의 외부 api를 사용하는 복잡한 비지니스는 2배정도의 응답속도 지연이 있었습니다. (이부분은 multi get과 같은 병렬 처리로 개선중이며 향후 지속적으로 개선해야되는 숙제입니다.)

의견 추가하기

연관태그

← 목록으로