Application/Spring Framework

    [스프링 인 액션 정리] 11-12 리액티브 API, 데이터 퍼시스턴스

    동기 vs 비동기 웹 프레임워크 동기 웹 프레임워크 매 연결마다 하나의 스레드를 사용하는 스프링 MVC 같은 전형적인 서블릿 기반의 웹 프레임워크는 스레드 블로킹과 다중 스레드로 수행된다. 즉 요청이 처리될 때 스레드 풀에서 작업 스레드를 가져와서 해당 요청을 처리하며, 작업 스레드가 종료될 때 까지 요청 스레드는 블로킹된다. 따라서 블로킹 웹 프레임워크는 요청량의 증가에 따른 확장이 사실상 어렵다. 게다가 처리가 느린 작업 스레드로 인해 훨씬 더 심각한 상황이 발생한다. 해당 작업 스레드가 풀로 반환되어 또 다른 요청 처리를 준비하는 데 더 많은 시간이 걸리기 때문. 비동기 웹 프레임워크 비동기 웹 프레임워크는 더 적은 수의 스레드로 더 높은 확장성을 성취한다. 이벤트 루핑이라는 기법을 적용한 이런 프..

    [스프링 인 액션 정리] 10장. 리액터 개요

    애플리케이션 코드를 개발할 때는 명령형과 리액티브의 두 가지 형태로 코드를 작성할 수 있다. 명령형 코드 순차적으로 연속되는 작업 각 작업은 한 번에 하나씩 그리고 이전 작업 다음에 실행된다. 데이터는 모아서 처리되고 이런 작업이 데이터 처리를 끝낸 후에 다음 작업으로 넘어갈 수 있다. 리액티브 코드 데이터 처리를 위해 일련의 작업들이 정의되지만, 이 작업들은 병렬로 실행될 수 있다. 그리고 각 작업은 부분 집합의 데이터를 처리할 수 있으며, 처리가 끝난 데이터를 다음 작업에 넘겨주고 다른 부분 집합의 데이터로 계속 작업할 수 있다. 리액터 스프링 프로젝트의 일부분인 리액티브 프로그래밍 라이브러리. 리액터는 스프링 5에서 리액티브 프로그래밍을 지원하는 데 필요한 기반. 리액티브 프로그래밍 명령형 프로그래..

    [스프링 인 액션 정리] 8장. 비동기 메시지 전송하기

    8. 비동기 메시지 전송하기 REST를 사용한 동기화 통신이외에도 비동기 메시징을 통해 애플리케이션 간 통신할 수 있다. 비동기 메시징은 애플리케이션 간에 응답을 기다리지 않고 간접적으로 메시지를 전송하는 방법 비동기 메시징을 통해 통신하는 애플리케이션 간의 결합도를 낮추고 확장성을 높여준다. 비동기 메시징 종류 JMS RabbitMQ AMQP 아파치 카프카 EJB의 MDB(스프링의 메시지 기반 POJO 지원) 등이 있다. 메시지를 수신하는 방식 풀 모델 우리 코드에서 메시지를 요청하고 도착할 때까지 기다리는 방식 푸시 모델 메시지가 수신 가능하게 되면 우리 코드로 자동 전달하는 방식 두가지 모델 모두 용도에 맞게 사용할 수 있다. 그러나 스레드의 실행을 막지 않으므로 일반적으로 푸시 모델이 좋은 선택이..

    [스프링 인 액션 정리] 6장, 7장. REST 서비스 생성 & 사용하기

    6. REST 서비스 생성하기 최근에는 모바일 장치, 태블릿, 스마트 워치, 음성 기반 장치들이 흔히 사용된다. 또한 웹 브라우저 기반의 애플리케이션조차도 서버 위주로 실행되기보다는 프로세서가 있는 클라이언트에서 자바스크립트 애플리케이션으로 많이 실행된다. 이처럼 클라이언트 측에서 다양한 선택을 할 수 있으므로, 많은 애플리케이션이 클라이언트에 더 다가갈 수 있는 사용자 인터페이스 설계를 적용하고 있음. 또한 모든 종류의 클라이언트가 백엔드 기능과 상호작용할 수 있게 서버는 클라이언트가 필요로 하는 API를 제공. REST 컨트롤러 작성 @RestController @RequestMapping(path = "/design", produces = "application/json") @CrossOrigin(..

    [스프링 인 액션 정리] 5장. 구성 속성 사용하기

    5. 구성 속성 사용하기 스프링 부트의 자동-구성(autoConfiguration)은 스프링 애플리케이션 개발을 단순화 한다. 스프링 XML 구성으로 속성 값을 설정하던 지난 10년간은 명시적으로 빈을 구성하지 않고서는 속성을 설정하는 마땅한 방법이 없었다. 하지만, 스프링 부트는 구성 속성을 사용하는 방법을 제공한다. 스프링 애플리케이션 컨텍스트에서 구성 속성은 빈의 속성이다. JVM 시스템 속성, 명령행 인자, 환경 변수 등의 여러 가지 원천 속성 중에서 설정할 수 있다. 5-1. 자동-구성 세부 조정하기 스프링에는 두 가지 형태의 서로 구성 방법이 존재. 빈 연결 빈으로 생성되는 애플리케이션 컴포넌트 및 상호 간에 주입되는 방법을 선언하는 구성 속성 주입 빈의 속성 값을 설정하는 구성 스프링 환경 ..