기술을 기술하다

[실수노트] 캐싱된 메서드는 변경 불가능한(Immutable) 객체를 반환토록 하자
상황호출될 때마다 같은 값을 반환할 것으로 기대되는 Service의 한 메서드를 캐싱 처리 하였다. 캐싱 처리한 메서드는 카테고리 데이터를 DB에서 가져와 리스트 형태로 반환하는 메서드였다. 카테고리 데이터가 자주 바뀌지 않아 긴시간 동안 같은 결과값을 반환하는데 매번 DB를 조회하는 것은 리소스를 낭비하는 것이기에 캐싱 처리를 하였다. 그런데, 배포를 하고보니 데이터 출력이 이상했다. 특정 화면에서 카테고리를 조회할 때 새로운 카테고리가 생기고 조회를 계속 할수록 새롭게 생긴 카테고리는 중복되어 출력되었다. 여기서 끝이 아니...