Develop Artifacts/Spring Boot

SpringBoot - 10. deployment

500MB JAR에서 80MB 바이너리로 — GraalVM native image와 컨테이너 배포Spring Boot 애플리케이션을 서버리스(AWS Lambda)에 배포하려 한다. JVM 웜업에 3초, 첫 요청에 5초가 걸린다. 콜드 스타트가 치명적인 서버리스 환경에서 이것은 사용할 수 없는 수준이다. GraalVM native image로 빌드하면 — 시작 시간이 50ms로 줄고, 메모리 사용량이 1/5로 감소한다.이 글은 Docker 컨테이너 빌드, GraalVM AOT 컴파일, layered JAR, graceful shutdown, 그리고 Spring Boot 4.0의 AOT 강화를 풀어간다. (Spring Boot Reference - Container Images)컨테이너 빌드 — Docker..

Develop Artifacts/Spring Boot

SpringBoot - 09. config profile

개발 환경에서는 H2, 운영에서는 PostgreSQL — 외부 설정과 프로파일 관리같은 JAR을 개발과 운영에 그대로 배포해야 한다. 개발에서는 H2 인메모리 DB를, 운영에서는 PostgreSQL을 써야 한다. 코드를 고치지 않고 — 설정만 바꿔서. Spring Boot의 외부 설정(externalized configuration)과 프로파일(profile)이 이것을 가능하게 한다.이 글은 프로퍼티 소스 계층, @ConfigurationProperties, 멀티 프로파일, 환경 변수 매핑, 그리고 비밀 관리(secrets management) 패턴을 풀어간다. (Spring Boot Reference - External Configuration)프로퍼티 소스 계층 — 17개의 우선순위Spring Boo..

Develop Artifacts/Spring Boot

SpringBoot - 08. actuator

프로덕션 서버가 살아있는지 어떻게 알 수 있는가 — Actuator와 모니터링프로덕션 서버가 응답하지 않는다. 메모리가 부족한가? DB 연결이 끊겼는가? 스레드가 고갈됐는가? 로그를 봐도 원인이 안 보인다. Spring Boot Actuator가 켜져 있었다면 — GET /actuator/health로 헬스 상태를, GET /actuator/metrics로 메모리/스레드/DB 풀 상태를 즉시 확인할 수 있었다.이 글은 Actuator의 엔드포인트, 헬스 체크, 메트릭, 그리고 Prometheus + Grafana 통합을 풀어간다. (Spring Boot Reference - Actuator)Actuator란 — 운영 도구 모음spring-boot-starter-actuator를 추가하면 프로덕션 준비 기..

Develop Artifacts/Spring Boot

SpringBoot - 07. security

모든 API가 401을 반환할 때 — Spring Security 기초와 필터 체인Spring Boot에 spring-boot-starter-security를 추가했다. 모든 API가 즉시 401 Unauthorized를 반환한다 — Spring Security가 기본적으로 모든 요청에 인증을 요구하기 때문이다. "Hello World" API도 접근할 수 없다.이 글은 Spring Security의 기본 동작, SecurityFilterChain 구성, 폼 로그인, JWT, OAuth2 클라이언트 설정을 풀어간다. (Spring Boot Reference - Security)Spring Security의 기본 동작 — "모든 것을 차단"spring-boot-starter-security를 추가하면:기본..

Develop Artifacts/Spring Boot

SpringBoot - 06. testing

