donga-it-club / past-foward-backend

Past Forward Backend
2 stars 5 forks source link

refactor: 회고카드 생성 및 조회 캐싱 처리 #302

Closed heemanglee closed 1 month ago

heemanglee commented 2 months ago

개요

변경 사항

테스트

배포 계획

heemanglee commented 2 months ago
heemanglee commented 2 months ago

@JinseongHwang 님 현재 issue와 관련해서 질문이 있는데 대화가 가능할까요?!

JinseongHwang commented 2 months ago
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule()); // Java 8 날짜/시간 모듈 등록
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // ISO-8601 형식 사용

이 코드가 중복되는데 ObjectMapperFactory.get() <- 를 싱글턴으로 만들어 보는건 어떨지요?

heemanglee commented 2 months ago

@JinseongHwang 님 언급해주신 부분 관려해서 개선해보았습니다.

추상화된 CacheRepository를 사용하니 의존도가 줄어드는 것 같아 관리하기 편했습니다. 또한 이벤트 리스너를 사용하여 SectionService가 redis 작업을 하지 않도록 책임을 분리하였습니다. 다만, 이벤트 리스너에서 이벤트를 처리하다가 예외가 발생하면 캐싱되어 있는 데이터를 삭제하는 방향으로 처리하였습니다.


읽기 전략으로는 Look Aside 패턴을 사용했고, 쓰기 전략으로는 Write Around 전략을 사용하여 DB와 Redis 간에 데이터 정합성을 맞추었습니다.