
1. 스프링부트3 Name for argument of type not specified 에러(Parameter Name Retention)[ SpringBoot3 Parameter Name Retention ]스프링부트3로 버전이 올라가면서 정말 많은 변경사항이 생겼는데, 그 중 하나가 Parameter Name Retention 관련된 부분이다. 해당 내용은 LocalVariableTableParameterNameDiscoverer 클래스가 스프링 프레임워크 6.0에서 deprecated되고, 스프링 프레임워크 6.1에서 삭제되었다는 것이다. 해당 클래스는 어떠한 역할을 하고 있으며, 어떠한 영향을 미치는지 살펴보도록 하자. LocalVariableTableParameterNameDiscoverer..

1. 유용한 개발 관련 아티클 및 영상 #26MySQL data_locks 관련 쿼리 버그heavy load 시스템에서는 아래 쿼리를 사용할 경우 메모리 문제 및 deadlock이 발생할 수 있음SELECT * from performance_schema.data_locks이 쿼리를 실행하면, 현재 데이터베이스에서 발생한 모든 데이터 락의 정보를 확인할 수 있고, 데이터베이스 성능 문제를 진단하거나, 데드락(Deadlock) 상황을 분석할 때 유용함하지만 해당 버그는 8.0.37 최종버전에도 fix되지 않은 상태임 출처: https://www.facebook.com/groups/623067261102382/permalink/7786132421462461/ ChatGPT를 opt-in(동의 서비스)으..

1. 로컬 캐시와 레디스를 함께 사용하는 2-Level Cache(2계층 캐시) 구현하기아래의 내용을 제대로 이해하기 위해서는 스프링이 제공하는 Cache와 CacheManager에 대한 이해가 필요하다. 따라서 이전 포스팅을 먼저 참고하도록 하자. [ 요구사항 정리 ]이번에 구현하고자 하는 기능은 스프링의 @Cacheble을 활용하여 로컬 캐시와 분산 캐시를 함께 사용하는 2-Level Cache(2계층 캐시)를 구현하는 것이다. 2계층 캐시란 동일한 캐시 요청(EmailToNameCache)에 대해 먼저 로컬 캐시(LocalCacheManager)를 조회하여 있으면 반환하고, 없으면 분산 캐시(RedisCacheManager)를 조회하여 그 결과를 반환하는 것이다. 이를 통해 분산 캐시에 대한 트..

1. 유용한 개발 관련 아티클 및 영상 #25Kotlin 1.9.2에 도입된 Enum entriesvalues의 경우매번 새로운 배열이 생성됨배열이 반환되는데, 일반적으로 리스트를 사용하기 마련임가변이므로, 얘기치 못한 버그가 발생할 수 있음entries의 경우상수로 값을 정의해두어 매번 새로운 배열을 복사하여 생성하지 않음확장함수를 통해 배열이 아닌 리스트를 반환함불변임 Enum.values() // 사용 XEnum.entries // 사용 O 출처: https://medium.com/@michalankiersztajn/enum-values-is-recommended-to-be-replaced-by-enum-entries-7b73e1ed7265 NodeJS는 웹서버가 아니라 Runtime이라는 의미..

# 1. 스프링이 제공하는 Cache 관련 기능 파헤치기[ Cache Abstraction(캐시 추상화) ]스프링이 가장 잘하는 것 중 하나를 뽑으라면 추상화(Abstraction)를 빼놓을 수 없다. 대표적으로 스프링은 트랜잭션 관련 공통 사항을 담은 트랜잭션 추상화 기술을 제공하고 있다. 이를 통해 각 애플리케이션에서는 데이터베이스 접근 기술(JDBC, JPA 등)에 종속적이지 않고 일관되게 트랜잭션을 처리할 수 있도록 도와준다. 데이터베이스 접근 기술을 JDBC에서 JPA로 변경해도 우리의 코드는 안전한 것이다.캐시 역시 마찬가지다. 로컬 메모리에서 동작하는 caffeine 캐시, 분산 저장소를 활용하는 Redis 캐시 등 다양한 캐시 구현체가 존재한다. 해당 기술을 직접 의존하면 캐시 구현체가 변..