API
-
api retry하기개발/java 2024. 8. 28. 13:06
msa 구조 내에서는 api 통신이 빈번하게 발생한다. 그중 gateway 관련된 오류의 경우 일시적인 경우가 많기에 재시도를 하면 해소 되는 경우가 많다 그러므로 해당 api의 응답코드(httpStatusCode)가 502 ,504인 경우 재호출을 하여 오류 빈도를 줄일 수 있다. 재시도의 경우 아래와 같이 HttpClient 내부에서 제공하는 HttpRequestRetryHandler를 이용하는 방법이 대표적이다. HttpRequestRetryHandler retryHandler = (exception, executionCount, context) -> { if (executionCount > 3) { // retry의 maxCount를 설정하여 false를 return 하면 재시도가 중단된..
-
dynamodb write개발/AWS 2024. 8. 20. 08:45
dynamodb에서 write의 경우 로우별 write와 데이터를 묶어서 write를 할 수 있는 기능이 있다.그 중 데이터를 묶어서 write를 하는 경우를 보려고 한다. 모든 api가 그렇듯 네트워크 비용이 증가하면 그만큼 지연이 발생한다 대량건을 빠른 시간 내에 처리를 해야하는 구조라면 로우별 write 보단 bulk 별 write를 고려할 수 있다. nosql인 dynamodb의 경우 key value 형태로 데이터가 저장되므로 aws model인 AttributeValue로 데이터를 변환하는 과정을 거쳐야 한다 AttributeValue 에는 다양한 형태가 있다 1. withS - 말 그대로 String 형태로 변환하는거로 tmp : "123" 같은 형태로 들어간다. 2. withL - Lis..
-
RESTAPI 이력감지개발/java 2024. 8. 19. 16:33
상황하나의 서비스 내에 여러 api가 호출이 되고 있다. 조건서비스의 공통 키를 기준으로 api 이력을 조회가 가능하게 파이프를 묶는다 방법 1.RequestBodyAdviceAdapter를 통해 Controller의 parameter를 읽어 공통 키를 ThreadLocal에 등록한다 2.RestTemplete을 config에 추가하고 interceptor를 처리할 class를 등록한다. 3.interceptor의 경우 httpStatusCode를 통해 동작을 하는게 일반적인데 공통의 Model이 있다면 변경하여 사용한다. 4.필요한 사항들을 HttpRequest request을 통해 받아서 DB 적재 한다 5.작업이 완료가 되면 ThreadLocal을 clear한다 cf) spring의 경우 ..