Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
요구사항
기본
Spring Event - 파일 업로드 로직 분리하기
[ ] BinaryContentStorage.put을 직접 호출하는 대신 BinaryContentCreatedEvent를 발행하세요.
[ ] 이벤트를 받아 실제 바이너리 데이터를 저장하는 리스너를 구현하세요.
[ ] 바이너리 데이터 저장 성공 여부를 알 수 있도록 메타 데이터를 리팩토링하세요.
[ ] 바이너리 데이터 저장 성공 여부를 메타 데이터에 반영하세요.
Spring Event - 알림 기능 추가하기
[ ] 채널에 새로운 메시지가 등록된 경우 알림을 받을 수 있도록 리팩토링하세요.
[ ] 사용자의 권한(Role)이 변경된 경우 알림을 받을 수 있도록 리팩토링하세요.
[ ] 알림 API를 구현하세요.
[ ] 알림이 필요한 이벤트가 발행되었을 때 알림을 생성하세요
비동기 적용하기
[ ] 비동기를 적용하기 위한 설정(AsyncConfig) 클래스를 구현하세요
[ ] 앞서 구현한 Event Listener를 비동기적으로 처리하세요
[ ] 동기 처리와 비동기 처리 간 성능 차이를 비교해보세요
비동기 실패 처리하기
[ ] S3를 활용해 바이너리 데이터 저장 시 자동 재시도 매커니즘을 구축하세요.
[ ] 재시도가 모두 실패했을 때 대응 전략을 구축하세요
캐시 적용하기
[ ] Caffeine 캐시를 위한 환경을 구성하세요
[ ] @Cacheable 어노테이션을 활용해 캐시가 필요한 메소드에 적용하세요.
[ ] 데이터 변경 시, 캐시를 갱신 또는 무효화하는 로직을 구현하세요.
[ ] 캐시 적용 전후의 차이를 비교해보세요.
[ ] Spring Actuator를 활용해 캐시 관련 통계 지표를 확인해보세요.
심화
Spring Kafka 도입하기
[ ] Kafka 환경을 구성하세요
[ ] Spring Event를 Kafka로 발행하는 리스너를 구현하세요.
[ ] Kafka Console을 통해 Kafka 이벤트가 잘 발행되는지 확인해보세요.
[ ] Kafka 토픽을 구독해 알림을 생성하는 리스너를 구현하세요.
Redis Cache 도입하기
[ ] Redis 환경을 구성하세요.
[ ] DataGrip을 통해 Redis에 저장된 캐시 정보를 조회해보세요.
주요 변경사항
멘토에게