-
Notifications
You must be signed in to change notification settings - Fork 0
[02. ADR] 스프링 부트 버전 선택
- Status: 확정
- Deciders: 김정희, 이유희
- Date: 2023-07-17
Technical Story: Github Issue #1
프로젝트 생성에 앞서 스프링 부트 버전 선택이 필요하다.
스프링 부트의 지원은 2년이기 때문에 최신 버전을 고려하고 있다.
이전 회사에서는 2.7을 사용했기 때문에 3의 주요 변화를 파악하고 결정할 필요가 있다.
- 최신 버전인가?
- 지원 종료일
- Spring Boot 3.1.1
- 현재 가장 최신 버전인 3.1.1 으로 결정했다. 신규 프로젝트라 그동안 사용해온 2.7.x 버전과 마이그레이션 사이드 이펙트를 고려하지 않아도 되기 때문이다.
- JDK 17 학습
- 개발 환경에서 테스트 컨테이너 사용 경험
-
ConnectionDetails
으로 외부 서비스 커넥션 정보 추상화 장점 기대
- 지금 프로젝트가 향후 메이저 업데이트된 버전으로 마이그레이션할 때는 고려해야 될 부분이 상당히 많아 보인다.
- 의존성 라이브러리들의 버전도 같이 변경되기 때문에 기존 코드에 미칠 사이트 이펙트를 잘 파악해야 할 것 같다.
-
최근 릴리즈된 버전이라 지원 기간이 넉넉하다.
지원 종료일 2024-05-18
-
버전3.x 의 주요 변화
Spring Boot 3.0
-
JDK 17 기본, JDK 19도 가능하다.
-
Spring Framework 6.0 and Jakarta EE 9 을 기반으로 한다.
javax.*
패키지명이jakarta.*
로 변경된다. -
GraalVM Native Image 지원
-
Log4j2 강화
-
Observability
- Spring framework 6 부터 Spring Observability 가 도입된다.
-
@ConstructorBinding
-
Prometheus Support
-
More Flexible Auto-configuration for Spring Data JDBC
-
Enabling Async Acks with Apache Kafka
-
Elasticsearch Java Client
-
Auto-configuration of JdkClientHttpConnector
-
@SpringBootTest with Main Methods
Spring Boot 3.1
-
Apache HttpClient 4 의존성 관리
- Spring framework 6 에서
RestTemplate
지원이 제거되었다. - Spring boot 3.0 에서는 HttpClient 4 와 HttpClient 5 모두 의존성 관리를 해준다.
- HttpClient4 를 계속 사용하면 진단하기 어려운 에러가 발생할 수 있다.
- Spring Boot 3.1 에서는 HttpClient 4 의존성 관리를 제거했다. HttpClient 5 사용을 권장하고 있음.
- Spring framework 6 에서
-
Servlet and Filter Registrations
-
ServletRegistrationBean
,FilterRegistrationBean
등록에 실패하면 warning 경고 대신IllegalStateException
예외를 발생시킨다.기존 동작을 유지하려면
setIgnoreRegistrationFailure(true)
메서드를 사용하면 된다.
-
-
Testcontainers 의존성 관리
-
Hibernate 6.2 버전으로 업그레이드
Hibernate 6.2 migration guide 읽고 어플리케이션에 미치는 영향을 파악할 것
-
Jackson 2.15
- Jackson wiki
- 주요 변화 : Processing limits 기능이 생김.
- 최대 허용 메모리 크기
- 최대 허용 문자열 크기
- 최대 허용 깊이
-
-
Mockito 5
- Mockito 5.3 버전으로 업그레이드함
-
주요 의존성 버전 업그레이드
-
새로운 service connection 개념이 도입됨. ConnectionDetails 이라는 새로운 인터페이스가 생성되었다.
원격 서비스와 커넥션에 필요한 정보를 제공하는 Beans 이다. auto-configuration 도
ConnectionDetails
빈을 사용하도록 변경중이다.장점은 환경 설정 파일과 어플리케이션 결합을 낮추는 효과가 있으며, connection 관련된 정보를 캡슐화할 수 있다.
-
Testcontainers
기존에는 테스트 환경에서만 일회용 테스트 컨테이너를 사용했으나, 개발 모드에서도 사용이 가능해졌다.
Testcontainer lifecycle 관리가 개선되어 container가 먼저 초기화되고 마지막으로 파기되도록 한다.
-
Docke Compose 지원
-
Maximum HTTP Response Header Size
HTTP 통신시 tomcat, jetty 사용할 경우 Response 헤더 사이즈 설정 가능하다.
기본은 8kb 다.
-
https://spring.io/projects/spring-boot#overview
https://docs.spring.io/spring-boot/docs/current/reference/html/
https://blog.stkcorp.co.kr/splunk/observability-vs-monitoring-차이점은-무엇일까요
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes