전체 글

· Spring
스프링 - Redission 분산락으로 동시성 문제 해결하기 예시 작성 일자 : 2024년 12월 13일   의존성 추가 dependencies { implementation 'org.redisson:redisson-spring-boot-starter:3.40.1'} spring-boot-starter-data-redis는 redisson-spring-boot-starter에 의존성을 가지고 있기 때문에 별도로 추가하지 않아도 됩니다.   프로퍼티 파일 작성 spring: data: redis: host: ${REDIS_HOST} port: 6379 password: ${REDIS_PASSWORD}   RedisConfig 클래스 작성 @Configuration@Req..
· Spring
스프링 - Redis CacheManager ClassCastException 해결하기 작성 일자 : 2024년 12월 07일   Cacheable 어노테이션 스프링에서는 @Cacheable 어노테이션을 사용하여 아래의 예시와 같이 메서드의 리턴 값을 캐싱할 수 있습니다.@Cacheable(value = "latest-post", key = "#root.methodName")public List getLatestPosts() { List posts = postRepository.findAllByOrderByCreatedAtDesc(); return posts;} Redis를 캐시 스토어로 사용할 때, cacheName이 latest-post인 캐시 하나만 사용하는 경우에는 문제가 발생하지 않지..
· Spring
스프링 - LLM Response를 Redis Streams와 SSE로 스트리밍 해보자 작성일자 : 2024년 11월 25일   개요 OpenAI, Claude와 같은 LLM API 제공자들은 응답 형태로 메세지 스트림을 제공하기도 합니다. 서비스의 프론트엔드와 LLM API 사이에서, 스프링부트를 통해 요청을 핸들링하고 싶은 경우에 Redis Streams와 SSE를 활용하여 프론트엔드로 메세지를 스트리밍할 수 있습니다. 이번 포스팅에서는 LLM API의 응답을 Redis Streams와 SSE로 스트리밍하는 방법을 알아보겠습니다.   왜 Redis Streams를 사용하게 되었는가? 상황 프론트엔드로의 메세지 스트림은 일반적인 HTTP 요청-응답 방식, 또는 SSE(Server-Sent Events)..
· 기타
Redis Pub/Sub 과 Redis Streams 작성일자 : 2024년 11월 24일    개요 Redis는 캐시 데이터 저장소로 널리 알려져 있지만, 단순한 데이터 캐싱 그 이상으로 활용할 수 있습니다. Redis는 메시징 및 이벤트 중심 아키텍처를 지원하기 위해 Redis Pub/Sub와 Redis Streams 두 가지 기능을 제공합니다. 이번 포스팅에서는 Redis Pub/Sub와 Redis Streams의 주요 차이점, 각각의 사용 시점, 장단점을 자세히 살펴보고, 어떤 상황에서 어떤 기능을 선택해야 할지 알아보겠습니다.   Redis Pub/SubRedis Pub/Sub은 Publisher와 Subscriber가 특정 채널을 통해 메시지를 주고받는 방식으로 작동합니다.  구조Publish..
· Spring
스프링 RabbitMQ 연동하기 작성 일자 : 2024년 11월 17일  본 포스팅에서 다루는 내용RabbitMQ 도커 컴포즈 파일 작성하기관련 의존성 추가하기프로퍼티 파일 작성하기RabbitMQConfig 작성하기Message Model 및 Producer/Consumer 작성하기사용 예시  RabbitMQ 도커 컴포즈 파일 작성하기 rabbitmq:4.0.3-management 이미지를 사용하여 RabbitMQ를 도커 컨테이너로 실행하기 위한 docker-compose.yml 파일을 작성합니다. management 는 RabbitMQ의 Management Plugin을 사용할 수 있도록 합니다. version: '3.8'services: rabbitmq: image: rabbitmq:4.0.3..
· Spring
각기 다른 Base URL의 WebClient 인스턴스 사용하기 작성 일자 : 2024년 11월 03일   개요 WebClient는 비동기 HTTP 호출을 위한 Spring Framework의 모듈입니다. WebClient는 WebClientConfig를 작성하여 Configuration 할 수 있으며, baseUrl을 설정하여 해당 URL로 요청을 보낼 수 있습니다. 실제 애플리케이션에서는 여러 서드파티 API를 사용하거나, 다양한 서비스를 호출할 때, 각기 다른 Base URL을 가지는 경우가 많습니다. 이번 포스팅에서는 여러 WebClient 빈을 각기 다룬 Base URL로 설정하는 방법에 대해 알아보겠습니다.   application.yml에 여러 Base URL 설정하기 먼저, 각 서비스에 대..
스프링 부트 - InputStream을 사용하여 URL로 부터 S3 버킷으로 이미지 업로드하기 작성 일자 : 2024년 10월 26일   개요 스프링에서 개발을 진행하면서 웹 상의 원격 URL에서 데이터를 가져와 S3 버킷에 이미지를 업로드하는 로직이 필요한 경우가 있습니다. 이번 포스팅에서는 HttpURLConnection과 AWS SDK for Java v2를 사용하여 이미지를 S3 버킷에 업로드하는 방법에 대해 알아보겠습니다.   의존성 추가 dependencies { implementation 'software.amazon.awssdk:s3:2.28.23'}추가로, S3Config 클래스를 생성하고 AWS Credentials를 설정합니다.   코드 예시 public class ImageUp..
gerrymandering
gerrymandering