Spring 5와 Spring Boot 2.0의 가장 큰 변화는 Reactive이다.
이전까지는 기본적으로 동기 통신이었고, MVC 기반의 모노리틱 아키텍쳐가 적합한 프레임워크였다면, 이번 업데이트로 완전히 비동기 통신에 MSA에 적합한 구조로 탈바꿈하였다.
이에따라서 내부적으로 많이 바뀌었고, 일부는 아예 deprecated 되었다.
구성 인프라 업그레이드
Spring 5는 Java 8 이상부터 지원하고, 최근에 릴리즈된 Java 9을 지원한다. 그리고 Java 2.0이라고 불리는 Kotlin도 공식적으로 지원한다. 그밖에 Gradle, Tomcat, Hibernate, Thymeleaf 등 Spring Framework을 구성하는 외부 라이브러리들의 버전을 올렸다.
Bootstrap
Reactive를 위해서 Bootstrap에도 많은 변화가 있었다. 기존의 Spring은 Apache Tomcat을 default로 사용하였고, 이를 위한 여러가지 유용한 기능들을 제공하였다. Spring 5부터는 Tomcat 업그레이드와 함께 Jetty, Reactor Netty, Undertow 등에 대한 지원이 확대되었다. 뿐만아니라 별다른 설정이 없으면 Netty를 사용한다.
Reactive Spring Data
Web-Flux로 연동된 Reactive 연동 모듈로 MongoDB, Redis, Cassandra를 제공한다. Spring Boot에서는 이들에 대한 AutoConfiguration을 제공한다.
Spring Boot 2.0에서는 거의 의존성만 추가하면 바로 사용할 수 있다.
아쉽게도 JDBC는 (당연한 이야기지만) Reactive를 지원하지 않는다.
따라서 다른 모든 연동 모듈을 Reactive하게 만들어도 JDBC를 사용하면 말짱 도루묵된다.
Web-Flux 중심의 업데이트
이번 릴리즈의 핵심이 되는 Web-Flux를 중심으로 거의 대부분의 연동 모듈의 코드가 변경되었다. 그리고 기존에 사용되던 RestTemplate은 deprecated 되었다.
Spring Security도 Web-Flux 버전으로 새로 개발되었다.
그밖에도 여러가지 변경사항이 많지만, 본 포스팅에서는 이정도만 소개한다.
더 많은 업데이트에 대해서는 릴리즈 노트를 참고하자.
기술 스택
이제 본격적으로 Spring Boot 2.0 써보기 전에, 프로젝트를 구성하는 기술 스택은 아래와 같다.
- Spring Boot 2.0.1
- Gradle 4.5.1
- Kotlin 1.2.20
- Reactor Netty
- Reactive MongoDB
- Reactive Redis
Add Comment