스프링 부트 운영 우버 JAR 파일을 만들고 운영환경 배포 컨테이너 생성을 위한 계층형 Dockerfile 생성 애플리케이션 운영을 도와주는 스프링 부트 액추에이터 운영을 위해 사용할 기능과 사용하지 않을 기능 분별 애플리케이션 버전 세부 내용 추가 관리 서비스 라우트 지정 애플리케이션 배포 우버 JAR 배포 실행 가능한 JAR 파일 생성 ./mvnw package 도커 배포 도커를 사용하면 컨테이너에 자바와 애플리케이션을 함께 담아서 배포할 수 있음 애플리케이션을 컨테이너화하는 가장 간단한 Dockerfile FROM adoptopenjdk/openjdk8:latest ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} application.jar ENTRYPOINT ["jav..
스프링 부트 테스트 리액티브 단위 테스트 작성 스프링 부트의 내장 컨테이너 테스트 기능 단위 테스트와 통합 테스트의 중간에 위치하는 슬라이스 테스트 활용 테스트 도구를 활용한 블로킹 코드 검출 spring-boot-starter-test 스프링 부트에서는 테스트에 필요한 여러 도구를 쉽게 사용할 수 있도록 스타터를 제공. 테스트 라이브러리 JUnit 5 : Java 애플리케이션의 단위 테스트를 위한 사실상의 표준 Spring Test & Spring Boot Test : 스프링 부트 애플리케이션에 대한 유틸리티 및 통합 테스트 지원 AssertJ : 능수능란한 단언(Assertion) 라이브러리 Hamcrest : 매처 객체 라이브러리 Mockito : 자바 Mocking 프레임워크 JSONassert ..
스프링 부트 개발자 도구 코드를 수정할 때 애플리케이션을 자동으로 재시작하는 방법 브라우저 새로고침을 자동으로 실행하는 라이브 리로드 사용법 프로젝트 리액터 디버깅 도구 애플리케이션 시작 시간 단축 예전에는 코드 수정 시 애플리케이션에 반영하기 위해 애플리케이션을 계속 재시작을 해야 했기에 불편했음 스프링 부트가 나오기 전부터 스프링 프레임워크는 무거운 애플리케이션 서버 대신 서블릿 컨테이너를 선택해서 재시작 문제 해결을 시도함 위의 시도에도 충분하지 않음 스프링 부트가 나오면서 내장형 서블릿 컨테이너라는 혁신을 이뤄냄 기존의 WAR 파일을 만들어서 톰켓과 같은 서블릿 컨테이너에 애플리케이션을 배포하는 방식이 아닌 애플리케이션에 서블릿 컨테이너를 포함하는 방식 서블릿 컨테이너를 애플리케이션에 포함하며 생..
스프링 부트를 활용한 데이터 액세스 리액티브 데이터 스토어의 요건 이커머스 애플리케이션 도메인 객체 정의 객체를 저장하고 조회할 리포지토리 생성 상기 내용 서비스에 적용 리액티브 데이터 스토어 요건 리액티브 프로그래밍을 사용하려면 모든 과정이 리액티브여야 함 웹 컨트롤러, 서비스 계층도 리액티브 방식으로 동작하게 만들었는데 블로킹 방식으로 연결되는 DB를 호출하면 리액티브가 무너짐 블로킹 방식으로 DB 호출한 스레드는 응답을 받을 때까지 다른 작업을 하지 못한 채 기다려야함 블로킹 되는 스레드가 많아지면 스레드가 모두 고갈되어서 결국 전체 애플리케이션이 DB로부터 결과를 기다리면서 아무런 일도 할 수 없음 상태가 되어 망가짐 레거시 브롤킹 코드를 따로 감싸고 격리해서 문제를 해결할 수도 있지만 리액티브의..