Closed kor-Chipmunk closed 8 months ago
스트리밍 Tomcat & MVC 웹소켓을 Netty & WebFlux 웹소켓으로 전환합니다. 트랙 변화 이벤트를 생성하는 카프카 이벤트 발행 코드를 추가합니다.
Tomcat 대신 비동기 I/O 처리에 강한 Netty 를 채택하려고, WebFlux WebSocket 구조로 전환합니다. 트랙 변화 시 차트 서버에서 이용할 이벤트를 발행합니다.
TRACK_CHANGED
ffmpeg
Web MVC 공통 모듈 대신 Reactive 공통 모듈로 전환합니다.
package com.lalala.streaming import com.lalala.config.KafkaProducerConfig import com.lalala.reactive.config.CommonReactiveModuleConfig import lombok.extern.slf4j.Slf4j import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication import org.springframework.context.annotation.Import @Import( CommonReactiveModuleConfig::class, KafkaProducerConfig::class, ) @Slf4j @SpringBootApplication class StreamingApplication fun main(args: Array<String>) { runApplication<StreamingApplication>(*args) }
WebFlux WebSocket 으로 전환합니다.
WsConfig
HandlerMapping
StreamingHandler
WebSocketHandler
Handler 구현 시 기존 코드를 최대한 변경하지 않습니다. handleTextMessage() 메소드가 Flux<HandlerMapping> 를 반환하도록 시그니처를 수정합니다.
handleTextMessage()
Flux<HandlerMapping>
fun handleTextMessage(session: WebSocketSession, payload: String): Flux<WebSocketMessage> { ... }
No response
3/6 ~ 3/12 : 작업
요약 (Summary)
스트리밍 Tomcat & MVC 웹소켓을 Netty & WebFlux 웹소켓으로 전환합니다. 트랙 변화 이벤트를 생성하는 카프카 이벤트 발행 코드를 추가합니다.
배경 (Background)
Tomcat 대신 비동기 I/O 처리에 강한 Netty 를 채택하려고, WebFlux WebSocket 구조로 전환합니다. 트랙 변화 시 차트 서버에서 이용할 이벤트를 발행합니다.
목표 (Goals)
TRACK_CHANGED
이벤트 & 카프카 프로듀싱 구현목표가 아닌 것 (Non-Goals)
ffmpeg
프로세스 생성 로직 최적화 X계획 (Plan)
Web MVC 공통 모듈 대신 Reactive 공통 모듈로 전환합니다.
WebFlux WebSocket 으로 전환합니다.
WsConfig
설정에서HandlerMapping
빈을 생성하도록 수정StreamingHandler
핸들러를WebSocketHandler
인터페이스 구현하도록 수정Handler 구현 시 기존 코드를 최대한 변경하지 않습니다.
handleTextMessage()
메소드가Flux<HandlerMapping>
를 반환하도록 시그니처를 수정합니다.이외 고려 사항들 (Other Considerations)
No response
마일스톤 (Milestones)
3/6 ~ 3/12 : 작업