본문 바로가기

WEB/SpringBoot28

Spring Boot HTTP 요청 처리 과정 🚀 Spring Boot 요청 처리 과정, 왜 알아야 할까요?오늘은 웹 개발시 내부에서 어떤 일들이 벌어지는지 정확히 파악하기는 힘든 Spring Boot의 HTTP 요청 처리 과정에 대해 깊이 파헤쳐 보려고 합니다.컨트롤러에 작성한 메서드가 실행되기까지, 클라이언트의 HTTP 요청은 보이지 않는 수많은 관문을 거칩니다. 실무를 하다 보면 "모든 요청의 로그를 남겨야 하는데 어디서 처리해야 하지?", "사용자 인증 검사는 컨트롤러마다 중복으로 적어야 하나?", "특정 API의 실행 시간만 측정하고 싶은데 코드를 다 뜯어고쳐야 할까?" 와 같은 고민에 반드시 부딪히게 됩니다.이러한 문제들을 효율적으로 해결하기 위해서는 스프링 부트가 요청을 받아들이고 응답을 반환하기까지의 전체 라이프사이클을 완벽하게 이해.. 2026. 3. 3.
SpringBoot의 @EnableAutoConfiguration 동작 원리 🚀 SpringBoot 프레임워크 이해새로운 프로젝트를 시작할때마다 Spring Boot의 편리함에 감탄하게 됩니다. build.gradle 에 spring-boot-starter-web, spring-boot-starter-data-jpa 같은 의존성 몇 줄만 추가하고 애플리케이션을 실행하면, 내장 톰캣(Tomcat)이 뜨고, 데이터베이스 커넥션이 연결되며, REST API를 받을 준비가 끝납니다.이 편리함에만 익숙해지고 실행 원리를 모른다면 특정 라이브러리가 내 의도와 다르게 설정되거나, 사내 공통 모듈을 만들 때 스프링 부트가 어떤 순서로 빈(Bean)을 로드하는지 모를때 실행 오류로 이어질 수 있습니다.그래서 오늘은 Spring Boot Auto Configuration(자동 구성)의 핵심 원리.. 2026. 3. 2.
Spring Batch와 스케줄링 오늘은 Spring Batch와 스케줄링(Scheduling)에 대해 이야기해 보려고 합니다.🧐 Spring Batch와 스케줄링, 왜 쓸까?백엔드 서버는 보통 사용자의 요청(Request)이 들어오면 그에 맞는 응답(Response)을 즉각적으로 반환합니다. 하지만 실무에서는 실시간으로 처리하기 어렵거나, 굳이 실시간으로 처리할 필요가 없는 거대한 작업들이 반드시 존재합니다.💡 실무에서 배치가 필요한 아찔한 순간들매일 밤 12시에 이루어지는 일일 정산: 수백만 건의 결제 데이터를 모아서 통계를 내고 정산 금액을 계산해야 합니다.1년 이상 접속하지 않은 휴면 회원 전환: 새벽 3시에 수천만 명의 유저 테이블을 뒤져서 휴면 상태로 업데이트하고 메일을 발송해야 합니다.월말 급여 명세서 이메일 대량 발송.. 2026. 2. 23.
Spring Boot 서비스 성능의 핵심: JVM GC 튜닝 가이드 1. 우리는 왜 GC 튜닝에 집착하는가?간헐적인 응답 지연의 범인, STWSpring Boot로 API 서버를 운영하다 보면 응답 시간이 갑자기 튀거나 시스템이 일시적으로 멈추는 현상을 경험합니다. 이러한 문제의 주범은 대부분 JVM의 Stop-the-World (STW, 애플리케이션 일시 정지) 현상입니다. 이 글에서는 실무에 바로 적용할 수 있는 GC 튜닝의 원리와 모니터링 핵심을 정리합니다.2. GC의 영리한 생존 전략: 세대별 가설과 객체의 일생JVM의 가비지 컬렉션은 모든 객체를 일일이 전수 조사하지 않습니다. 통계적으로 증명된 세대별 가설(Generational Hypothesis)을 바탕으로 메모리를 물리적으로 분할하여 관리합니다.1) 신규 객체의 단명 (Infant Mortality)대부분.. 2026. 2. 21.
[JPA Deep Dive] 02. 연관관계 매핑 🌟 관계형 데이터베이스의 연관관계 필요성JPA의 연관관계 매핑을 올바르게 이해하고 적용하면, 개발자는 관계형 데이터베이스의 복잡한 외래 키 관리에서 벗어나 순수한 객체지향적인 관점으로 비즈니스 도메인을 설계할 수 있습니다. 객체의 참조만으로 데이터베이스의 조인과 데이터 저장을 자연스럽게 처리할 수 있게 되며, 이는 코드의 유지보수성과 개발 생산성을 향상시키는 원동력이 됩니다.💣 실무에서 흔히 겪는 매핑 지옥과 성능 저하JPA의 연관관계 매핑은 잘못 사용했을 때 치러야 할 대가도 큽니다. 많은 개발자들이 공통적으로 겪는 치명적인 시행착오들을 짚어보겠습니다.😱 1. 무분별한 양방향 매핑이 부른 순환 참조와 메모리 폭발가장 흔하게 저지르는 실수는 데이터베이스의 조인처럼 객체도 양방향으로 마음껏 접근할 수.. 2026. 2. 15.
[JPA Deep Dive] 01. 영속성 컨텍스트의 원리 1. 서론: 우리는 정말 JPA를 알고 쓰는가?Java/Spring 기반의 백엔드 개발을 하다 보면 필연적으로 JPA(Java Persistence API)를 마주하게 됩니다. 단순히 @Entity를 붙이고 repository.save()를 호출하는 수준에서는 개발이 매우 쉽고 편리하게 느껴집니다.하지만 실무의 복잡한 비즈니스 로직 속으로 들어가면 상황이 달라집니다."분명히 객체의 필드값을 바꿨는데, 왜 DB에는 수정이 안 되어 있지?""방금 저장한 데이터인데, 왜 쿼리를 날리기 전까지 조회가 안 되지?""트랜잭션이 끝났는데 왜 LazyInitializationException이 발생할까?"이런 의문에는 항상 영속성 컨텍스트(Persistence Context)라는 개념이 자리 잡고 있습니다.2. 본론:.. 2026. 2. 15.
Spring vs SpringBoot 비교, 차이점 알아보기 Spring vs SpringBoot 비교해보기 이번 글에서는 Spring, SpringBoot의 차이점을 알아보겠습니다. Spring, SpringBoot 소개Spring FrameworkSpring은 자바 기반의 애플리케이션 개발을 위한 오픈소스 프레임워크 입니다. 주요 특징의존성 주입(DI), AOP, 트랜잭션 관리, 보안, 웹 MVC유연하고 확장 가능한 구조개발자가 직접 설정해야하는 부분이 많음 Spring BootSpringBoot는 Spring 프레임워크를 쉽게 사용할수 있도록 AutoConfigutration, 의존성 관리, 내장 Tomcat 서버 제공등을 포함한 프레임워크 입니다. 주요 특징설정없이 Spring 실행 가능내장 Tomcat 으로 웹서버 실행 가능운영 및 모니터링 기능 내장(S.. 2025. 6. 4.
Spring Boot CORS 사용 목적과 브라우저 보안 SOP Spring Boot CORS CORS(Cross Origin Resource Sharing) 는 프론트와 백엔드가 분리된 요즘 웹환경에서 필수로 이해해야 하는 개념입니다. CORS란?CORS는 다른 도메인간의 HTTP 요청을 허용할지 말지를 서버가 명시적으로 제어할수 있게 해주는 보안 정책입니다.프론트엔드: http://localhost:3000백엔드 : http://localhost:8080 위와 같은 설정에서 도메인/포트가 다르면 크로스 오리진 요청 으로 간주되며 브라우저는 보안상 기본적으로 이 요청을 차단합니다. 서버에서 CORS 허용을 명시해야만 요청이 성공합니다.이는 허용된 도메인만 접근 가능하게 하는 Access Control List 역할을 수행하는 것입니다.서버가 Access-Contro.. 2025. 6. 4.