Spring Retry
·
개발
분산환경에서 짧은 네트워크 중단 또는 일시적인 서비스 불가한 상황에 발생할 때가 있다. 일부 장애는 지속적으로 발생하여 사람의 개입이나 시스템 변경이 필요할 수 있지만 대부분 일시적이어서 재시도를 통해 해결될 때가 있다. 이때 사용하는 것이 Spring Retry이다. Spring Retry는 추상화된 retry operation을 제공한다. 때문에 개발자들이 retry logic을 어플리케이션에 간편하게 추가할 수 있다. 특히나, 일시적인 오류가 문제가 되는 외부 시스템을 다룰 때 굉장히 유용하다.  사용 방법코드에 적절한 종속성을 추가하고 실패 시 재시도해야 하는 메서드에 어노테이션을 달면된다.@Serviceclass MyService { // Retryable: 최대 3번 재시도, 2초 대기 ..
보상 트랜잭션으로 분산 환경에서도 안전하게 환전하기!
·
개발/Server
1. 분산 환경이 만들어진 이유?- monolithic system : 서비스가 커지며 배포/개발 경험/단일 장애점/확장성에 문제가 발생- MSA로 분리 -> 기존에 존재하던 로직들을 분리된 서버로 옮겨가는 방식- 신규 domain에 대해서는 DB까지 분리된 MSA서버에 개발- 환전이 같은 DB + 단일 서버에 구현되어 있다면, 굉장히 간단하게 구현이 가능함. e.g) transaction을 열어 각 계좌(원화/외화)에 업데이트 후 transaction commit하면 됨 (쉽게 원자성 보장가능)- 분산 환경에서 원화 계좌/ 외화 계좌가 분리되고 각각의 DB를 사용할 경우?! 분산 트랜젝션을 통해 원자성을 보장해야함  2. 2PC(2 phase commit) vs SAGA(Saga pattern)- 분산..