New Score :0
High Score :0
Run Best
NICE BUSINESS TYPE INDICATOR
3. ๊ธ์ ์ ์น๊ตฌ์๊ฒ ๋น๋ ธ๋๋ฐ ์ค๋์ด ๋์ ์ฃผ๊ธฐ๋ก ํ๋ .. ๊ทธ๋ฐ๋ฐ ์นด๋๊ฐ์ ๋ด์ผํ๋ ๋ ๋ ์ค๋์ธ๋ฐ... ์ด๊ฑธ ์ด์ฉ๋...
4. ์ฐ๋ฆฌ ํ์ฌ๋ ์ค์ํ ์์ฌ ๊ฒฐ์ ์ ํ ๋?
5. ์ด์ฌํ ์ผํ ๋๋ฅผ ์ํ ์ ๋ฌผ์ ์ฃผ๊ณ ์ถ๋ค. ์ด๋ค๊ฒ ์ข์๊น?
6. ์ํ์์ ํฌ์์ํ์ ์ถ์ฒ๋ฐ์๋ค. ์ด๋ค๊ฑธ ๊ฐ์ ํ์ง?
7. ํ์ฌ์์์ ๋๋?
8. ๊ฟ์์ ๊นจ์ด๋๋ 20๋ ์ ์ผ๋ก ๋์๊ฐ๋ค. ๋น์ ์ด ์ ์ผ ๋จผ์ ํ๋์ผ์?
9. ๋ด๊ฐ ์ธ์ฌ ๋ด๋น์๋ผ๋ฉด ์ ๊ท ์ ์ฌ์ ์ฑ์ฉ ์ ์ ์ผ ์ค์ํ๊ฒ ๋ณด๋๊ฒ์?
10. ํ์ฌ์ ์ ๋ง ์ซ์ดํ๋ ๋๋ฃ๊ฐ ์๋ค๋ฉด?
11. ๊ฐ๋ํ ์ง์ ๊ฐ์ฅ์ด ๋์๋ค.. ์๋ ์ ์์ผ ๋ ์ ๋ฌผ์?
12. ํ์ ํ์ฌ ์ถ๊ทผ ์คํ์ผ์?
13.ํ์ฌ ์ฒด์ก๋ํ ํ๋ ๋ ์ด๋ค. ์ค๋ ๋ญํ์ง?
14. ๋์ ์ ๋ฌด ์คํ์ผ์?
Spring Boot 3.4 ๋ฆด๋ฆฌ์ค ๋ ธํธ ์ข ํฉ ๋ถ์
Spring Boot 3.4๋ 2024๋ 11์ 21์ผ ์ถ์๋ ์ฃผ์ ๋ฒ์ ์ผ๋ก, ์ฑ๋ฅ ๊ฐ์ , ๋ณด์ ๊ฐํ, ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ง์ ํ์ฅ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ๋์ ํ์ต๋๋ค. ์ด๋ฒ ๋ฆด๋ฆฌ์ค๋ ๊ฐ๋ฐ์ ๊ฒฝํ ํฅ์๊ณผ ์ด์ ํ๊ฒฝ์์์ ์์ ์ฑ์ ๊ทน๋ํํ๋ ๋ฐ ์ค์ ์ ๋์์ต๋๋ค. ํนํ, ๋ชจ๋ํฐ๋ง ๋ฐ ๊ด์ธก ๊ฐ๋ฅ์ฑ(Observability), ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ต์ ํ, ๋ณด์ ์ ์ฑ ๊ฐ์ ์ด ๋๋๋ฌ์ง๋๋ค.
์ฃผ์ ์ ๊ทธ๋ ์ด๋ ๋ฐ ๋ณ๊ฒฝ ์ฌํญ
1. ๊ธฐ์กด ๋ฒ์ (3.3)์์์ ์ ๊ทธ๋ ์ด๋
Spring Boot 3.4๋ก ์ ๊ทธ๋ ์ด๋ ์ ์ฃผ์ํด์ผ ํ ์ฃผ์ ๋ณ๊ฒฝ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- HTTP ํด๋ผ์ด์ธํธ ์๋ ๊ตฌ์ฑ ์ฐ์ ์์ ๋ณ๊ฒฝ:
RestClient
๋ฐRestTemplate
์ ๊ธฐ๋ณธ HTTP ํด๋ผ์ด์ธํธ๊ฐ JDKHttpClient
๋ก ๋ณ๊ฒฝ๋จ - ๋น ๊ฒ์ฆ ๋์ ๊ฐ์ :
@Validated
๊ฐ ์ ์ฉ๋ ๊ตฌ์ฑ ์์ฑ ํด๋์ค์ ์ค์ฒฉ ์์ฑ ๊ฒ์ฆ์ด ๋ช ์์ @Valid
์ด๋ ธํ ์ด์ ํ์ - ๊ทธ๋ ์ด์คํ ์
ง๋ค์ด ๊ธฐ๋ณธ ํ์ฑํ:
server.shutdown=immediate
๋ก ์ค์ ํด์ผ ์ฆ์ ์ข ๋ฃ ๊ฐ๋ฅ - ๋์ ์์ฑ ๋ฑ๋ก ๋ฐฉ์ ๋ณ๊ฒฝ:
DynamicPropertyRegistry
์ฃผ์ ๋์DynamicPropertyRegistrar
๊ตฌํ ํ์
์ ๊ท ๊ธฐ๋ฅ ๋ฐ ๊ฐ์ ์ฌํญ
2. ๊ตฌ์กฐํ๋ ๋ก๊น ์ง์
Spring Boot 3.4๋ Elastic Common Schema(ECS), Graylog Extended Log Format(GELF), Logstash ํ์์ ๊ตฌ์กฐํ๋ ๋ก๊น
์ ๊ธฐ๋ณธ ์ง์ํฉ๋๋ค. application.yml
์์ ๊ฐ๋จํ ํ์ฑํ ๊ฐ๋ฅํฉ๋๋ค:
logging:
structured:
format:
file: ecs # ํ์ผ ๋ก๊น
ํฌ๋งท
console: gelf # ์ฝ์ ์ถ๋ ฅ ํฌ๋งท
3. ๊ด์ธก ๊ฐ๋ฅ์ฑ ๊ฐํ
- ์ ํ๋ฆฌ์ผ์ด์
๊ทธ๋ฃนํ:
spring.application.group
์์ฑ์ผ๋ก ๊ด๋ จ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ผ๋ฆฌ์ ๊ทธ๋ฃน์ผ๋ก ๊ด๋ฆฌ[1][20] - OTLP gRPC ์ ์ก ์ง์: ํธ๋ ์ด์ค ๋ฐ์ดํฐ ์ ์ก ํ๋กํ ์ฝ๋ก gRPC ์ ํ ๊ฐ๋ฅ
management: otlp: tracing: transport: grpc
- SSL ์ธ์ฆ์ ๋ชจ๋ํฐ๋ง:
/actuator/info
์๋ํฌ์ธํธ์ SSL ์ธ์ฆ์ ์ ํจ๊ธฐ๊ฐ ๊ฒฝ๊ณ ๊ธฐ๋ฅ ์ถ๊ฐ
4. ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋น๋ ๊ฐ์
Paketo tiny ๋น๋๊ฐ ๊ธฐ๋ณธ์ผ๋ก ๋ณ๊ฒฝ๋์ด ๋ ์์ ์ด๋ฏธ์ง ํฌ๊ธฐ(๊ธฐ์กด ๋๋น ~40% ๊ฐ์)๋ฅผ ๋ฌ์ฑํ์ต๋๋ค. ARM/x64 ์ํคํ
์ฒ ๋์ ์ง์ ๋ฐ ๋ณด์ ๊ฐํ๋ฅผ ์ํด trustBuilder
์ต์
์ถ๊ฐ:
bootBuildImage {
builder = "paketobuildpacks/builder-jammy-java-tiny"
trustBuilder = true
}
5. Docker Compose ํตํฉ ๊ฐํ
- ๋ค์ค Compose ํ์ผ ์ง์:
spring.docker.compose.arguments
๋ก ์ถ๊ฐ ๋ช ๋ น์ค ์ธ์ ์ ๋ฌ ๊ฐ๋ฅ[7] - Redis Stack ๋ฐ Grafana LGTM ์ง์: ์๋ก์ด ์ปจํ
์ด๋ ์ด๋ฏธ์ง ํตํฉ ์ถ๊ฐ
spring: docker: compose: files: - docker-compose-base.yml - docker-compose-override.yml
๋ณด์ ๊ฐํ ์กฐ์น
6. ์ก์ถ์์ดํฐ ์ ๊ทผ ์ ์ด
- ์ธ๋ถํ๋ ๊ถํ ๊ด๋ฆฌ:
management.endpoint.<id>.access
์์ฑ์ผ๋ก ์ฝ๊ธฐ ์ ์ฉ(read-only), ๋ฌด์ ํ(unrestricted), ์ ๊ทผ ๋ถ๊ฐ(none) ์ค์ management: endpoints: access: max-permitted: read-only # ์ต๋ ํ์ฉ ๊ถํ ์ํ ์ค์ endpoint: loggers: access: unrestricted # ํน์ ์๋ํฌ์ธํธ ๊ถํ ์ค์
7. SSL ์ธ์ฆ์ ๊ด๋ฆฌ
- ์๋ ๋ง๋ฃ ๊ฒฝ๊ณ :
/actuator/info
์์ SSL ์ธ์ฆ์ ์ ํจ๊ธฐ๊ฐ ๋ชจ๋ํฐ๋ง - ์ํ ์ ๊ฒ ํตํฉ:
management.health.ssl.certificate-validity-warning-threshold
๋ก ์๊ณ๊ฐ ์ค์
๊ฐ๋ฐ์ ์์ฐ์ฑ ๊ฐ์
8. ๊ฐ์ ์ค๋ ๋ ์ง์ ํ๋
- Undertow ์น ์๋ฒ: ๊ฐ์ ์ค๋ ๋ ๊ธฐ๋ฐ ์์ฒญ ์ฒ๋ฆฌ
- OTLP ๋ฏธํฐ ๋ ์ง์คํธ๋ฆฌ: ๋น๋๊ธฐ ๋ฉํธ๋ฆญ ์์ง์ ๊ฐ์ ์ค๋ ๋ ์ ์ฉ
9. ํ ์คํธ ์ปจํ ์ด๋ ๊ฐ์
- KafkaContainer ์ง์ ์ถ๊ฐ: ํตํฉ ํ ์คํธ ํ๊ฒฝ ๊ตฌ์ถ ์ฉ์ด
- Redis Stack ํตํฉ:
redis/redis-stack
์ด๋ฏธ์ง ๊ณต์ ์ง์
์ฃผ์ ํธํ์ฑ ๋ณ๊ฒฝ ์ฌํญ
10. ์์กด์ฑ ์ ๊ทธ๋ ์ด๋
- Spring Framework 6.2: ๊ฐ์ ์ค๋ ๋ ๋ฐ ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์
- Hibernate 6.6: ์ฑ๋ฅ ์ต์ ํ ๋ฐ ์๋ก์ด ์ ๋ ธํ ์ด์ ์ง์
- Jackson 2.18: JSON ์ง๋ ฌํ/์ญ์ง๋ ฌํ ์ฑ๋ฅ 15% ํฅ์
11. ์ฌ์ฉ ์ค๋จ(DEPRECATION) ํญ๋ชฉ
- @MockBean/@SpyBean: Spring Framework์
@MockitoBean/@MockitoSpyBean
์ผ๋ก ๋์ฒด - legacy Actuator ์์ฑ:
management.endpoints.enabled-by-default
→management.endpoints.access.default
์ด์ ํ๊ฒฝ ๊ณ ๋ ค์ฌํญ
12. ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ์ ๋ต
- ๋ฉํธ๋ฆญ ์ง๊ณ: Micrometer์ Prometheus ํตํฉ์ ํตํ ์ค์๊ฐ ๋ชจ๋ํฐ๋ง
@Bean public MeterRegistryCustomizer<PrometheusMeterRegistry> metricsCommonTags() { return registry -> registry.config().commonTags("application", "my-service"); }
- ํธ๋ ์ด์ค ์ํ๋ง:
management.otlp.tracing.sampling.ratio
๋ก ๋น์ฉ ์ต์ ํ
13. ์ปจํ ์ด๋ ๋ณด์ ๊ฐํ
- Distroless ์ด๋ฏธ์ง ์ ์ฉ: ๋ถํ์ ํจํค์ง ์ ๊ฑฐ๋ก ์ทจ์ฝ์ ์ต์ํ
- SBOM ์์ฑ:
--enable-sbom
์ต์ ์ผ๋ก ์ํํธ์จ์ด ๊ตฌ์ฑ ํฌ๋ช ์ฑ ํ๋ณด
๊ฒฐ๋ก ๋ฐ ๊ถ์ฅ ์ฌํญ
Spring Boot 3.4๋ ํ๋์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ์ํ ๋ชจ๋ ์์๋ฅผ ํฌ๊ดํฉ๋๋ค. ํนํ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์์์ ์ด์ ํจ์จ์ฑ๊ณผ ๋ณด์์ฑ์ด ํฌ๊ฒ ๊ฐ์ ๋์์ต๋๋ค. ์ ๊ทธ๋ ์ด๋ ์ ๋ค์ ์ฌํญ์ ๊ถ์ฅํฉ๋๋ค:
- ์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์ : Deprecated API ์ฌ์ฉ ๋ถ๋ถ ์ฐ์ ์์
- ๋ณด์ ๊ฒ์ฆ ๊ฐํ: Actuator ์๋ํฌ์ธํธ ์ ๊ทผ ์ ์ด ์ฌ๊ฒํ
- ์ฑ๋ฅ ๋ฒ ์ด์ค๋ผ์ธ ์ค์ : ๊ตฌ์กฐํ๋ ๋ก๊น ๋์ ์ ๊ธฐ์กด ๋ชจ๋ํฐ๋ง ์ฒด๊ณ ์ ๊ฒ
- ์ปจํ ์ด๋ ์ด๋ฏธ์ง ํ ์คํธ: Paketo tiny ๋น๋์ ๊ธฐ์กด ์ํฌํ๋ก์ฐ ํธํ์ฑ ๊ฒ์ฆ
ํฅํ Spring Boot 4.0์์๋ Jakarta EE 11 ๋ฐ Project Leyden ํตํฉ์ผ๋ก ๋์ฑ ๊ฐ์ ๋ ์์ ์ฑ๋ฅ์ด ์์๋ฉ๋๋ค. ์ง์์ ์ธ ๊ด์ธก ๊ฐ๋ฅ์ฑ ๊ฐํ์ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ ์ง์ ํ๋๊ฐ ์ฃผ์ ๋ฐ์ ๋ฐฉํฅ์ผ๋ก ์ฃผ๋ชฉ๋ฐ๊ณ ์์ต๋๋ค.