Spring

    [리액티브 프로그래밍] 마블 다이어그램(Marble Diagram)

    [리액티브 프로그래밍] 마블 다이어그램(Marble Diagram)

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr 마블 다이어그램(Marble Diagram)이란? ✅ 마블 다이어그램 비동기적인 데이터 흐름을 시간의 흐름에 따라 시작적으로 표시한 다이어그램. 그림에 나와있는 번호 순서대로 설명하자면, Publisher가 데이터를 emit하는 타임라인. 가운데 Operator를 기준으로 Upstream의 Publisher라고 볼 수 있다. (Source Flux) Publisher가 emi..

    [리액티브 프로그래밍] Reactor 개요

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr Reactor란? ✅ Reactor Spring Framework 팀 주도하에 개발된 리액티브 스트림즈의 구현체. Spring Framework 5 버전부터 Spring WebFlux 기반의 리액티브 애플리케이션을 제작하기 위한 핵심 역할을 한다. -> Reactor Core 라이브러리가 Spring WebFlux 라이브러리에 포함되어 있다. Hello Reactor 코드로 ..

    [리액티브 프로그래밍] 리액티브 프로그래밍을 위한 사전 지식

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr 함수형 인터페이스(Functional Interface) 리액티브 프로그래밍을 잘 사용하기 위해서 기본적으로 함수형 프로그래밍 기법을 알아야 한다. ✅ 함수형 인터페이스 단 하나의 추상 메서드만 정의되어 있는 인터페이스. 함수를 일급 시민으로 취급하여, 함수 자체를 파라미터로 전달할 수 있다. ex) Comparator public class Example4_1 { publi..

    [리액티브 프로그래밍] Blocking I/O와 Non-Blocking I/O

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr Blocking I/O 하나의 스레드가 I/O에 의해서 차단되어 대기하는 것. -> 멀티스레딩 기법으로 차단된 시간을 효율적으로 사용할 수는 있으나, 이 방식도 몇 가지 문제점이 있다. ✅ 컨텍스트 스위칭으로 인한 스레드 전환 비용 프로세스 정보를 PCB에 저장, reload 하는 시간 동안에는 CPU가 다른 작업을 하지 못하고 대기한다. -> 컨텍스트 스위칭이 많으면 CPU..

    [리액티브 프로그래밍] 리액티브 스트림즈(Reactive Streams)

    [리액티브 프로그래밍] 리액티브 스트림즈(Reactive Streams)

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr 리액티브 스트림즈(Reactive Streams)란? ✅ 리액티브 스트림즈 리액티브 라이브러리를 어떻게 구현할지 정의해 놓은 표준 사양. -> 데이터 스트림을 Non-Blocking이면서 비동기적인 방식으로 처리하기 위한 리액티브 라이브러리의 표준 사양 리액티브 스트림즈 구성요소 ✅ 리액티브 스트림즈 컴포넌트 컴포넌트 설명 Publisher 데이터를 생성하고 통지하는 역할. ..

    [리액티브 프로그래밍] 리액티브 시스템과 리액티브 프로그래밍

    [리액티브 프로그래밍] 리액티브 시스템과 리액티브 프로그래밍

    스프링으로 시작하는 리액티브 프로그래밍 책 정리 스프링으로 시작하는 리액티브 프로그래밍 | 황정식 - 교보문고 스프링으로 시작하는 리액티브 프로그래밍 | *리액티브 프로그래밍의 기본기를 확실하게 다진다*리액티브 프로그래밍은 적은 컴퓨팅 파워로 대량의 요청 트래픽을 효과적으로 처리할 수 있는 product.kyobobook.co.kr 리액티브 시스템(Reactive System)이란? ✅ 리액티브 시스템 반응을 잘하는 시스템. -> 클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간을 최소화. 리액티브 선언문으로 리액티브 시스템 이해하기 ✅ 리액티브 선언문 리액티브 시스템 구축을 위한 일종의 설계 원칙이자 리액티브 시스템의 특징. ✅ 리액티브 설계 원칙 MEANS(수단) 리액티브 시스템은 비동기 메시지 ..

    [Spring] ControllerAdvice - 예외 처리

    개발을 하다 보면 예상 못한 예외가 발생하거나, 또는 예상 가능한 예외를 처리해줘야 하는 경우가 있다. 이처럼 여러 상황에서 발생할 수 있는 예외를 나만의 방식으로 처리하고 이를 response 형태로 반환하는 방법을 알아보자. ControllerAdvice @ControllerAdvice는 @Controller가 붙은 클래스, 즉 컨트롤러 전역에서 발생할 수 있는 예외를 잡아 처리해주는 애노테이션이다. 만약 서비스 로직에서 예외가 발생해도 상위 메서드를 타고 올라가면서 이를 호출한 컨트롤러 계층까지 예외가 넘어가게 되는데, 개발자가 해당 예외를 따로 처리해주지 않으면 인터셉터, 필터를 거쳐 WAS 영역까지 가서 예외를 터뜨리게 된다. @ControllerAdvice는 컨트롤러에서 발생한 예외를 붙잡아 ..

    [Spring] @SpringBootTest vs @DataJpaTest

    단위테스트를 작성 간에 두 애노테이션 모두 사용해보면서 알게 된 내용을 기록한다. @SpringBootTest @SpringBootTest는 ApplicationContext(스프링 컨테이너)의 모든 Bean들을 등록한다. 즉 스프링 부트를 사용해 테스트를 한다는 말인데, 1. 쉽게 말해 @Configuration을 통해 수동으로 등록한 Bean들과, 2. 컴포넌트 스캔을 통해 @Component가 달려있는 모든 Bean들을 등록한다는 뜻이다. 설정 파일의 경우 test 폴더 내에 application.yml을 사용한다. 만약 test 폴더 내에 따로 설정 파일을 지정하지 않았다면, 기본 java 폴더 내에 application.yml 설정을 따른다. datasource는 in-memory, 로컬, 외부..