@SpringBootTest가 3초 걸리는 이유 — Slice 테스트와 Testcontainers@SpringBootTestclass UserServiceTest { @Autowired UserService service; // 전체 컨텍스트 시작}이 테스트는 실행될 때마다 3초가 걸린다 — 전체 Spring 컨텍스트를 시작하기 때문이다. 빈을 전부 로드하고, 자동 구성을 평가하고, 내장 서버까지 준비한다. 단순히 서비스 로직 하나를 테스트하는 데 이것은 너무 무겁다. Spring Boot는 @WebMvcTest, @DataJpaTest 등 Slice 테스트로 컨텍스트를 최소화한다.이 글은 Spring Boot Test의 계층(전체 vs Slice), Mock 사용, Testcontainers ..

Develop Artifacts/Spring Boot

SpringBoot - 05. spring-data-jpa

findById가 100번의 SELECT를 발생시킬 때 — Spring Data JPA와 N+1 문제JPA로 User 엔티티를 조회했다. 쿼리 로그를 보니 SELECT가 101번 실행됐다 — User 1번 + User의 Order 목록 100번. 이것이 N+1 문제다: 1번의 메인 쿼리 + N번의 연관 엔티티 조회. Hibernate는 지연 로딩(lazy loading)을 기본으로 하므로, 연관 컬렉션에 접근할 때마다 개별 쿼리가 실행된다.이 글은 Spring Data JPA의 핵심 — 엔티티 매핑, 리포지토리 메서드, N+1 해결(fetch join, @EntityGraph), 그리고 Hibernate 7.x(JPA 3.2) 기반을 풀어간다. (Spring Data JPA Reference)엔티티 매핑..

Archive

'Develop Artifacts/Spring Boot' 10

Develop Artifacts/Spring Boot

SpringBoot - 10. deployment

500MB JAR에서 80MB 바이너리로 — GraalVM native image와 컨테이너 배포Spring Boot 애플리케이션을 서버리스(AWS Lambda)에 배포하려 한다. JVM 웜업에 3초, 첫 요청에 5초가 걸린다. 콜드 스타트가 치명적인 서버리스 환경에서 이것은 사용할 수 없는 수준이다. GraalVM native image로 빌드하면 — 시작 시간이 50ms로 줄고, 메모리 사용량이 1/5로 감소한다.이 글은 Docker 컨테이너 빌드, GraalVM AOT 컴파일, layered JAR, graceful shutdown, 그리고 Spring Boot 4.0의 AOT 강화를 풀어간다. (Spring Boot Reference - Container Images)컨테이너 빌드 — Docker..

댓글
Develop Artifacts/Spring Boot

SpringBoot - 09. config profile

개발 환경에서는 H2, 운영에서는 PostgreSQL — 외부 설정과 프로파일 관리같은 JAR을 개발과 운영에 그대로 배포해야 한다. 개발에서는 H2 인메모리 DB를, 운영에서는 PostgreSQL을 써야 한다. 코드를 고치지 않고 — 설정만 바꿔서. Spring Boot의 외부 설정(externalized configuration)과 프로파일(profile)이 이것을 가능하게 한다.이 글은 프로퍼티 소스 계층, @ConfigurationProperties, 멀티 프로파일, 환경 변수 매핑, 그리고 비밀 관리(secrets management) 패턴을 풀어간다. (Spring Boot Reference - External Configuration)프로퍼티 소스 계층 — 17개의 우선순위Spring Boo..

댓글
Develop Artifacts/Spring Boot

SpringBoot - 08. actuator

프로덕션 서버가 살아있는지 어떻게 알 수 있는가 — Actuator와 모니터링프로덕션 서버가 응답하지 않는다. 메모리가 부족한가? DB 연결이 끊겼는가? 스레드가 고갈됐는가? 로그를 봐도 원인이 안 보인다. Spring Boot Actuator가 켜져 있었다면 — GET /actuator/health로 헬스 상태를, GET /actuator/metrics로 메모리/스레드/DB 풀 상태를 즉시 확인할 수 있었다.이 글은 Actuator의 엔드포인트, 헬스 체크, 메트릭, 그리고 Prometheus + Grafana 통합을 풀어간다. (Spring Boot Reference - Actuator)Actuator란 — 운영 도구 모음spring-boot-starter-actuator를 추가하면 프로덕션 준비 기..

댓글
Develop Artifacts/Spring Boot

SpringBoot - 07. security

모든 API가 401을 반환할 때 — Spring Security 기초와 필터 체인Spring Boot에 spring-boot-starter-security를 추가했다. 모든 API가 즉시 401 Unauthorized를 반환한다 — Spring Security가 기본적으로 모든 요청에 인증을 요구하기 때문이다. "Hello World" API도 접근할 수 없다.이 글은 Spring Security의 기본 동작, SecurityFilterChain 구성, 폼 로그인, JWT, OAuth2 클라이언트 설정을 풀어간다. (Spring Boot Reference - Security)Spring Security의 기본 동작 — "모든 것을 차단"spring-boot-starter-security를 추가하면:기본..

댓글
Develop Artifacts/Spring Boot

SpringBoot - 06. testing

@SpringBootTest가 3초 걸리는 이유 — Slice 테스트와 Testcontainers@SpringBootTestclass UserServiceTest { @Autowired UserService service; // 전체 컨텍스트 시작}이 테스트는 실행될 때마다 3초가 걸린다 — 전체 Spring 컨텍스트를 시작하기 때문이다. 빈을 전부 로드하고, 자동 구성을 평가하고, 내장 서버까지 준비한다. 단순히 서비스 로직 하나를 테스트하는 데 이것은 너무 무겁다. Spring Boot는 @WebMvcTest, @DataJpaTest 등 Slice 테스트로 컨텍스트를 최소화한다.이 글은 Spring Boot Test의 계층(전체 vs Slice), Mock 사용, Testcontainers ..

댓글
Develop Artifacts/Spring Boot

SpringBoot - 05. spring-data-jpa

findById가 100번의 SELECT를 발생시킬 때 — Spring Data JPA와 N+1 문제JPA로 User 엔티티를 조회했다. 쿼리 로그를 보니 SELECT가 101번 실행됐다 — User 1번 + User의 Order 목록 100번. 이것이 N+1 문제다: 1번의 메인 쿼리 + N번의 연관 엔티티 조회. Hibernate는 지연 로딩(lazy loading)을 기본으로 하므로, 연관 컬렉션에 접근할 때마다 개별 쿼리가 실행된다.이 글은 Spring Data JPA의 핵심 — 엔티티 매핑, 리포지토리 메서드, N+1 해결(fetch join, @EntityGraph), 그리고 Hibernate 7.x(JPA 3.2) 기반을 풀어간다. (Spring Data JPA Reference)엔티티 매핑..

댓글

wall

방명록

방문 흔적을 남겨주세요. 질문이나 인사 모두 환영합니다.