Spring(11)
-
io.awspring 라이브러리를 활용한 Spring-Amazon S3 연동
개요 최근에 Spring 환경 프로젝트에서 S3로 파일을 업로드를 해야 하는 일이 있었다. 이전에는 org.springframework.cloud 라이브러리를 활용했는데, 상당 기능이 deplicate 되어 있었다. 따라서 io.awspring-s3 라이브러리를 활용했는데, 이전보다 훨씬 S3를 이용하는 것이 쉬웠다 세상 좋아졌네 위 라이브러리를 통한 S3 파일 업로드 구현 과정을 설명하고자 한다 전체 샘플 코드는 아래 링크로 https://github.com/phjppo0918/spring-io-awspring-s3-practice 0. 버킷 생성 이름 넣고, 리전 한국으로 설정하고, 퍼블릭 엑세스 차단 해제하고 시작하자 1. 라이브러리 추가 implementation platform("io.awspr..
2023.09.06 -
spring 환경에서 redis pub-sub을 이용한 멀티 캐스팅
도입 계기 기존에 대기자를 매칭하는 서비스를 제작하고 있었다. 해당 서비스는 SSE(Server Sent Event)로 구현하며, 각 서비스가 Sink 상태를 직접 관리하였다. 문제는 서비스가 Sink를 관리하다보니 스케일 아웃 진행시에 각 확장 서버가 대기자를 동기화가 되지 않는 문제가 있었다. 대기자를 동기화하기 위해서 새로운 대기자가 생기면 각 서버에 multicasting 하는 방법을 구상했다. 멀티 캐스팅이란? 네트워크에서 그룹으로 지정된 여러 대상에게 대이터를 전송하는 방식. 송신자는 그룹에 데이터를 전송하고, 해당 그룹에 가입된 수신자만 데이터를 수신하는 구조. redis pub-sub란? 인메모리 DB인 redis는 publish-subscribe 메시징 패턴을 지원하여 메시지를 발행하고 ..
2023.07.15 -
Spring Webflux 및 MVC Security환경 비교
개인적으로 느끼기에는 구조 자체는 MVC 환경 Security와 비슷하다. 허나 반환 형식이랑 체인 설정법만 조금씩 다른 느낌이다. SecurityConfig MVC 환경 @Configuration @EnableWebSecurity @RequiredArgsConstructor @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) public class SecurityConfig { JwtAuthenticationFilter jwtAuthenticationFilter; @Bean public SecurityFilterChain configure(HttpSecurity http) throws Exception { return http.authorize..
2023.07.15 -
Spring webflux를 활용한 SSE(Server Sent Event) 구현
SSE(Server Sent Event) 란? 서버의 데이터를 실시간으로 스트리밍 하는 기술 HTTP프로토콜 기반 text/event-stream 미디어 타입 사용 클라이언트와 서버가 최초 한 번 HTTP 연결 후 서버가 클라에게 지속적으로 데이터 전송 단방향 통신, 실시간 업데이트, 자동 재연결 기능 제공 spring에서 SSE 구현 방법 SseEmmiter Spring MVC에서 SSE를 구현하는 스택. 간단하게 사용 가능하고 스레드 기반으로 동작하나, 높은 리소스 사용하고 확장성에 제한이 있음 https://github.com/phjppo0918/SseEmitter-sample GitHub - phjppo0918/SseEmitter-sample Contribute to phjppo0918/SseEm..
2023.07.15 -
Spring Webflux - Scheduler
Scheduler란 Reactor Sequence에서 사용되는 스레드를 관리해주는 관리자 주요 역할 스레드 관리 비동기 작업을 실행할 스레드 풀을 관리 별도의 스레드에서 실행되며, 블로킹되지 않고 비동기적으로 처리 작업 스케줄링 비동기 작업 실행을 스케줄링. 즉시/지연/주기적 실행 등 다양한 옵션 제공 백프레셔 관리 백프레셔 : Publisher와 Subscriber 간 데이터 흐름 제어, 작업 속도를 조절하여 효율적 데이터 처리를 가능하게 함 Scheduler 전용 Operator subscribeOn(), publishOn() 이 Scheduler 전용 Operator임 적절한 Scheduler를 전달하면 해당 특성에 맞는 스레드가 Reactor Sequence에 할당 subscribeOn() 구독이..
2023.07.15 -
Spring Webflux Sink
Sinks란? Reactor에서 Processor(Publisher + Subscriber) 을 개선한 구현체 Signal을 프로그래밍 방식으로 푸시 Flux 및 Mono의 의미 쳬계를 가짐 멀티 스레드 방식으로 Signal을 전송해도 스레드 안정성 보장 Sinks 사용 방법 Sinks.One 한 건의 데이터를 전송 Mono 방식으로 Subscriber가 데이터를 소비할 수 있도록 함 @Test @DisplayName("mono test") void sinkTest() { Sinks.One sinkOne = Sinks.one(); Mono mono = sinkOne.asMono(); sinkOne.emitValue("Hello", Sinks.EmitFailureHandler.FAIL_FAST); mono..
2023.07.15