Spring Webflux 실습 - 2
·
프레임워크/자바 스프링
간단한 spring boot 서버를 만들어 줍니다.`mvc` 서버라고 지칭하겠습니다.package com.example.mvc;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import java.util.Map;@SpringB..
Spring Webflux 실습 - 2
·
프레임워크/자바 스프링
간단한 spring boot 서버를 만들어 줍니다.`mvc` 서버라고 지칭하겠습니다.package com.example.mvc;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import java.util.Map;@SpringB..
Spring Webflux 실습 - 1
·
프레임워크/자바 스프링
Spring WebFlux를 이용한 서버 구성Spring Framework를 이용해 실제 서버를 구성하는 과정에서, 각각의 Controller, Service, Repository가 WebFlux 스타일로 어떻게 구현되는지 알아보겠습니다.ControllerSpring WebFlux에서는 컨트롤러를 구현하는 두 가지 방식이 있습니다:Functional EndpointAnnotation Endpoint프로젝트 설정 (application.yml)먼저, Spring Boot 애플리케이션의 설정을 application.yml에 정의합니다. 다음은 애플리케이션의 이름과 로그 레벨을 설정하는 코드입니다:spring: application: name: webflux1logging: level: root..
Webflux - reactor
·
프레임워크/자바 스프링
Reactive Streams와 Spring WebFlux: 비동기 스트림 처리의 핵심 이해비동기 논블로킹 I/O는 현대 웹 애플리케이션에서 매우 중요한 기술입니다. 특히, Reactive Streams는 비동기 데이터를 효율적으로 처리하기 위한 표준을 정의하고, 이를 통해 고성능의 서버 애플리케이션을 구축하는 데 필수적인 역할을 합니다. 이번 포스트에서는 Reactive Streams, Reactor, Spring WebFlux의 개념을 이미지 기반으로 설명하고, 이들이 어떻게 비동기 스트림 처리를 구현하는지 살펴보겠습니다.1. Reactive Stream 계층 구조Reactive Streams는 비동기 스트림 처리에서 non-blocking 방식과 back pressure 메커니즘을 통해 데이터를 효..
Webflux - spring mvc vs webflux
·
프레임워크/자바 스프링
spring mvc와 webflux에 대한 비교를 해보겠습니다.reactive stack은 spring boot2 버전부터 지원되고 있습니다.Reactive StackReactive Stack은 비동기적이고 논블로킹 방식으로 작동하는 스택입니다. Spring WebFlux는 이 스택의 중심에 있으며, Reactive Streams API와 Reactor 라이브러리를 기반으로 구축되었습니다. Reactive Stack은 다음과 같은 특징을 가지고 있습니다:논블로킹 I/O: 여러 요청을 병렬적으로 처리할 수 있어, 대규모 트래픽 처리에 적합합니다.멀티코어 프로세서 활용: 다중 코어를 효과적으로 사용하여 고성능을 달성할 수 있습니다.Netty 및 Servlet 3.1+와 같은 비동기 컨테이너에서 실행되며, 동..
Webflux 소개
·
프레임워크/자바 스프링
Spring WebFlux는 Reactive Stream API를 기반으로 한 비동기, 논블로킹 웹 프레임워크로, 대량의 트래픽과 I/O가 많은 환경에서 기존 서블릿 기반의 Spring MVC보다 더 효율적인 성능을 제공합니다. WebFlux의 핵심 키워드는 Reactive Stream, Non-blocking, Asynchronous입니다.주요 활용 사례마이크로서비스 게이트웨이(Gateway)WebSocket실시간 채팅 서비스하지만 모든 상황에서 Spring WebFlux가 최적은 아닙니다. 특히 CPU Bound 작업(연산이나 계산이 주가 되는 경우)에서는 Spring MVC와 같은 동기 처리 방식이 더 나은 성능을 발휘할 수 있습니다. 반면, I/O Bound 작업(입출력 작업이 많은 경우)에서는 ..
접속자 대기열 시스템 #1: 시스템 설계와 Spring WebFlux, Redis
·
프레임워크/자바 스프링
1. 접속자 대기열 시스템 (Spring WebFlux + Redis)1.1 프로젝트 설명접속자 대기열 시스템입니다.이벤트 티켓 예매와 같은 이커머스에서 주로 사용됩니다. 특정 시간대에 이벤트가 발생하게 되면 사용자가 많이 몰리게 되면 트래픽이 급겹하게 몰리게 됩니다.짧은 시간안에 이런 트래픽을 처리 하기 위해서는 특정 기술이 필요합니다. 단순한 Spring MVC가 아닌 Spring Webflux와 Redis를 활용합니다. Spring WebFlux와 Redis가 어떻게 대기열을 관리하는지 보여줍니다.1단계: 대기 페이지 요청/응답사용자가 웹 애플리케이션 서버에 접속을 시도하면, 서버는 사용자에게 대기 페이지를 응답합니다. 이 대기 페이지에서 사용자는 대기열에 등록됩니다.2단계: 대기열 등록사용자가 대..
대규모 트래픽 게시판 구축 시리즈 #14: 배포 자동화
·
프레임워크/자바 스프링
CI/CD는 지속적인 통합과 지속적인 배포라 합니다.Continious IntegrationContinious Delivery(Deployment)CI Process코드작성자동빌드자동 테스트자동화된 통합CD ProcessCI를 통한 자동화자동 배포 준비수동 승인자동 배포GradleGradle은 JVM 기반 프로젝트를 빌드하고 관리하기 위한 오픈소스빌드 자동화 도구플러그인 시스템 :다양한 플러그인을 제공하며, 다양한 프로젝트 유형 지원의존성 관리: Gradle은 프로젝트의 의존성 관리멀티 프로젝트 빌드: Gradle은 여러 프로젝트를 하나의 빌드로 관리 가능.빌드 캐시 : 빌드 시간을 최적화하기 위해 Gradle은 이전 빌드에서 생성된 산출물을 캐시하고 빌드 시간을 단축유연한 태스크: Gradle은 태스크..