트러블 슈팅

상황Airflow를 이용해서 low한 통계 데이터를 집계하는 API를 호출하여 daily 과금 금액과 total 과금 금액을 집계한다. 이때 과금 금액을 "사용한 값" 이라고 하자. "사용한 값"은 00시에 0으로 리셋해준다. "사용할 값"은 하루에 총 소진되어야 할 시간 * 스케줄(06시 ~ 12시에만 소진되어야 하는 등의 설정이 가능하다) 그런데 리셋을 해주었음에도 불구하고 "사용할 값"이 갑자기 치솟아 과소진 된 이슈가 있었다. 원인쿼리의 구성은 이랬다. - 원시 통계 데이터를 가지고 1차 가공 디비에 업데이트 (따라서 시간이 오래 걸리고, Replace Into와 셀렉트 절을 사용한다)REPLACE INTO 1차 가공 테이블 (date, 통계 데이터) SELECT date, 식별자, 통계에 필요한..
상황프론트에서 특정 기능을 사용 유무를 판단하기 위한 boolean 값의 필드를 디비에 추가해야 할 일이 있었다.해당 기능은 CUD API를 제공해야 하는 기획이었으므로 DTO에도 필드값과 대응되는 멤버변수를 추가해주었다.그러나 API를 태워본 결과 결과 데이터 바인딩이 제대로 되지 않는 이슈가 있었다. 원인스프링이 내부적으로 Data Mapping을 할 때 사용하는 직렬화/역직렬화 라이브러리인 Jackson에 버그가 있었다. Jackson 라이브러리는 Java 객체를 JSON으로 직렬화할 때 get이나 is로 시작하는 메소드를 찾아서 해당 값들을 JSON 속성으로 매핑한다. 그런데 Jackson 라이브러리의 특정 버전에서는 is로 시작하는 메소드의 경우 이를 직렬화 및 역직렬화 대상에서 제외시키는 버그..
지혜와 본질을 추구하는 자
'트러블 슈팅' 태그의 글 목록