지금까지 S/W 개발하면서 경험했던 캐시(Cache)들 소개
안녕하세요, 하마연구소입니다. 컴퓨팅에서 캐시(Cache)는 데이터에 빠르게 접근하기 위한 레이어로 데이터 로딩이 지연되거나 병목이 예상되는 앞단에 위치합니다. CPU와 메모리 사이에 있는 L1, L2, L3 캐시나 빠른 I/O 처리를 위하여 스토리지(HDD, SSD 등)에도 사용됩니다. H/W뿐만 아니라 S/W에서도 자주 사용되며 적절한 캐시 설계에 따라 성능을 극대화할 수 있습니다. 보통 어플리케이션과 영구저장소 또는 다른 어플리케이션 사이에 위치합니다. 요즘은 분산 클러스터링 환경에서 편리성과 훌륭한 속도를 내는 Memcached나 Redis를 많이 사용하며, 언젠가부터는 Memcached도 캐시 설계할 때 도입 대상에서 제외되는 추세로 보입니다. 왠만하면 Redis 사용합니다. 제가 지금까지 경험했던 캐시 솔루션을 정리해 보려고 합니다. 보통 Java 기반으로 어플리케이션을 작성하였기에 그에 맞는 캐시를 많이 경험한 점 참고하시기 바랍니다. 1. 로컬캐시 Ehcache Java 기반 어플리케이션 개발하면 가장 쉽게 접하는 캐시입니다. 어렵지 않은 설정으로 다양한 캐시 기능을 사용할 수 있으며, 역사도 꽤 길기에 믿고 사용하면 됩니다. 다양한 기능으로는 영속성을 보장하기 위한다면 캐시 데이터 디스크 저장할 수 있으며, 어플리케이션의 여러 프로세스들 간에 공유하여 분산 캐시를 구성할 수도 있습니다. 단, 캐시 기능에 더이상 새로운 기능을 넣을께 없어서 그런지 라이브러리 업데이트가 활발하지는 않습니다. https://www.ehcache.org/ Caffeine 2010년대 중후반 부터 Spring Boot에서는 기본 캐시 라이브러리를 Ehcache에서 Caffeine으로 변경하였습니다. 아마 Spring Boot 버전 2부터였던 것으로 기억합니다. Ehcache가 제공하는 기능이 많아지고 그만큼 무거워졌기 때문에 로컬 캐시라는 본연 기능에 충실하고자 심플한 카페인 캐시 라이브러리가 각광 받았습니다. 또한 스프링에서 아주아주 간단한 설정만으로 쉽게 캐...