본문 바로가기

개발중

(617)
Redis Pub/Sub 기반 SSE 실시간 알림 삽질 통해 구현하기. 첫 번째와 두 번째 클라이언트는 첫 번째 서버와 SSE 연결을 맺었기 때문에, 두 번째 서버는 이 두 클라이언트와의 SSE 연결 정보를 가지고 있지 않습니다.만약에 A 파드에서 알림이 발생했을 경우에는 첫번째 클라이언트와 두번째 클라이언트에게 SEE 를 사용해서 알림을 보낼 수 있습니다. 하지만 B 파드에서 알림이 발생했을 경우에는 ?첫번째 클라이언트와 두번째 클라이언트의 SSE 정보가 없기 때문에 전송할 수 없습니다.  그래서 레디스의 Sub/Pub 기능을 이용해서 알림 상태를 모든 Pod 에게 전달하기로 했습니다.Redis Sub / Pub 참고 ...  Redis Config 에 RedisMessageListenerContainer, MessageListenerAdapter 빈등록을 해줍시다. 일단..
Redis Pub/Sub 에 대해서 알아보기. Redis Pub/Sub Redis Pub/Sub(Publish/Subscribe)는 Redis에서 제공하는 메시징 시스템으로, 발행자(Publisher)가 메시지를 특정 채널에 발행하고, 구독자(Subscriber)는 해당 채널을 구독하여 메시지를 수신하는 방식입니다.  이 방식은 비동기적 통신을 가능하게 하며, 발행자와 구독자가 서로 직접적으로 통신하지 않고, Redis가 중간에서 메시지를 라우팅하는 역할을 합니다. Redis Pub/Sub 동작 방식Publisher (발행자)발행자는 특정 채널로 메시지를 보냅니다.발행자는 메시지를 보낼 때 구독자가 있는지 여부를 알 필요가 없습니다.여러 구독자가 있으면, 같은 채널을 구독한 모든 구독자에게 메시지가 전송됩니다. Subscriber (구독자)구독자는 ..
ApplicationListener 를 이용해서 어플리케이션 기동시 에러날 경우에 대처하기. 개요CI/CD 환경에서 애플리케이션을 배포할 때는, 수동 배포와 달리 애플리케이션 기동 중 발생하는 에러를 즉각적으로 파악하기 어려울 수 있습니다. 수동 배포의 경우, 직접 로그를 확인하며 에러를 바로 인지할 수 있지만 CI/CD 파이프라인을 통해 자동화된 배포가 이루어질 때는 이를 실시간으로 감지하고 대응하기가 쉽지 않습니다. 이러한 상황을 해결하기 위해, 애플리케이션이 기동 중에 에러가 발생하면 즉시 알림을 받을 수 있도록 설정할 수 있습니다. ( 물론 다양한 방법이 있지만 그중에 하나 입니다. ),  이를 위해 Spring의 ApplicationListener와 ApplicationFailedEvent를 활용할 수 있습니다. ApplicationFailedEvent는 애플리케이션 로딩 중 예외가 발..
[Apache Tomcat] 톰캣 일자별 로그 나누기 톰캣 일자별 로그 나누기Tomcat 서버 운영 중 로그 관리의 중요성을 인식하게 되었습니다. 단일 catalina.out 파일에 모든 로그가 누적되어 관리와 분석에 어려움을 겪었습니다. 이에 로그를 일자별로 분리하여 관리하는 방법을 모색하게 되었습니다. 이 글에서는 Tomcat의 catalina.sh 스크립트를 수정하여 일별 로그 파일을 생성하는 과정과, 이를 통해 얻을 수 있는 이점, 그리고 구현 과정에서 마주친 문제점들을 공유하고자 합니다. rotatelogs 위치 찾기 rotatelogs란 Apache HTTP Server 프로젝트의 로그 관리 유틸리티로, 로그 파일을 주기적으로 순환(rotate)시키는 기능을 제공합니다. 아래와 같이 rotatelogs 의 위치를 찾습니다.[root@RC9-19 ..
Mono와 Flux의 차이점과 활용법 - Spring WebFlux Flux와 MonoSpring WebFlux의 Flux와 Mono는 반응형 프로그래밍 모델의 두 가지 주요 구성 요소입니다. Mono Mono는 0 또는 1개의 요소를 비동기적으로 제공하는 Publisher입니다. 단일 값 또는 빈 값의 비동기 처리를 나타냅니다.Mono mono = Mono.just("Hello, Mono!");mono.subscribe(System.out::println);  Flux Flux는 0개 이상의 요소를 비동기적으로 제공하는 Publisher입니다. 여러 값의 스트림을 처리할 때 사용됩니다.Flux flux = Flux.just("Hello", "Flux", "World!");flux.subscribe(System.out::println);  예제 코드 Mono 예제Mono..
Spring Boot 3와 WebClient: 비동기식 HTTP 요청을 쉽게 구현하기 WebClient Spring Boot 3에서 WebClient는 비동기 및 동기식 HTTP 요청을 수행하기 위해 사용되는, 강력하고 유연한 HTTP 클라이언트입니다. WebClient는 Spring 5에서 처음 도입되었으며, Spring Boot 2.x 및 3.x에서도 계속해서 사용되고 있습니다. 이는 Spring의 기존 RestTemplate을 대체하는 역할을 수행하며, 비동기식 API 호출을 더욱 간편하게 구현할 수 있도록 합니다.  주요 특징 비동기 및 동기식 요청WebClient는 비동기식과 동기식 요청을 모두 지원합니다.반응형 프로그래밍 지원WebClient는 Reactor 라이브러리를 기반으로 하여, 반응형 스트림을 활용한 비동기 프로그래밍을 지원합니다.플러그인 아키텍처요청 및 응답을 변환하..
Spring Boot 3와 Redis: 로컬 도커 환경에서 시작하기 이 블로그 포스트에서는 로컬 개발 환경에서 Docker를 활용하여 Redis를 설치하고 구성하는 과정을 안내합니다. Redis는 다양한 개발 상황에서 선호되는 오픈 소스, 인 메모리 키-값 데이터베이스로, 빠른 성능과 높은 확장성을 제공합니다. 또한, 최신 Spring Boot 3 프레임워크와의 통합을 통해 실제 어플리케이션 개발 상황을 시뮬레이션하며 기초적인 CRUD 작업을 수행하는 예제를 소개하고자 합니다. Docker를 이용한 Redis 설치docker 에서 redis 설치 후 실행 시키는 방법 1. Redis 이미지 다운로드 Redis Docker 이미지를 다운로드합니다. 터미널 또는 커맨드 라인을 열고 다음 명령을 실행합니다: docker pull redis2. Redis 컨테이너 실행 다운로드..
Spring Boot 3.x 및 Security 6.x를 이용한 중복 로그인 관리 방법 이 글은 Spring Boot 3.x와 Security 6.x를 활용하여 중복 로그인을 관리하는 방법에 대해 설명합니다.Spring Security의 세션 관리 기능을 사용하여 동일 사용자의 중복 로그인 시도를 제어하는 방법을 다룹니다.  중복 로그인은 보안 및 세션 관리 측면에서 중요한 문제입니다. 특히 Spring Boot와 Spring Security를 사용하여 안전하고 효율적으로 중복 로그인을 관리하는 방법에 대해 알아보겠습니다. 로그인 성공 시 세션에 사용자 정보 저장하기 먼저, 사용자의 로그인 정보를 세션에 저장하는 방법을 살펴보겠습니다. Spring Security에서는 로그인 성공 시에 AuthenticationSuccessHandler를 통해 로그인 이후의 작업을 처리할 수 있습니다. 아..