사이드 프로젝트를 진행하면서 실시간 검색어 순위를 구현해야 하는 일이 생겼다. 처음에는 Redis의 sorted set 구조를 이용하면 간단하게 해결이 되겠는데 싶었다. 실시간 성격이기 때문에 캐시를 적용해도 될것이라 생각을 했었다. 실제로 구현도 간단하였다. 하지만 근본적으로 캐시를 적용하는게 맞을까라는 고민이 들었다. 검색 결과까지 같이 반환해야 하기 때문이다. 물론 현재 사용하는 RDB인 MySQL의 like 기능을 이용해 %키워드% 검색을 구현할 수 있을것이다. 만약 해당 프로젝트가 성공해서 사용자가 많아진다면...? like는 full scan이기 때문에 성능에 치명적일것이란 판단을 내렸고 유명한 검색엔진인 Elastic Search와 Spring boot를 연동해 구현해야 겠다고 결론을 내렸다..