반복/중복 수행
Last updated
Last updated
화면에서 저장 이벤트가 발생이 되어 처리하는데 오랜 시간이 걸린다. 이것을 일반적으로 Long Transaction이 발생되었다고 이야기 한다. Long Transaction이 발생하는 여러 사유 중 반복/중복에 의해서 발생하는 것에 대해서 이야기 한다.
Application에서.많이 발생하는 문제로 업무 개발을 개발자 혼자 하는 경우 보다 영역(도메인)을 나누어서 개발 하는 경우 발생 많이 발생한다.
동일한 조건으로 동일한 결과를 내는 쿼리 및 RestAPI 반복 수행
틀린 조건으로 동일한 결과를 내는 쿼리 및 RestAPI 중복 수행
반복/중복 예시 Sequence에서 가입정보를 조회하는 부분이 4군데 있다. 조회 조건으로 가입번호, 전화번호, ID(PK)로 조회 하여 반복 4회, 중복 2회 이지만 실제 조회되 결과는 모두 가입정보로 동일한 결과를 가지는 것으로 빈번한 DB I/O가 발생 하여 성능이 늦어 진다.
반복/중복을 되지 않게 코드를 변경하는 것으로 변경하는 다음과 같은 방법으로 변경한다.
가장 일반적인 방법이지만 가장 안전한 방법으로 Transaction 구간에서 사용한 내부 객체를 만들어서 인수로 전달 하여 사용하고, 데이터의 수정이 발생하면 수정 후 반환 하여 Transaction구간내에서 정합성을 보장하여 처리한다.
Transaction 구간 내부에서 메서드를 여러개 호출 하고 있는데 파라메터로 객체를 넘길 수 없는 경우 공유 되는 객체에 대해서 Local Cache를 만들어서 Transaction 구간 안에서만 사용하도록 한다.
주의할 점은 Local Cache를 사용 하므로 Key 구조이다.
가장 좋지 않은 방법으로 Thread가 종료 될 때 지워 주어야 한다.