[Elasticsearch] Elasticsearch 기본용어와 CRUD 명령어-elastic ▶ 들어가며 이번 글에서는 Elasticsearch를 공부하면서 가장 먼저 익혀야 하는 기본 용어를 정리하고,직접 코드를 쳐가며 CRUD(Create / Read / Update / Delete) 명령어에 익숙해지는 시간을 가져보려고 한다. Elasticsearch는 처음 보면 생소한 용어가 많아서 막막할 수 있는데,사실 구조적으로는 우리가 익숙한 MySQL과 닮은 부분이 굉장히 많다. 둘 다 데이터베이스라는 큰 틀 안에서 데...Feb 17, 2026·4 min read
비관적 락과 낙관적 락, 그리고 예약 시스템에서의 동시성 문제 해결 전략ReservationSlot 단위 비관적 락을 통한 정원 초과 및 중복 생성 방지 1. 예약 시스템에서 실제로 어떤 동시성 문제가 발생했는가? 이 예약 시스템은 다음 조건을 가진다. 같은 사진관 같은 날짜 같은 시간대 에 대해 여러 사용자가 동시에 예약 요청을 보낼 수 있다. 이때 락이 없다면 다음 문제가 발생할 수 있다. 1️⃣ 정원 초과 문제 정원 5명 A 요청: 현재 예약 4명 → OK B 요청: 현재 예약 4명 → OK → ...Feb 10, 2026·3 min read
[Redis] Redis 캐시 방어 로직 추가 및 Upstash 연결하기드디어 Redis가 죽으면 어떻게 할지 방어 로직을 추가했다. 1. 조회 캐시 vs 인증/토큰 먼저, Redis가 다운되는 것뿐만 아니라 지연되는 것도 생각해야 된다. 그래서 redis가 다운/지연된다면 DB로 fallback 하는 로직을 추가하게 되었다. 하지만 지금 redis를 사용하는 부분은 인기글 조회, 인기 현상소 조회와 인증/토큰 부분이었다. Redis -> 실패/타임아웃 -> DB 조회 조회 캐시는 이런 흐름으로 방어 로직을 넣...Feb 9, 2026·2 min read
[Redis] Redis 캐시 설정 수정 - DefaultTyping.EVERYTHING 삭제지난번에 설정한 DefaultTyping.EVERYTHING에서 보안 문제가 생길 수 있다는 이슈를 들었다. 그래서 이번엔 그 부분을 제거하는 방향으로 수정하게 되었다. 1. DefaultTyping.EVERYTHING의 문제점 처음 설계는 Redis용 ObjectMapper에 DefaultTyping.EVERYTHING를 써서 모든 캐시 데이터에 강제로 자바 클래스 정보(@class)를 다 넣는 구조였다. 하지만 이러면 몇 가지 문제가 생기...Feb 9, 2026·2 min read
[Redis] Redis 캐시 적용하기 - 인기글 조회 적용지난번 진행했던 Redis 초기 세팅을 바탕으로 오늘은 홈페이지의 인기 게시물 조회 API에 캐시를 적용했다. 인기 게시물은 좋아요 수 기준으로 상위 10개를 불러온다. 실시간으로 데이터가 급격히 변하지 않지만 메인 페이지의 특성상 호출 빈도가 매우 높다. 매번 DB를 조회하는 대신 Redis 캐시를 사용해 성능을 개선했다. 1. RedisConfig 설정 @Configuration @EnableCaching public class Redis...Feb 9, 2026·3 min read